Index: trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/ExtendedLabelingExtension.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/ExtendedLabelingExtension.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/ExtendedLabelingExtension.java	(revision 44534)
@@ -18,6 +18,7 @@
 import org.gvsig.labeling.gui.styling.editortools.PointLabelLowPrecedenceTool;
 import org.gvsig.labeling.gui.styling.editortools.PointLabelNormalPrecedenceTool;
 import org.gvsig.labeling.label.FeatureDependentLabeled;
+import org.gvsig.labeling.label.GeneralLabelingFactory;
 import org.gvsig.labeling.label.GeneralLabelingStrategy;
 import org.gvsig.labeling.label.OnSelectionLabeled;
 import org.gvsig.labeling.label.SmartTextSymbolLabelClass;
@@ -38,6 +39,7 @@
 import org.gvsig.labeling.placements.PolygonPlacementParallel;
 import org.gvsig.labeling.symbol.CharacterMarkerSymbol;
 import org.gvsig.labeling.symbol.SmartTextSymbol;
+import org.gvsig.symbology.SymbologyLocator;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.LabelingFactory;
 import org.gvsig.symbology.swing.SymbologySwingLocator;
 import org.gvsig.symbology.swing.SymbologySwingManager;
@@ -85,6 +87,8 @@
             // LabelingFactory.setDefaultLabelingStrategy(GeneralLabelingStrategy.class);
             SymbologySwingManager manager = SymbologySwingLocator.getSwingManager();
             manager.registerLabelClassEditor(new LabelClassPropertiesFactory());
+            
+            SymbologyLocator.getSymbologyManager().registerLabelingStrategy(new GeneralLabelingFactory());
 	}
 
 	private void registerIcons() {
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingStrategy.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingStrategy.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingStrategy.java	(revision 44534)
@@ -61,8 +61,7 @@
 import org.gvsig.tools.persistence.exception.PersistenceException;
 import org.gvsig.tools.task.Cancellable;
 
-public class GeneralLabelingStrategy implements ILabelingStrategy, Cloneable,
-		CartographicSupport {
+public class GeneralLabelingStrategy implements IGeneralLabelingStrategy {
 
 	private static final Logger logger = LoggerFactory
 			.getLogger(GeneralLabelingStrategy.class);
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingFactory.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingFactory.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/GeneralLabelingFactory.java	(revision 44534)
@@ -44,6 +44,7 @@
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingMethod;
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.IPlacementConstraints;
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.IZoomConstraints;
+import org.gvsig.tools.util.Factory;
 
 /**
  *
@@ -53,25 +54,37 @@
  * @author jaume dominguez faus - jaume.dominguez@iver.es Mar 6, 2008
  *
  */
-public class GeneralLabelingFactory {
+public class GeneralLabelingFactory implements Factory {
 
-	public static GeneralLabelingStrategy createStrategy(
-			FLayer layer,
-			ILabelingMethod method,
-			IPlacementConstraints placement_c,
-			IZoomConstraints zoom_c) {
+    public static GeneralLabelingStrategy createStrategy(
+            FLayer layer,
+            ILabelingMethod method,
+            IPlacementConstraints placement_c,
+            IZoomConstraints zoom_c) {
 
-		GeneralLabelingStrategy resp = new GeneralLabelingStrategy();
-		resp.setLayer(layer);
-		if (method != null) {
-			resp.setLabelingMethod(method);
-		}
-		if (placement_c != null) {
-			resp.setPlacementConstraints(placement_c);
-		}
-		if (zoom_c != null) {
-			resp.setZoomConstraints(zoom_c);
-		}
-		return resp;
-	}
+        GeneralLabelingStrategy resp = new GeneralLabelingStrategy();
+        resp.setLayer(layer);
+        if (method != null) {
+            resp.setLabelingMethod(method);
+        }
+        if (placement_c != null) {
+            resp.setPlacementConstraints(placement_c);
+        }
+        if (zoom_c != null) {
+            resp.setZoomConstraints(zoom_c);
+        }
+        return resp;
+    }
+
+    @Override
+    public String getName() {
+        return IGeneralLabelingStrategy.NAME;
+    }
+
+    @Override
+    public Object create(Object... parameters) {
+        GeneralLabelingStrategy resp = new GeneralLabelingStrategy();
+
+        return resp;
+    }
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/IGeneralLabelingStrategy.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/IGeneralLabelingStrategy.java	(revision 0)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.labeling.app/org.gvsig.labeling.app.mainplugin/src/main/java/org/gvsig/labeling/label/IGeneralLabelingStrategy.java	(revision 44534)
@@ -0,0 +1,23 @@
+/*
+ * 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.labeling.label;
+
+import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingStrategy;
+import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupport;
+
+/**
+ *
+ * @author osc
+ */
+public interface IGeneralLabelingStrategy extends ILabelingStrategy, Cloneable,
+        CartographicSupport {
+
+    String NAME = "GeneralLabelingStrategy";
+
+    public boolean isAllowingOverlap();
+
+    public void setAllowOverlapping(boolean allowOverlapping);
+}
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/SymbologyDefaultImplLibrary.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/SymbologyDefaultImplLibrary.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/SymbologyDefaultImplLibrary.java	(revision 44534)
@@ -35,6 +35,11 @@
 import org.gvsig.symbology.SymbologyLibrary;
 import org.gvsig.symbology.SymbologyLocator;
 import org.gvsig.symbology.SymbologyManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicLabelingStrategy;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DefaultDynamicVectorLegend;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicLabelingStrategyFactory;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicSymbol;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.driver.impl.PersistenceBasedLegendReader;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.driver.impl.PersistenceBasedLegendWriter;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractClassifiedVectorLegend;
@@ -46,6 +51,7 @@
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.VectorialIntervalLegend;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.VectorialUniqueValueLegend;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategy;
+import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategyFactory;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.DefaultLabelingMethod;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.LabelClass;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.LabelClassFactory;
@@ -197,7 +203,24 @@
          * Default impl of simple label style
          */
         caller.add(new SimpleLabelStyle.RegisterPersistence());
+        
+        /*
+        * Add impl of labeling strategy
+        */
+        DynamicLabelingStrategyFactory.selfRegister();
+        AttrInTableLabelingStrategyFactory.selfRegister();
+        
+        /*
+        * Add symbol
+        */
+        DefaultDynamicSymbol.selfRegister();
+        
+        /*
+        * Add legend
+        */
+        DefaultDynamicVectorLegend.selfRegister();
 
+        
         /*
          * Do register of all
          */
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/DefaultSymbologyManager.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/DefaultSymbologyManager.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/impl/DefaultSymbologyManager.java	(revision 44534)
@@ -108,6 +108,7 @@
 import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.ISimpleTextSymbol;
 import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.impl.SimpleTextSymbol;
 import org.gvsig.tools.util.Callable;
+import org.gvsig.tools.util.Factory;
 
 /**
  * Default {@link SymbologyManager} implementation.
@@ -117,12 +118,25 @@
 public class DefaultSymbologyManager implements SymbologyManager {
 
         private Map labelClassFactories = new HashMap();
+        private Map<String, Factory> labelStrategyFactories = new HashMap<>();
     private ILabelClassFactory defaultLabelClassFactory;
 
 	public IInterval createInterval(double min, double max) {
 		return new FInterval(min, max);
 	}
 
+        
+    @Override
+    public void registerLabelingStrategy(Factory factory) {
+        labelStrategyFactories.put(factory.getName(), factory);
+    }
+
+    @Override
+    public ILabelingStrategy createLabelingStrategy(String nameFactory, Object... parameters) {
+        Factory factory = labelStrategyFactories.get(nameFactory);
+        return (ILabelingStrategy) factory.create(parameters);
+    }
+
 	public static class RegisterSymbologyManager implements Callable {
 
 		public Object call() throws Exception {
@@ -133,19 +147,11 @@
 		}
 
 	}
-
-        public DynamicVectorLegend createDynamicVectorLegend() {
-            return new DefaultDynamicVectorLegend();
-        }
         
         public DynamicLabelingStrategy createDynamicLabelingStrategy() {
             return new DefaultDynamicLabelingStrategy();
         }
         
-        public DynamicSymbol createDynamicSymbol() {
-            return new DefaultDynamicSymbol();
-        }
-        
 	public IArrowDecoratorStyle createArrowDecoratorStyle() {
 		return new ArrowDecoratorStyle();
 	}
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/AttrInTableLabelingStrategyFactory.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/AttrInTableLabelingStrategyFactory.java	(revision 0)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/AttrInTableLabelingStrategyFactory.java	(revision 44534)
@@ -0,0 +1,32 @@
+/*
+ * 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.symbology.fmap.mapcontext.rendering.legend.styling;
+
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicLabelingStrategyFactory;
+import org.gvsig.tools.util.Factory;
+
+/**
+ *
+ * @author osc
+ */
+public class AttrInTableLabelingStrategyFactory implements Factory {
+
+    @Override
+    public String getName() {
+        return AttrInTableLabelingStrategy.NAME;
+    }
+
+    @Override
+    public Object create(Object... parameters) {
+        return new AttrInTableLabelingStrategy();
+    }
+    
+    public static void selfRegister() {
+        SymbologyLocator.getSymbologyManager().registerLabelingStrategy(new AttrInTableLabelingStrategyFactory());
+    }
+    
+}
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicLabelingStrategy.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicLabelingStrategy.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicLabelingStrategy.java	(revision 44534)
@@ -40,6 +40,7 @@
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingMethod;
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.IPlacementConstraints;
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.IZoomConstraints;
+import org.gvsig.symbology.SymbologyLocator;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategy;
 import static org.gvsig.symbology.fmap.mapcontext.rendering.legend.styling.AttrInTableLabelingStrategy.MIN_TEXT_SIZE;
 import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.CartographicSupportToolkit;
@@ -57,7 +58,7 @@
  *
  * @author osc
  */
-public class DefaultDynamicLabelingStrategy extends DynamicLabelingStrategy {
+public class DefaultDynamicLabelingStrategy implements DynamicLabelingStrategy {
 
     private Feature feature;
     public String LROTATION = "LROTATION";
@@ -85,6 +86,7 @@
     private static final Logger logger = LoggerFactory.getLogger(AttrInTableLabelingStrategy.class);
     private int referenceSystem;
     private String textField;
+    
 
     public SymbolTable getFeatureSymbolTable() {
         if (symbolTable == null) {
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicVectorLegend.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicVectorLegend.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicVectorLegend.java	(revision 44534)
@@ -21,6 +21,7 @@
 import org.gvsig.fmap.mapcontext.MapContextLocator;
 import org.gvsig.fmap.mapcontext.MapContextManager;
 import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
 import org.gvsig.symbology.SymbologyLocator;
 import org.gvsig.symbology.SymbologyManager;
 import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractVectorialLegend;
@@ -45,7 +46,6 @@
 
     public static final String DYNAMIC_VECTOR_PERSISTENCE_DEFINITION_NAME
             = "SingleSymbolLegend";
-    public static final String LEGEND_NAME = "DynamicSymbol";
     private ISymbol defaultSymbol;
     private int shapeType = Geometry.TYPES.SURFACE; // Por defecto, tipo polígono
 
@@ -90,8 +90,8 @@
     @Override
     public ISymbol getDefaultSymbol() {
         if (defaultSymbol == null) {
-            SymbologyManager symbolManager = SymbologyLocator.getSymbologyManager();
-            defaultSymbol = symbolManager.createDynamicSymbol();
+            SymbolManager symbolManager = MapContextLocator.getSymbolManager();
+            defaultSymbol = symbolManager.createSymbol(DynamicSymbol.NAME);
         }
         return defaultSymbol;
     }
@@ -257,18 +257,11 @@
 
     }
 
-    public static class RegisterLegend implements Callable {
-
-        @Override
-        public Object call() throws Exception {
+    public static void selfRegister() {
             MapContextManager manager = MapContextLocator.getMapContextManager();
 
-            manager.registerLegend(LEGEND_NAME,
-                    DynamicVectorLegend.class);
-
-            return Boolean.TRUE;
-        }
-
+            manager.registerLegend(NAME,
+                    DefaultDynamicVectorLegend.class);
     }
 
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategyFactory.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategyFactory.java	(revision 0)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategyFactory.java	(revision 44534)
@@ -0,0 +1,33 @@
+/*
+ * 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.symbology.fmap.mapcontext.rendering.dynamiclegend;
+
+import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.tools.util.Factory;
+
+/**
+ *
+ * @author osc
+ */
+public class DynamicLabelingStrategyFactory implements Factory {
+
+    @Override
+    public String getName() {
+        return DynamicLabelingStrategy.NAME;
+    }
+
+    @Override
+    public Object create(Object... parameters) {
+        return new DefaultDynamicLabelingStrategy();
+    }
+    
+   public static void selfRegister() {
+        SymbologyLocator.getSymbologyManager().registerLabelingStrategy(new DynamicLabelingStrategyFactory());
+    }
+    
+}
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicSymbol.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicSymbol.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DefaultDynamicSymbol.java	(revision 44534)
@@ -32,6 +32,7 @@
 import org.gvsig.fmap.geom.primitive.Envelope;
 import org.gvsig.fmap.geom.primitive.Point;
 import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
 import org.gvsig.fmap.mapcontext.ViewPort;
 import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
 import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolDrawingException;
@@ -429,6 +430,10 @@
         this.listRequiredAttributeNames = listRequiredAttributeNames;
 
     }
+    
+    public static void selfRegister() {
+        MapContextLocator.getSymbolManager().registerSymbol(NAME, DefaultDynamicSymbol.class);
+    }
 
 
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/SymbologyManager.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/SymbologyManager.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/SymbologyManager.java	(revision 44534)
@@ -52,8 +52,7 @@
 import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.style.ISimpleLineStyle;
 import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.ISimpleTextSymbol;
 import org.gvsig.fmap.mapcontext.rendering.legend.driver.ILegendWriter;
-import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicSymbol;
-import org.gvsig.symbology.fmap.mapcontext.rendering.dynamiclegend.DynamicVectorLegend;
+import org.gvsig.tools.util.Factory;
 
 /**
  * Basic symbology manager.
@@ -70,10 +69,6 @@
      * @return a new interval
      */
     
-    DynamicVectorLegend createDynamicVectorLegend();
-    
-    DynamicSymbol createDynamicSymbol();
-    
     IInterval createInterval(double min, double max);
 
     IArrowDecoratorStyle createArrowDecoratorStyle();
@@ -141,4 +136,9 @@
      * @return
      */
     ILegendWriter getDefaultLegendWriter();
+    
+    public void registerLabelingStrategy(Factory factory);
+    
+    public ILabelingStrategy createLabelingStrategy(String nameFactory, Object... parameters);
+    
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategy.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategy.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicLabelingStrategy.java	(revision 44534)
@@ -11,87 +11,90 @@
 import org.gvsig.fmap.dal.feature.Feature;
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingStrategy;
 import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupport;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
 
 /**
  *
  * @author osc
  */
-public abstract class DynamicLabelingStrategy implements ILabelingStrategy, CartographicSupport {
+public interface DynamicLabelingStrategy extends ILabelingStrategy, CartographicSupport {
 
-    public abstract void setFeature(Feature f);
+    String NAME = "DynamicLabelingStrategy";
 
-    public abstract Expression getRotation();
+    public void setFeature(Feature f);
 
-    public abstract int getComputedRotation();
+    public Expression getRotation();
 
-    public abstract Expression getUnitExp();
+    public int getComputedRotation();
 
-    public abstract int getComputedUnit();
+    public Expression getUnitExp();
 
-    public abstract Expression getText();
+    public int getComputedUnit();
 
-    public abstract String getComputedText();
+    public Expression getText();
 
-    public abstract Expression getHeight();
+    public String getComputedText();
 
-    public abstract int getComputedHeight();
+    public Expression getHeight();
 
-    public abstract Expression getColor();
+    public int getComputedHeight();
 
-    public abstract Color getComputedColor();
+    public Expression getColor();
 
-    public abstract Expression getFixedSize();
+    public Color getComputedColor();
 
-    public abstract double getComputedFixedSize();
+    public Expression getFixedSize();
 
-    public abstract Expression getFontStyle();
+    public double getComputedFixedSize();
 
-    public abstract int getComputedFontStyle();
+    public Expression getFontStyle();
+
+    public int getComputedFontStyle();
     
-    public abstract void setFontStyle(int style);
+    public void setFontStyle(int style);
     
-    public abstract void setFontStyle(Expression expression);
+    public void setFontStyle(Expression expression);
 
-    public abstract void setText(Expression expression);
+    public void setText(Expression expression);
 
-    public abstract void setRotation(Expression expression);
+    public void setRotation(Expression expression);
 
-    public abstract void setHeight(Expression expression);
+    public void setHeight(Expression expression);
 
-    public abstract void setColor(Expression expression);
+    public void setColor(Expression expression);
 
-    public abstract void setUsesFixedSize(boolean b);
+    public void setUsesFixedSize(boolean b);
 
-    public abstract boolean usesFixedSize();
+    public boolean usesFixedSize();
 
-    public abstract void setFixedSize(double fixedSize);
+    public void setFixedSize(double fixedSize);
 
-    public abstract void setUsesFixedColor(boolean b);
+    public void setUsesFixedColor(boolean b);
 
-    public abstract boolean usesFixedColor();
+    public boolean usesFixedColor();
 
-    public abstract Expression getFixedColor();
+    public Expression getFixedColor();
 
-    public abstract Color getComputedFixedColor();
+    public Color getComputedFixedColor();
 
-    public abstract void setFixedColor(Color fixedColor);
+    public void setFixedColor(Color fixedColor);
 
-    public abstract Expression getColorFont();
+    public Expression getColorFont();
 
-    public abstract Color getComputedColorFont();
+    public Color getComputedColorFont();
 
-    public abstract void setColorFont(Color colorFont);
+    public void setColorFont(Color colorFont);
 
-    public abstract Expression getFont();
+    public Expression getFont();
 
-    public abstract Font getComputedFont();
+    public Font getComputedFont();
 
-    public abstract void setFont(Font selFont);
+    public void setFont(Font selFont);
     
-    public abstract void setFont(Expression expression);
+    public void setFont(Expression expression);
     
-    public abstract void setReferenceSystem(Expression expression);
+    public void setReferenceSystem(Expression expression);
     
-    public abstract void setUnit(Expression expression);
+    public void setUnit(Expression expression);
 
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicVectorLegend.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicVectorLegend.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicVectorLegend.java	(revision 44534)
@@ -12,5 +12,6 @@
  * @author osc
  */
 public interface DynamicVectorLegend extends IVectorLegend {
+    String NAME = "DynamicVectorLegend";
     
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicSymbol.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicSymbol.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/dynamiclegend/DynamicSymbol.java	(revision 44534)
@@ -17,6 +17,8 @@
  * @author osc
  */
 public interface DynamicSymbol extends ISymbol {
+    
+    String NAME = "DynamicSymbol";
 
     public List<String> getRequiredFeatureAttributeNames(FeatureStore featureStore) throws DataException;
 //    public Expression getColor();
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/IAttrInTableLabelingStrategy.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/IAttrInTableLabelingStrategy.java	(revision 44533)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.api/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/styling/IAttrInTableLabelingStrategy.java	(revision 44534)
@@ -29,52 +29,55 @@
 import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingStrategy;
 import org.gvsig.fmap.mapcontext.rendering.symbols.CartographicSupport;
 
-public interface IAttrInTableLabelingStrategy extends ILabelingStrategy, CartographicSupport{
+public interface IAttrInTableLabelingStrategy extends ILabelingStrategy, CartographicSupport {
 
-	public abstract String getRotationField();
+    String NAME = "AttrInTableLabelingStrategy";
 
-	public abstract String getTextField();
+    public abstract String getRotationField();
 
-	public abstract String getHeightField();
+    public abstract String getTextField();
 
-	public abstract String getColorField();
+    public abstract String getHeightField();
 
-	public abstract void setTextField(String textFieldName);
+    public abstract String getColorField();
 
-	public abstract void setRotationField(String rotationFieldName);
+    public abstract void setTextField(String textFieldName);
 
-	/**
-	 * Sets the field that contains the size of the text. The size is computed
-	 * in meters. To use any other unit, call setUnit(int) with the scale factor from meters
-	 * (for centimeters, call <b>setUnitFactor(0.01))</b>.
-	 * @param heightFieldName
-	 */
-	public abstract void setHeightField(String heightFieldName);
+    public abstract void setRotationField(String rotationFieldName);
 
-	public abstract void setColorField(String colorFieldName);
+    /**
+     * Sets the field that contains the size of the text. The size is computed
+     * in meters. To use any other unit, call setUnit(int) with the scale factor
+     * from meters (for centimeters, call <b>setUnitFactor(0.01))</b>.
+     *
+     * @param heightFieldName
+     */
+    public abstract void setHeightField(String heightFieldName);
 
-	public abstract void setUsesFixedSize(boolean b);
+    public abstract void setColorField(String colorFieldName);
 
-	public abstract boolean usesFixedSize();
+    public abstract void setUsesFixedSize(boolean b);
 
-	public abstract double getFixedSize();
+    public abstract boolean usesFixedSize();
 
-	public abstract void setFixedSize(double fixedSize);
+    public abstract double getFixedSize();
 
-	public abstract void setUsesFixedColor(boolean b);
+    public abstract void setFixedSize(double fixedSize);
 
-	public abstract boolean usesFixedColor();
+    public abstract void setUsesFixedColor(boolean b);
 
-	public abstract Color getFixedColor();
+    public abstract boolean usesFixedColor();
 
-	public abstract void setFixedColor(Color fixedColor);
+    public abstract Color getFixedColor();
 
-	public abstract Color getColorFont();
+    public abstract void setFixedColor(Color fixedColor);
 
-	public abstract void setColorFont(Color colorFont);
+    public abstract Color getColorFont();
 
-	public abstract Font getFont();
+    public abstract void setColorFont(Color colorFont);
 
-	public abstract void setFont(Font selFont);
+    public abstract Font getFont();
 
-}
\ No newline at end of file
+    public abstract void setFont(Font selFont);
+
+}
