Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/pom.xml	(revision 5837)
@@ -0,0 +1,17 @@
+<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.legend.urbanhorizontalsignage</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.app</artifactId>
+  <packaging>pom</packaging>
+  <name>org.gvsig.legend.urbanhorizontalsignage.app</name>
+
+  <modules>
+    <module>org.gvsig.legend.urbanhorizontalsignage.app.mainplugin</module>
+  </modules>
+
+</project>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/buildNumber.properties
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/buildNumber.properties	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/buildNumber.properties	(revision 5837)
@@ -0,0 +1,2 @@
+#Fri Nov 26 01:21:53 CET 2021
+buildNumber=105
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 5837)
@@ -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. -->
+<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.legend.urbanhorizontalsignage.lib.api</include>
+        <include>org.gvsig:org.gvsig.legend.urbanhorizontalsignage.lib.impl</include>
+        <include>org.gvsig:org.gvsig.legend.urbanhorizontalsignage.swing.api</include>
+        <include>org.gvsig:org.gvsig.legend.urbanhorizontalsignage.swing.impl</include>
+      </includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanel.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanel.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanel.java	(revision 5837)
@@ -0,0 +1,93 @@
+/*
+ * 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.legend.urbanhorizontalsignage.app;
+
+import javax.swing.JComponent;
+import org.gvsig.fmap.dal.DataTypes;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.dal.swing.DataSwingManager;
+import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageConfigPanel;
+import org.gvsig.tools.swing.api.Component;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+
+/**
+ *
+ * @author fdiaz
+ */
+public class UrbanHorizontalSignageConfigForCopyPanel extends UrbanHorizontalSignageConfigForCopyPanelView implements  UrbanHorizontalSignageConfigPanel, Component {
+
+    private AttributeDescriptorPickerController targetColorFieldController;
+    private AttributeDescriptorPickerController targetLengthFieldController;
+    private AttributeDescriptorPickerController targetAreaFieldController;
+
+    public UrbanHorizontalSignageConfigForCopyPanel() {
+        
+        initComponents();
+        
+    }
+    
+    
+
+    private void initComponents(){
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
+        
+        targetColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetColorFields, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        targetColorFieldController.setEditable(true);
+        
+        targetLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetLengthFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        targetLengthFieldController.setEditable(true);
+        
+        targetAreaFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetAreaFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        targetAreaFieldController.setEditable(true);
+        
+        translateAll();
+    }
+    
+    private void translateAll() {
+        ToolsSwingManager toolsSwingmanager = ToolsSwingLocator.getToolsSwingManager();
+        toolsSwingmanager.translate(this.lblTargetColorField);
+        toolsSwingmanager.translate(this.lblTargetLengthField);
+        toolsSwingmanager.translate(this.lblTargetAreaField);
+    }
+
+    @Override
+    public void fetch(UrbanHorizontalSignageConfig config) {
+        config.setTargetColorFieldName((String) this.targetColorFieldController.getName());
+        config.setTargetLenghtFieldName((String) this.targetLengthFieldController.getName());
+        config.setTargetAreaFieldName((String) this.targetAreaFieldController.getName());
+    }
+
+    @Override
+    public void put(UrbanHorizontalSignageConfig config) {
+        this.targetColorFieldController.set(config.getTargetColorFieldName());
+        this.targetLengthFieldController.set(config.getTargetLenghtFieldName());
+        this.targetAreaFieldController.set(config.getTargetAreaFieldName());
+    }
+
+    @Override
+    public void setFeatureType(FeatureType type) {
+        this.targetColorFieldController.setFeatureType(type);
+        this.targetAreaFieldController.setFeatureType(type);
+        this.targetLengthFieldController.setFeatureType(type);
+    }
+
+    @Override
+    public JComponent asJComponent() {
+        return this;
+    }
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageExtension.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageExtension.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageExtension.java	(revision 5837)
@@ -0,0 +1,364 @@
+package org.gvsig.legend.urbanhorizontalsignage.app;
+
+import java.awt.event.ActionEvent;
+import java.util.function.Predicate;
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+import javax.swing.SwingConstants;
+import javax.swing.event.TreeModelListener;
+import javax.swing.tree.TreePath;
+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.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataManager;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.feature.FeatureSelection;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontrol.CompoundStoresTreeModel;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageManager;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.ConvertLinesToPolygonsPanel;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageSwingLocator;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageSwingManager;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dispose.DisposeUtils;
+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.tools.util.LabeledValue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("UseSpecificCatch")
+public class UrbanHorizontalSignageExtension extends Extension {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(UrbanHorizontalSignageExtension.class);
+
+    @Override
+    public void initialize() {
+        IconThemeHelper.registerIcon("legend", "legend-overview-vectorial-urbanhorizontalsignage", this);
+        IconThemeHelper.registerIcon("legend", "legend-overview-vectorial-picturemarkersymboltable", this);
+        IconThemeHelper.registerIcon("action", "layer-modify-clipboard-copy-as-polygons", this);
+
+    }
+
+    @Override
+    public void execute(String actionCommand) {
+        ApplicationManager application = ApplicationLocator.getManager();
+
+        if ("layer-modify-clipboard-copy-as-polygons".equalsIgnoreCase(actionCommand) ) {
+            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if (viewdoc == null) {
+                return;
+            }
+            MapContext mapContext = viewdoc.getMapContext();
+            FLyrVect layer = mapContext.getLayers().getFirstActiveVectorLayer();
+            if (layer == null) {
+                return;
+            }
+            copySelecctionAsPolygons(layer);
+            
+        } else if ("tools-urbanSignage-linesToPolygons".equalsIgnoreCase(actionCommand) ) {
+            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if (viewdoc == null) {
+                return;
+            }
+            MapContext mapContext = viewdoc.getMapContext();
+            FLyrVect layer = mapContext.getLayers().getFirstActiveVectorLayer();
+            if (layer == null) {
+                return;
+            }
+            if( !(layer.getLegend() instanceof UrbanHorizontalSignageLegend) ) {
+                //FIXME mensaje al usuario?
+                return;
+            }
+            UrbanHorizontalSignageLegend legend = (UrbanHorizontalSignageLegend) layer.getLegend();
+            UrbanHorizontalSignageConfig config = legend.getConfig(); // FIXME: clone
+            FeatureSet lines;
+            try {
+                lines = layer.getFeatureStore().getFeatureSelection();
+            } catch(Exception ex) {
+                //FIXME mensaje al usuario?
+                return;
+            }
+            convertLinesAsPolygons(config, lines);
+        }
+        
+    }
+    
+    private void copySelecctionAsPolygons(FLyrVect sourceLayer) {
+//        UrbanHorizontalSignageManager uhsManager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+
+        UrbanHorizontalSignageConfigForCopyPanel panel = new UrbanHorizontalSignageConfigForCopyPanel();
+        panel.setFeatureType(sourceLayer.getFeatureStore().getDefaultFeatureTypeQuietly());
+        UrbanHorizontalSignageLegend legend = (UrbanHorizontalSignageLegend) sourceLayer.getLegend();
+        panel.put(legend.getConfig());
+
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+
+        Dialog theDialog = winManager.createDialog(
+                panel.asJComponent(),
+                i18n.getTranslation("_Copy_as_polygons"),
+                i18n.getTranslation("_Copy_as_polygons"),
+                WindowManager_v2.BUTTONS_OK_CANCEL
+        );
+        theDialog.setAutoclose(false);
+
+        theDialog.setButtonLabel(
+                WindowManager_v2.BUTTON_OK,
+                i18n.getTranslation("_Accept")
+        );
+        theDialog.setButtonLabel(
+                WindowManager_v2.BUTTON_CANCEL,
+                i18n.getTranslation("_Cancel")
+        );
+
+        theDialog.addActionListener((ActionEvent e) -> {
+            switch (theDialog.getAction()) {
+                case WindowManager_v2.BUTTON_OK:
+                    Thread task = new Thread(() -> {
+                        panel.fetch(legend.getConfig());
+                        performCopyAsPolygons(sourceLayer);
+                        theDialog.asJComponent().setVisible(false);
+                    }, "UHS_CopyAsPolygons");
+                    task.start();
+                    break;
+                case WindowManager_v2.BUTTON_CANCEL:
+                    theDialog.asJComponent().setVisible(false);
+                    break;
+            }
+        });
+
+        theDialog.show(WindowManager.MODE.DIALOG);
+    }
+    
+    private void performCopyAsPolygons(FLyrVect sourceLayer) {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        UrbanHorizontalSignageManager uhsManager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        ApplicationManager application = ApplicationLocator.getManager();
+        DataManager dataManager = DALLocator.getDataManager();
+
+        UrbanHorizontalSignageLegend legend = (UrbanHorizontalSignageLegend) sourceLayer.getLegend();
+        FeatureStore tempTargetStore = null;
+        FeatureSet tempFeatureSet = null;
+        try {
+
+            FeatureSet sourceFeatureSet = sourceLayer.getFeatureStore().getFeatureSelection();
+            tempTargetStore = uhsManager.createTemporaryPolygonsFromLines(legend.getConfig(), sourceFeatureSet, null);
+            tempFeatureSet = tempTargetStore.getFeatureSet();
+
+            int n = application.confirmDialog(
+                    "_Number_of_geometries_to_be_copied_to_the_clipboard" + " " + tempFeatureSet.getSize() + "\n" + "_Do_you_want_to_continue",
+                    i18n.getTranslation("_Copy_selected_features_as_polygons_to_clipboard"),
+                    JOptionPane.YES_NO_OPTION,
+                    JOptionPane.QUESTION_MESSAGE);
+            if (n == JOptionPane.YES_OPTION) {
+                dataManager.putFeaturesInClipboard(tempFeatureSet);
+            }
+
+        } catch (Exception e) {
+            LOGGER.warn("Can't get the selection as JSON.", e);
+        } finally {
+            DisposeUtils.disposeQuietly(tempTargetStore);
+            DisposeUtils.disposeQuietly(tempFeatureSet);
+        }
+
+    }
+    
+    private void convertLinesAsPolygons(UrbanHorizontalSignageConfig config, FeatureSet source) {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+        ApplicationManager application = ApplicationLocator.getManager();
+        UrbanHorizontalSignageManager uhsManager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        UrbanHorizontalSignageSwingManager uhsSwingManager = UrbanHorizontalSignageSwingLocator.getUrbanHorizontalSignageSwingManager();
+
+        
+        final ConvertLinesToPolygonsPanel panel = uhsSwingManager.createConvertLinesToPolygonsPanel();       
+        panel.setSource(source);
+        panel.setStores(new StoresWithLayerTypeIcon());
+        panel.put(config);
+
+        Dialog theDialog = winManager.createDialog(
+                panel.asJComponent(),
+                i18n.getTranslation("_Convert_lines_to_polygons"),
+                i18n.getTranslation("_Convert_Urban_signage_lines_to_polygons"),
+                WindowManager_v2.BUTTONS_OK_CANCEL
+        );
+        theDialog.setButtonLabel(WindowManager_v2.BUTTON_OK, i18n.getTranslation("_Convert"));
+        theDialog.setButtonLabel(WindowManager_v2.BUTTON_CANCEL, i18n.getTranslation("_Close"));
+        theDialog.setAutoclose(false);
+
+        theDialog.addActionListener((ActionEvent e) -> {
+            switch (theDialog.getAction()) {
+                case WindowManager_v2.BUTTON_OK:
+                    Thread task = new Thread(() -> {
+                        try {
+                            theDialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
+                            panel.setTaskStatusVisible(true);
+                            uhsManager.convertLinesToPolygons(
+                                    panel.getConfig(), 
+                                    panel.getSource(), 
+                                    panel.getTargetStore(), 
+                                    panel.getDeleteSourceAtFinish(),
+                                    panel.getTaskStatus()
+                            );
+                            theDialog.asJComponent().setVisible(false);
+                        } catch(Exception ex) {
+                            LOGGER.warn("Can't convert lines to polygons", ex);
+                        }
+                    }, "UHS_ConvertLinesToPolygons");
+                    task.start();
+                    break;
+                case WindowManager_v2.BUTTON_CANCEL:
+                    theDialog.asJComponent().setVisible(false);
+                    break;
+            }
+        });
+
+        theDialog.show(WindowManager.MODE.WINDOW);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        // it's enabled if there is exactly one vector layer in the active view
+        // and it has a selection
+
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        if (viewdoc == null) {
+            return false;
+        }
+        MapContext mapContext = viewdoc.getMapContext();
+        FLyrVect layer = mapContext.getLayers().getFirstActiveVectorLayer();
+        if (layer == null) {
+            return false;
+        }
+        if (!layer.isAvailable()) {
+            // This can happen when opening a persisted project
+            // and there is a "slow" layer (GeoDB)
+            return false;
+        }
+        try {
+            FeatureStore store = layer.getFeatureStore();
+            FeatureSelection selection = store.getFeatureSelection();
+            if (selection.isEmpty()) {
+                return false;
+            }
+            return (layer.getLegend() instanceof UrbanHorizontalSignageLegend);
+//            return !selection.isEmpty();
+        } catch (Exception ex) {
+            LOGGER.warn("Can't get selection from layer '" + layer.getName() + "'.", ex);
+            return false;
+        }
+    }
+
+    @Override
+    public boolean isVisible() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        return application.getActiveDocument(ViewManager.TYPENAME) != null;
+    }
+    
+    private static class StoresWithLayerTypeIcon implements CompoundStoresTreeModel {
+
+        private final CompoundStoresTreeModel delegated;
+
+        public StoresWithLayerTypeIcon() {
+            ApplicationManager application = ApplicationLocator.getManager();
+            this.delegated = (CompoundStoresTreeModel) application.createProjectStoresTreeModel();
+        }
+        
+        @Override
+        public void setFilter(Predicate<DataStore> filter) {
+            this.delegated.setFilter(filter);
+        }
+
+        @Override
+        public void addLayers(FLayers layers) {
+            this.delegated.addLayers(layers);
+        }
+
+        @Override
+        public Icon getIcon(Object item) {
+            Icon icon = this.delegated.getIcon(item);
+            if( item instanceof LabeledValue ) {
+                item = ((LabeledValue)item).getValue();
+            }
+            if (item instanceof FeatureStore) {
+                try {
+                    FeatureStore store = (FeatureStore) item;
+                    FeatureType ft = store.getDefaultFeatureTypeQuietly();
+                    int type = ft.getDefaultGeometryAttribute().getGeomType().getType();
+                    Icon icon2 = MapContextLocator.getMapContextManager().getIcon(
+                            type, 
+                            !store.getFeatureSelection().isEmpty()
+                    );
+                    if( icon2!=null ) {
+                        icon = ToolsSwingLocator.getToolsSwingManager().createCompoundIcon(
+                               SwingConstants.HORIZONTAL, 2, icon, icon2
+                        );
+                    }
+                } catch(Exception ex) {
+                    LOGGER.trace("Can't get geometry type from store.", ex);
+                }
+            }
+            return icon;
+        }
+
+        @Override
+        public Object getRoot() {
+            return this.delegated.getRoot();
+        }
+
+        @Override
+        public Object getChild(Object parent, int index) {
+            return this.delegated.getChild(parent, index);
+        }
+
+        @Override
+        public int getChildCount(Object parent) {
+            return this.delegated.getChildCount(parent);
+        }
+
+        @Override
+        public boolean isLeaf(Object node) {
+            return this.delegated.isLeaf(node);
+        }
+
+        @Override
+        public void valueForPathChanged(TreePath path, Object newValue) {
+            this.delegated.valueForPathChanged(path, newValue);
+        }
+
+        @Override
+        public int getIndexOfChild(Object parent, Object child) {
+            return this.delegated.getIndexOfChild(parent, child);
+        }
+
+        @Override
+        public void addTreeModelListener(TreeModelListener l) {
+            this.delegated.addTreeModelListener(l);
+        }
+
+        @Override
+        public void removeTreeModelListener(TreeModelListener l) {
+            this.delegated.removeTreeModelListener(l);
+        }
+        
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListener.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListener.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListener.java	(revision 5837)
@@ -0,0 +1,14 @@
+package org.gvsig.legend.urbanhorizontalsignage.app.rotate;
+
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+public interface RotatePointListener extends ToolListener {
+
+    public void rotate(Feature feature, String fieldName, double angle) throws BehaviorException;
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListenerImpl.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListenerImpl.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointListenerImpl.java	(revision 5837)
@@ -0,0 +1,67 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 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 2
+ * 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.legend.urbanhorizontalsignage.app.rotate;
+
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.EditableFeature;
+import org.gvsig.fmap.dal.feature.Feature;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Listeners.AbstractToolListener;
+
+/**
+ * @author gvSIG Team
+ *
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class RotatePointListenerImpl 
+        extends AbstractToolListener
+        implements RotatePointListener  
+    {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(RotatePointListenerImpl.class);
+
+    public static final String ROTATE_TOOL_NAME = "RotatePoint";
+    
+    
+    public RotatePointListenerImpl() {
+        super();
+    }
+
+    @Override
+    public void rotate(Feature feature, String fieldName, double angle) throws BehaviorException {
+        try {
+            EditableFeature ef = feature.getEditable();
+            ef.set(fieldName, angle);
+            feature.getStore().update(ef);
+        } catch (DataException ex) {
+            LOGGER.debug("Can't save rotation to feature", ex);
+                    
+        }
+    }
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointExtension.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointExtension.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointExtension.java	(revision 5837)
@@ -0,0 +1,101 @@
+package org.gvsig.legend.urbanhorizontalsignage.app.rotate;
+
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.app.project.documents.view.gui.IView;
+import org.gvsig.fmap.dal.feature.FeatureSelection;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontrol.MapControl;
+import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("UseSpecificCatch")
+public class RotatePointExtension extends Extension {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(RotatePointExtension.class);
+
+    @Override
+    public void initialize() {
+//        IconThemeHelper.registerIcon("legend", "legend-overview-vectorial-urbanhorizontalsignage", this);
+//        IconThemeHelper.registerIcon("legend", "legend-overview-vectorial-picturemarkersymboltable", this);
+//        IconThemeHelper.registerIcon("action", "layer-modify-clipboard-copy-as-polygons", this);
+
+    }
+
+    @Override
+    public void execute(String actionCommand) {
+
+        if (actionCommand.compareToIgnoreCase("layer-modify-rotatepoint") != 0) {
+            return;
+        }
+
+        ApplicationManager application = ApplicationLocator.getManager();
+        IView view = (IView) application.getActiveComponent(ViewDocument.class);
+        if (view == null) {
+            return;
+        }
+        MapControl mapControl = view.getMapControl();
+        if (mapControl == null) {
+            return;
+        }
+        MapContext mapContext = mapControl.getMapContext();
+        if (mapContext == null) {
+            return;
+        }
+        FLyrVect layer = mapContext.getLayers().getFirstActiveVectorLayer();
+        if (layer == null) {
+            return;
+        }
+        if (!mapControl.hasTool(RotatePointListenerImpl.ROTATE_TOOL_NAME)) {
+            RotatePointListenerImpl listener = new RotatePointListenerImpl();
+            Behavior behavior = new RotatePointBehavior(listener);
+            mapControl.addBehavior(RotatePointListenerImpl.ROTATE_TOOL_NAME, behavior);
+        }
+        mapControl.setTool(RotatePointListenerImpl.ROTATE_TOOL_NAME);
+    }
+    
+       
+    @Override
+    public boolean isEnabled() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        if (viewdoc == null) {
+            return false;
+        }
+        MapContext mapContext = viewdoc.getMapContext();
+        FLyrVect layer = mapContext.getLayers().getFirstActiveVectorLayer();
+        if (layer == null) {
+            return false;
+        }
+        if (!layer.isAvailable()) {
+            // This can happen when opening a persisted project
+            // and there is a "slow" layer (GeoDB)
+            return false;
+        }
+        try {
+            FeatureStore store = layer.getFeatureStore();
+            FeatureSelection selection = store.getFeatureSelection();
+            if (selection.isEmpty()) {
+                return false;
+            }
+            return (layer.getLegend() instanceof PictureMarkerSymbolTableLegend);
+        } catch (Exception ex) {
+            LOGGER.warn("Can't get selection from layer '" + layer.getName() + "'.", ex);
+            return false;
+        }
+    }
+
+    @Override
+    public boolean isVisible() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        return application.getActiveDocument(ViewManager.TYPENAME) != null;
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointBehavior.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointBehavior.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/rotate/RotatePointBehavior.java	(revision 5837)
@@ -0,0 +1,169 @@
+package org.gvsig.legend.urbanhorizontalsignage.app.rotate;
+
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import javax.swing.SwingUtilities;
+import org.gvsig.euclidean.EuclideanLine2D;
+import org.gvsig.euclidean.EuclideanManager;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureSelection;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontrol.MapControl;
+import org.gvsig.fmap.mapcontrol.MapControlDrawer;
+import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
+import org.gvsig.tools.util.ToolsUtilLocator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class RotatePointBehavior extends Behavior {
+
+    protected static final Logger LOGGER = LoggerFactory.getLogger(RotatePointBehavior.class);
+
+    protected RotatePointListener listener;
+
+    private double angle;
+    private Point2D currentPoint;
+    private Point2D centerPoint;
+    private IMarkerSymbol symbol;
+    private Feature feature;
+    private String layerName;
+    private PictureMarkerSymbolTableLegend legend;
+
+    public RotatePointBehavior(RotatePointListener listener) {
+        this.listener = listener;
+    }
+
+    @Override
+    public void setMapControl(MapControl mc) {
+        super.setMapControl(mc);
+        updateCurrentValues();
+    }
+
+    @Override
+    public void paintComponent(MapControlDrawer drawer) {
+        if (this.feature == null || this.symbol == null || this.currentPoint==null) {
+            return;
+        }
+        Geometry geom = this.feature.getDefaultGeometry();
+        if (geom == null) {
+            return;
+        }
+        this.symbol.setRotation(angle);
+        drawer.draw(geom, this.symbol);
+
+        EuclideanManager euclideanManager = ToolsUtilLocator.getEuclideanManager();
+        double d = distance(this.centerPoint, this.currentPoint);
+        drawer.drawLine(
+                (int) this.centerPoint.getX(), (int) this.centerPoint.getY(),
+                (int) this.currentPoint.getX(), (int) this.currentPoint.getY()
+        );
+        drawer.drawLine(
+                (int) this.centerPoint.getX(), (int) this.centerPoint.getY(),
+                (int) (this.centerPoint.getX()+d), (int) this.centerPoint.getY()
+        );
+    }
+
+    private void updateCurrentValues() {
+        this.angle = 0;
+        this.centerPoint = null;
+        this.currentPoint = null;
+
+        this.feature = null;
+        this.layerName = null;
+        this.legend = null;
+        this.symbol = null;
+        try {
+            FLayer[] layers = this.getMapControl().getMapContext().getLayers().getActives();
+            if (layers == null || layers.length != 1) {
+                return;
+            }
+            FLyrVect layer = (FLyrVect) layers[0];
+            FeatureSelection selection = layer.getFeatureStore().getFeatureSelection();
+            feature = selection.first();
+            if (symbol == null && feature != null) {
+                this.legend = (PictureMarkerSymbolTableLegend) layer.getLegend();
+                symbol = (IMarkerSymbol) legend.getSymbolByFeature(feature);
+            }
+            Point point = (Point) feature.getDefaultGeometry();
+            ViewPort vp = this.getMapControl().getViewPort();
+            this.centerPoint = vp.fromMapPoint(point.getX(), point.getY());
+        } catch (Exception ex) {
+            this.angle = 0;
+            this.currentPoint = null;
+
+            this.centerPoint = null;
+            this.legend = null;
+            this.feature = null;
+            this.layerName = null;
+            this.symbol = null;
+        }
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent mouseEvent) throws BehaviorException {
+
+        if (((mouseEvent.getModifiersEx() & (InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK
+                | InputEvent.ALT_DOWN_MASK | InputEvent.ALT_GRAPH_DOWN_MASK | InputEvent.META_DOWN_MASK)) != 0)
+                || SwingUtilities.isLeftMouseButton(mouseEvent)) {
+            return;
+        }
+        try {
+            if (mouseEvent.getClickCount() == 1) {
+                listener.rotate(feature, legend.getRotationFieldName(), angle);
+                return;
+            }
+            this.currentPoint = mouseEvent.getPoint();
+
+            EuclideanManager euclideanManager = ToolsUtilLocator.getEuclideanManager();
+            double d = distance(this.centerPoint, this.currentPoint);
+            EuclideanLine2D line = euclideanManager.createLine2D(
+                    this.centerPoint.getX(), this.centerPoint.getY(),
+                    this.currentPoint.getX(), this.currentPoint.getY()
+            );
+//            EuclideanLine2D line0 = euclideanManager.createLine2D(
+//                    this.centerPoint.getX(), this.centerPoint.getY(),
+//                    this.centerPoint.getX()+d, this.centerPoint.getY()
+//            );
+//            Point2D.Double p = new Point2D.Double(this.centerPoint.getX()+d, this.centerPoint.getY()-1);
+            this.angle = Math.toDegrees(line.getAngle());
+            LOGGER.info("Angulo: " + angle);
+
+        } catch (Exception ex) {
+            LOGGER.warn("Can't rotate from point of the layer " + layerName, ex);
+        }
+    }
+
+    @Override
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        mouseMoved(e);
+    }
+
+    public void setListener(ToolListener listener) {
+        this.listener = (RotatePointListener) listener;
+    }
+
+    @Override
+    public ToolListener getListener() {
+        return listener;
+    }
+
+    public double distance(Point2D p1, Point2D p2) {
+        double x = Math.sqrt( Math.pow(p2.getX()-p1.getX(), 2)+Math.pow(p2.getY()-p1.getY(), 2));
+        return x;
+    }
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.xml	(revision 5837)
@@ -0,0 +1,497 @@
+<?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/fdiaz/projects/gvSIG/org.gvsig.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.xml</at>
+   <at name="rowspecs">CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,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">lblTargetColorField</at>
+            <at name="width">117</at>
+            <at name="text">_Target_Color_field</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">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">lblTargetLengthField</at>
+            <at name="width">117</at>
+            <at name="text">_Target_Length_field</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">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">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">lblTargetAreaField</at>
+            <at name="width">117</at>
+            <at name="text">_Target_Area_field</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">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.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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetColorFields</at>
+            <at name="width">1155</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">4</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.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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetAreaFields</at>
+            <at name="width">1155</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">4</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.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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetLengthFields</at>
+            <at name="width">1155</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>
+    </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="7"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="4">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="5">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="6">
+        <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>
+</object>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/java/org/gvsig/legend/urbanhorizontalsignage/app/UrbanHorizontalSignageConfigForCopyPanelView.java	(revision 5837)
@@ -0,0 +1,162 @@
+package org.gvsig.legend.urbanhorizontalsignage.app;
+
+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.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+
+public class UrbanHorizontalSignageConfigForCopyPanelView extends JPanel
+{
+   JLabel lblTargetColorField = new JLabel();
+   JLabel lblTargetLengthField = new JLabel();
+   JLabel lblTargetAreaField = new JLabel();
+   JComboBox cboTargetColorFields = new JComboBox();
+   JComboBox cboTargetAreaFields = new JComboBox();
+   JComboBox cboTargetLengthFields = new JComboBox();
+
+   /**
+    * Default constructor
+    */
+   public UrbanHorizontalSignageConfigForCopyPanelView()
+   {
+      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,FILL:DEFAULT:NONE,FILL:4DLU:NONE","CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblTargetColorField.setName("lblTargetColorField");
+      lblTargetColorField.setText("_Target_Color_field");
+      jpanel1.add(lblTargetColorField,cc.xy(2,2));
+
+      lblTargetLengthField.setName("lblTargetLengthField");
+      lblTargetLengthField.setText("_Target_Length_field");
+      jpanel1.add(lblTargetLengthField,cc.xy(2,4));
+
+      lblTargetAreaField.setName("lblTargetAreaField");
+      lblTargetAreaField.setText("_Target_Area_field");
+      jpanel1.add(lblTargetAreaField,cc.xy(2,6));
+
+      cboTargetColorFields.setEditable(true);
+      cboTargetColorFields.setName("cboTargetColorFields");
+      cboTargetColorFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetColorFields,cc.xywh(4,2,3,1));
+
+      cboTargetAreaFields.setEditable(true);
+      cboTargetAreaFields.setName("cboTargetAreaFields");
+      cboTargetAreaFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetAreaFields,cc.xywh(4,6,3,1));
+
+      cboTargetLengthFields.setEditable(true);
+      cboTargetLengthFields.setName("cboTargetLengthFields");
+      cboTargetLengthFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetLengthFields,cc.xywh(4,4,3,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99_sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99_sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99.gvssym
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/symbols/99.gvssym
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/plugin-persistence.def
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/plugin-persistence.def	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/plugin-persistence.def	(revision 5837)
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!--
+Definitions of plugin persistence org.gvsig.aggregatelegend.app.mainplugin
+ -->
+<definitions>
+  <version>1.0.0</version>
+  <classes>
+    <class name="org.gvsig.legend.urbanhorizontalsignage.app.mainplugin">
+      <extends>
+      </extends>
+      <description>Persistence of the legend of urban horizontal signage</description>
+      <fields>
+      </fields>
+    </class>
+  </classes>
+</definitions>  
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text.properties
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 5837)
@@ -0,0 +1,45 @@
+_Urban_horizontal_signage_legend_description=Leyenda para la se\u00f1alizaci\u00f3n urbana horizontal
+_Urban_horizontal_signage_legend=Se\u00f1alizaci\u00f3n urbana horizontal
+_Width_field=Campo para la anchura
+_Continuity_field=Campo para la continuidad
+_Segments_color_field=Campo para el color de los segmentos
+_Segments_length_field=Campo para la longitud de los segmentos
+_Paint_holes_field=Campo para el pintado de los huecos
+_Holes_color_field=Campo para el color de los huecos
+_Holes_length_field=Campo para la longitud de los huecos
+_Round_vertex_field=Campo para el redondeo de los v\u00e9rtices
+_Gap_width_between_lines=Separaci\u00f3n entre l\u00edneas
+_Copy_selected_features_as_polygons_to_clipboard=Copiar elementos seleccionados como pol\u00edgonos al portapapeles
+_Number_of_geometries_to_be_copied_to_the_clipboard=N\u00famero de geometr\u00edas a ser copiadas al portapapeles
+_Do_you_want_to_continue=\u00bfDesea continuar?
+_Copy_as_polygons=Copiar como pol\u00edgonos
+_Target_Color_field=Campo de destino para el color
+_Target_Length_field=Campo de destino para la longitud
+_Target_Area_field=Campo de destino para el \u00e1rea
+# ---------------------------------------
+# Picture marker symbol table legend
+#
+_Picture_marker_symbol_table_legend=Valores \u00fanicos de marcador de imagen en tabla
+_Legend_table_fields=Campos de la tabla de la leyenda
+_Images_table_fields=Campos de la tabla de las imagenes
+_Unit=Unidad
+_Line_to_offset_color=Color de la linea al offset
+_Draw_line_to_offset=Pinta la linea al offset
+_Classifying_field=Campo para clasificar
+_OffsetX_field=Campo para el offset X
+_OffsetY_field=Campo para el offset Y
+_Rotation_field=Campo para la rotaci\u00f3n
+_Line_to_offset_color_field=Campo para el color de la linea al offset
+_Table_name=Nombre de tabla
+_Image_field=Campo de la imagen
+_Image_selected_field=Campo de la imagen seleccionada
+# ---------------------------------------
+_Convert_lines_to_polygons=Convertir lineas a poligonos
+_Convert_Urban_signage_lines_to_polygons=Convertir lineas de se\u00e1lizaci\u00f2n urbana a poligonos
+_Convert=Converir
+_Target_layer=Capa destino
+_Elements_to_process=Elementos a procesar
+_Delete_lines_at_finish=Eliminar lineas al terminar
+_Urban_signage=Se\u00f1alizaci\u00f3n urbana
+
+
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 5837)
@@ -0,0 +1,43 @@
+_Urban_horizontal_signage_legend_description=Urban horizontal signage legend
+_Urban_horizontal_signage_legend=Urban horizontal signage
+_Width_field=Width field
+_Continuity_field=Continuity field
+_Segments_color_field=Segments color field
+_Segments_length_field=Segments length field
+_Paint_holes_field=Paint holes field
+_Holes_color_field=Holes color field
+_Holes_length_field=Holes length field
+_Round_vertex_field=Round vertex field
+_Gap_width_between_lines=Gap width between lines
+_Copy_selected_features_as_polygons_to_clipboard=Copy selected features as polygons to clipboard
+_Number_of_geometries_to_be_copied_to_the_clipboard=Number of geometries to be copied to the clipboard
+_Do_you_want_to_continue=Do you want to continue?
+_Copy_as_polygons=Copy as polygons
+_Target_Color_field=Target color field
+_Target_Length_field=Target length field
+_Target_Area_field=Target area field
+# ---------------------------------------
+# Picture marker symbol table legend
+#
+_Picture_marker_symbol_table_legend=Picture marker unique values in table
+_Legend_table_fields=Legend table fields
+_Images_table_fields=Images table fields
+_Unit=Unit
+_Line_to_offset_color=Line to offset color
+_Draw_line_to_offset=Draw line to offset
+_Classifying_field=Classifying field
+_OffsetX_field=OffsetX field
+_OffsetY_field=OffsetY field
+_Rotation_field=Rotation field
+_Line_to_offset_color_field=Line to offset color field
+_Table_name=Table name
+_Image_field=Image field
+_Image_selected_field=Image selected field
+# ---------------------------------------
+_Convert_lines_to_polygons=Convert lines to polygons
+_Convert_Urban_signage_lines_to_polygons=Convert urban signage lines to polygons
+_Convert=Convert
+_Target_layer=Target layer
+_Elements_to_process=Elements to process
+_Delete_lines_at_finish=Delete lines at finish
+_Urban_signage=Urban signage
\ No newline at end of file
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/config.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/config.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/config.xml	(revision 5837)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 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. -->
+<plugin-config>
+  <depends plugin-name="org.gvsig.app.mainplugin" />
+  <resourceBundle name="text" />
+  <libraries library-dir="lib" />
+  <extensions>
+      <extension class-name="org.gvsig.legend.urbanhorizontalsignage.app.UrbanHorizontalSignageExtension"
+                 description="" active="true" priority="1">
+        
+          <action
+              name="layer-modify-clipboard-copy-as-polygons"
+              label="_Copy_selected_features_as_polygons_to_clipboard"
+              tooltip="_Copy_selected_features_as_polygons_to_clipboard"
+              position="601105001"
+              action-command="layer-modify-clipboard-copy-as-polygons"
+              icon="layer-modify-clipboard-copy-as-polygons"
+              accelerator=""
+          />
+
+          <action
+              name="tools-urbanSignage-linesToPolygons"
+              label="_Convert_lines_to_polygons"
+              tooltip="_Copy_selected_lines_to_polygons"
+              position="900500000"
+              action-command="tools-urbanSignage-linesToPolygons"
+              icon="tools-urbanSignage-linesToPolygons"
+              accelerator=""
+          />
+
+          <menu
+              name="layer-modify-clipboard-copy-as-polygons"
+              text="Layer/Modify/_Copy_selected_features_as_polygons_to_clipboard"
+          />
+
+          <menu
+              name="tools-urbanSignage-linesToPolygons"
+              text="tools/_Urban_signage/_Convert_lines_to_polygons"
+          />
+
+<!--          
+          <tool-bar name="edit">
+              <action-tool
+                  name="layer-modify-clipboard-copy-as-polygons"
+              />
+          </tool-bar>
+-->
+
+
+      </extension>
+      <extension class-name="org.gvsig.legend.urbanhorizontalsignage.app.rotate.RotatePointExtension"
+                 description="" active="false" priority="1">
+        
+          <action
+              name="layer-modify-rotatepoint"
+              label="_Rotate_point"
+              tooltip="_Rotate_point"
+              position="601105001"
+              action-command="layer-modify-rotatepoint"
+              icon="layer-modify-rotatepoint"
+              accelerator=""
+          />
+
+          <menu
+              name="layer-modify-rotatepoint"
+              text="Layer/Modify/_Rotate_point"
+          />
+
+      </extension>
+
+  </extensions>
+</plugin-config>
\ No newline at end of file
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/action/layer-modify-clipboard-copy-as-polygons.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/action/layer-modify-clipboard-copy-as-polygons.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/legend/legend-overview-vectorial-urbanhorizontalsignage.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/legend/legend-overview-vectorial-urbanhorizontalsignage.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/legend/legend-overview-vectorial-picturemarkersymboltable.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/src/main/resources-plugin/images/legend/legend-overview-vectorial-picturemarkersymboltable.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin/pom.xml	(revision 5837)
@@ -0,0 +1,57 @@
+<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.legend.urbanhorizontalsignage.app</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.app.mainplugin</artifactId>
+  <version>1.0.15</version>
+  <name>org.gvsig.legend.urbanhorizontalsignage.app.mainplugin</name>
+
+    <properties>
+    <!-- Package info property values -->
+    <gvsig.package.info.state>testing</gvsig.package.info.state>
+    <gvsig.package.info.dependencies>required: org.gvsig.app.mainplugin -ge 2.4.0-A</gvsig.package.info.dependencies>
+    <gvsig.package.info.official>true</gvsig.package.info.official>
+    <gvsig.package.info.name>Vector legend: urban horizaontal signage</gvsig.package.info.name>
+    <gvsig.package.info.description>Legend for urban horizaontal signage.</gvsig.package.info.description>
+    <gvsig.package.info.categories>View,Vector,Symbology</gvsig.package.info.categories>
+    <gvsig.package.info.javaVM>j1_8</gvsig.package.info.javaVM>
+    <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-base-legends/pool</gvsig.package.info.poolURL>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.andami</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.impl</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.impl</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.app.mainplugin</artifactId>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.app/org.gvsig.legend.urbanhorizontalsignage.app.mainplugin
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLocator.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLocator.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLocator.java	(revision 5837)
@@ -0,0 +1,99 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.lib.api;
+
+import org.gvsig.tools.locator.AbstractLocator;
+import org.gvsig.tools.locator.Locator;
+import org.gvsig.tools.locator.LocatorException;
+
+
+public class UrbanHorizontalSignageLocator extends AbstractLocator {
+
+    /**
+     * HeatmapLegend locator name
+     */
+    private static final String LOCATOR_NAME = "UrbanHorizontalSignageLocator";
+
+    /**
+     * HeatmapLegend manager name
+     */
+    public static final String MANAGER_NAME = "UrbanHorizontalSignageManager";
+
+    /**
+     * HeatmapLegend manager description
+     */
+    private static final String MANAGER_DESCRIPTION =
+        "UrbanHorizontalSignage Manager of gvSIG";
+
+
+    /**
+     * Unique instance
+     */
+    private static final UrbanHorizontalSignageLocator instance = new UrbanHorizontalSignageLocator();
+
+    @Override
+    public String getLocatorName() {
+        return LOCATOR_NAME;
+    }
+
+    /**
+     * Registers the Class implementing the UrbanHorizontalSignageManager interface.
+     *
+     * @param clazz
+     *            implementing the UrbanHorizontalSignageManager interface
+     */
+    public static void registerUrbanHorizontalSignageManager(Class clazz){
+        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
+    }
+
+    /**
+     * Registers the default Class implementing the UrbanHorizontalSignageManager interface
+     *
+     * @param clazz
+     *            implementing the UrbanHorizontalSignageManager interface
+     */
+    public static void registerDefaultUrbanHorizontalSignageManager(Class clazz){
+        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
+    }
+
+    /**
+     * Return a reference to UrbanHorizontalSignageManager.
+     *
+     * @return a reference to UrbanHorizontalSignageManager
+     * @throws LocatorException
+     *             if there is no access to the class or the class
+     *             cannot be instantiated
+     * @see Locator#get(String)
+     */
+    public static UrbanHorizontalSignageManager getUrbanHorizontalSignageManager() throws LocatorException {
+        return (UrbanHorizontalSignageManager) getInstance().get(MANAGER_NAME);
+    }
+
+    /**
+     * @return
+     */
+    public static Locator getInstance() {
+        return instance;
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLibrary.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLibrary.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageLibrary.java	(revision 5837)
@@ -0,0 +1,63 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.lib.api;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.fmap.mapcontext.rendering.legend.driver.ILegendWriter;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.symbology.SymbologyManager;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.tools.locator.ReferenceNotRegisteredException;
+
+
+public class UrbanHorizontalSignageLibrary extends AbstractLibrary {
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+        registerAsAPI(UrbanHorizontalSignageLibrary.class);
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+        // Validate there is any implementation registered.
+        UrbanHorizontalSignageManager manager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        if (manager == null) {
+            throw new ReferenceNotRegisteredException(
+                UrbanHorizontalSignageLocator.MANAGER_NAME, UrbanHorizontalSignageLocator.getInstance());
+        }
+
+        SymbologyManager symbolManager = SymbologyLocator.getSymbologyManager();
+        ILegendWriter legendWriter = symbolManager.getDefaultLegendWriter();
+
+        MapContextManager mcoman = MapContextLocator.getMapContextManager();
+        mcoman.registerLegendWriter(
+            UrbanHorizontalSignageLegend.class,
+            SymbolManager.LEGEND_FILE_EXTENSION.substring(1),
+            legendWriter.getClass());
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageConfig.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageConfig.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageConfig.java	(revision 5837)
@@ -0,0 +1,67 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend;
+
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ *
+ * @author fdiaz
+ */
+public interface UrbanHorizontalSignageConfig extends Persistent, org.gvsig.tools.lang.Cloneable {
+
+    public static final int DEFAULT_GAP_WIDTH_VALUE = 15;
+
+    public String getWidthFieldName();
+
+    public void setWidthFieldName(String fieldName);
+
+    public String getContinuityFieldName();
+
+    public void setContinuityFieldName(String fieldName);
+
+    public String getSegmentsColorFieldName();
+
+    public void setSegmentsColorFieldName(String fieldName);
+
+    public String getSegmentsLengthFieldName();
+
+    public void setSegmentsLengthFieldName(String fieldName);
+
+    public String getPaintHolesFieldName();
+
+    public void setPaintHolesFieldName(String fieldName);
+
+    public String getHolesColorFieldName();
+
+    public void setHolesColorFieldName(String fieldName);
+
+    public String getHolesLengthFieldName();
+
+    public void setHolesLengthFieldName(String fieldName);
+    
+    public String getRoundVertexFieldName();
+
+    public void setRoundVertexFieldName(String fieldName);
+    
+    public int getGapWidth();
+
+    public void setGapWith(int fieldName);
+    
+    public UrbanHorizontalSignageData getValues(Feature feature);
+    
+    public String getTargetColorFieldName();
+
+    public void setTargetColorFieldName(String fieldName);
+    
+    public String getTargetLenghtFieldName();
+    
+    public void setTargetLenghtFieldName(String fieldName);
+
+    public String getTargetAreaFieldName();
+    
+    public void setTargetAreaFieldName(String fieldName);
+
+    @Override
+    public UrbanHorizontalSignageConfig clone() throws CloneNotSupportedException;
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageData.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageData.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageData.java	(revision 5837)
@@ -0,0 +1,83 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend;
+
+import java.awt.Color;
+import org.gvsig.fmap.geom.aggregate.MultiLine;
+import org.gvsig.fmap.geom.aggregate.MultiPolygon;
+
+public interface UrbanHorizontalSignageData {
+    
+    public static final int CONTINUITY_MODE_CONT = 1;       //01
+    public static final int CONTINUITY_MODE_DISC = 2;       //10
+    public static final int CONTINUITY_MODE_CONT_CONT = 5;  //0101
+    public static final int CONTINUITY_MODE_DISC_DISC = 10; //1010
+    public static final int CONTINUITY_MODE_CONT_DISC = 6;  //0110
+    public static final int CONTINUITY_MODE_DISC_CONT = 9;  //1001
+    
+    public static final double DEFAULT_WIDTH_VALUE = 0.15;
+    public static final int DEFAULT_CONTINUITY_VALUE = 1;
+    public static final Color DEFAULT_SEGMENT_COLOR_VALUE = Color.BLUE.darker();
+    public static final double DEFAULT_SEGMENT_LENGTH_VALUE = 0.5;
+    public static final Color DEFAULT_HOLES_COLOR_VALUE = Color.BLACK;
+    public static final double DEFAULT_HOLES_LENGTH_VALUE = 0.5;
+    public static final boolean DEFAULT_PAINT_HOLES_VALUE = false;
+    public static final double DEFAULT_GAP_WIDTH_VALUE = 0.15;
+    public static final boolean DEFAULT_ROUND_VERTEX_VALUE = false;
+
+
+    public double getWidth();
+
+    public void setWidth(double value);
+
+    public int getContinuity();
+
+    public void setContinuity(int value);
+
+    public Color getSegmentsColor();
+
+    public void setSegmentsColor(Color value);
+
+    public double getSegmentsLength();
+
+    public void setSegmentsLength(double value);
+
+    public MultiPolygon getSegmentsGeometry();
+
+    public void setSegmentsGeometry(MultiPolygon value);
+
+    public boolean isPaintHoles();
+
+    public void setPaintHoles(boolean value);
+
+    public Color getHolesColor();
+
+    public void setHolesColor(Color value);
+
+    public double getHolesLength();
+
+    public void setHolesLength(double value);
+
+    /**
+     * Can be null
+    */
+    public MultiPolygon getHolesGeometry();
+
+    public void setHolesGeometry(MultiPolygon value);
+    
+    public double getGapWidth();
+
+    public void setGapWidth(double value);
+
+    public boolean isRoundVertex();
+
+    public void setRoundVertex(boolean value);
+
+    public MultiLine getLineSegmentsGeometry();
+
+    public void setLineSegmentsGeometry(MultiLine value);
+
+    public MultiLine getLineHolesGeometry();
+
+    public void setLineHolesGeometry(MultiLine value);
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageLegend.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageLegend.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/linelegend/UrbanHorizontalSignageLegend.java	(revision 5837)
@@ -0,0 +1,10 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend;
+
+import org.gvsig.fmap.mapcontext.rendering.legend.ISingleSymbolLegend;
+import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
+
+public interface UrbanHorizontalSignageLegend extends IVectorLegend, ISingleSymbolLegend {
+    
+    public UrbanHorizontalSignageConfig getConfig();
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageManager.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageManager.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/api/UrbanHorizontalSignageManager.java	(revision 5837)
@@ -0,0 +1,53 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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.legend.urbanhorizontalsignage.lib.api;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import org.gvsig.tools.task.SimpleTaskStatus;
+
+
+public interface UrbanHorizontalSignageManager {
+
+    public UrbanHorizontalSignageLegend createUrbanHorizontalSignageLegend();
+
+    public Class<? extends UrbanHorizontalSignageLegend> getUrbanHorizontalSignageLegendClass();
+    
+    public UrbanHorizontalSignageData createUrbanHorizontalSignageData();
+    
+    public void calculateGeometries(Geometry originalGeometry, UrbanHorizontalSignageData data);
+
+    public void convertLinesToPolygons(UrbanHorizontalSignageConfig config, FeatureSet lines, FeatureStore targetStore, boolean deleteSourceAtFinish, SimpleTaskStatus status);
+
+    public FeatureStore createTemporaryPolygonsFromLines(UrbanHorizontalSignageConfig config, FeatureSet lines, SimpleTaskStatus status);
+    
+    public PictureMarkerSymbolTableLegend createPictureMarkerSymbolTableLegend();
+
+    public Class<? extends PictureMarkerSymbolTableLegend> getPictureMarkerSymbolTableLegendClass();
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/api/PictureMarkerSymbolTableLegend.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/api/PictureMarkerSymbolTableLegend.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/api/PictureMarkerSymbolTableLegend.java	(revision 5837)
@@ -0,0 +1,76 @@
+package org.gvsig.legend.urbanverticalsignage.lib.api;
+
+import java.awt.Color;
+import org.gvsig.fmap.mapcontext.rendering.legend.IClassifiedLegend;
+import org.gvsig.fmap.mapcontext.rendering.legend.ISingleSymbolLegend;
+import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
+
+public interface PictureMarkerSymbolTableLegend 
+        extends IVectorLegend, IClassifiedLegend, ISingleSymbolLegend 
+    {
+    
+    public static final int DEFAULT_IMAGE_SIZE = 15;
+
+    public double getImageSize();
+    
+    public int getUnits();
+
+    public boolean isDrawLineToOffset();
+
+    public Color getDefaultLineToOffsetColor();
+
+
+    public String getClassifyingFieldName();
+
+    public String getOffsetXFieldName();
+
+    public String getOffsetYFieldName();
+
+    public String getRotationFieldName();
+
+    public String getLineToOffsetColorFieldName();
+
+
+
+    public String getImagesTableName();
+
+    public String getImageFieldName();
+
+    public String getImageSelectedFieldName();
+
+    public String getImagesTableClassifyingFieldName();
+
+
+
+
+    public void setImageSize(double size);
+
+    public void setUnits(int unit);
+    
+    public void setDefaultLineToOffsetColor(Color color);
+
+    public void setDrawLineToOffset(boolean drawLineToOffset);
+
+    
+
+    public void setLineToOffsetColorFieldName(String fieldName);
+
+    public void setOffsetXFieldName(String fieldName);
+
+    public void setOffsetYFieldName(String fieldName);
+
+    public void setRotationFieldName(String fieldName);
+
+    public void setClassifyingFieldName(String classifyingFieldName);
+
+    
+
+    public void setImagesTableName(String imagesTableName);
+
+    public void setImageFieldName(String imageFieldName);
+
+    public void setImageSelectedFieldName(String imageSelectedFieldName);
+
+    public void setImagesTableClassifyingFieldName(String imagesTableClassifyingFieldName);
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 5837)
@@ -0,0 +1 @@
+org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLibrary
\ No newline at end of file
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api/pom.xml	(revision 5837)
@@ -0,0 +1,47 @@
+<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>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.api</artifactId>
+  <name>org.gvsig.legend.urbanhorizontalsignage.lib.api</name>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib</artifactId>
+    <version>1.0.15</version>
+  </parent>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+        </configuration>
+        <executions>
+          <!-- Generates a jar file only with the test classes -->
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <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.mapcontext.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.symbology.lib.api</artifactId>
+    </dependency>
+  </dependencies>
+</project>

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.api
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 5837)
@@ -0,0 +1 @@
+org.gvsig.legend.urbanhorizontalsignage.lib.impl.UrbanHorizontalSignageLibraryImpl
\ No newline at end of file
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/images/picturemarkersymboltablelegend/image-not-found.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/images/picturemarkersymboltablelegend/image-not-found.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignagePersistence.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignagePersistence.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/resources/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignagePersistence.xml	(revision 5837)
@@ -0,0 +1,144 @@
+<?xml version="1.0"?>
+<definitions>
+    <version>1.0.0</version>
+    <classes>
+        <class name="DefaultUrbanHorizontalSignageLegend">
+            <extends>
+                <class name="VectorialLegend" namespace="persistence"/>
+            </extends>
+            <fields>
+                <field name="config" type="Object" ClassOfValue="org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig" mandatory="false">
+                    <description></description>
+                </field>
+            </fields>
+        </class>
+        
+        <class name="DefaultUrbanHorizontalSignageConfig">
+            <extends>
+            </extends>
+            <fields>
+                <field name="widthFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="continuityFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="segmentsColorFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="segmentsLengthFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="holesLengthFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="paintHolesFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="holesColorFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="roundVertexFieldName" type="String" defaultValue="">
+                    <description></description>
+                </field>
+                <field name="gapWidth" type="Integer" defaultValue="15">
+                    <description></description>
+                </field>
+
+            </fields>
+        </class>
+
+
+        <class name="UrbanHorizontalSignageSymbol">
+            <extends>
+                <class name="Symbol" namespace="persistence"/>
+            </extends>
+            <fields>
+                <field name="width" type="Double" defaultValue="0.15" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="continuity" type="Integer" defaultValue="1" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="segmentsColor" type="Object" ClassOfValue="java.awt.Color" defaultValue="blue" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="segmentsLength" type="Double" defaultValue="0.5" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="holesColor" type="Object" ClassOfValue="java.awt.Color" defaultValue="black" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="holesLength" type="Double" defaultValue="0.5" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="paintHoles" type="Boolean" defaultValue="false" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="gapWidth" type="Double" defaultValue="0.15" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="roundVertex" type="Boolean" defaultValue="false" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="transparency" type="Double" defaultValue="1.0" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="mustDrawOriginalGeometry" type="Boolean" defaultValue="false" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="colorForOriginalGeometry" type="Object" ClassOfValue="java.awt.Color" defaultValue="yellow" mandatory="false">
+                    <description></description>
+                </field>
+            </fields>
+        </class>
+
+        <class name="DefaultPictureMarkerSymbolTableLegend">
+            <extends>
+                <class name="VectorialLegend" namespace="persistence"/>
+            </extends>
+            <fields>
+                <field name="size" type="Double" defaultValue="15" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="units" type="Integer" defaultValue="-1" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="lineToOffsetColor" type="Object" ClassOfValue="java.awt.Color" defaultValue="darkgrey" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="drawLineToOffset" type="Boolean" defaultValue="true" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="classifyingFieldName" type="String" defaultValue="" mandatory="true">
+                    <description></description>
+                </field>
+                <field name="offsetXFieldName" type="String" defaultValue="" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="offsetYFieldName" type="String" defaultValue="" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="rotationFieldName" type="String" defaultValue="" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="lineToOffsetColorFieldlName" type="String" defaultValue="" mandatory="false">
+                    <description></description>
+                </field>
+                <field name="imagesTableName" type="String" defaultValue="" mandatory="true">
+                    <description></description>
+                </field>
+                <field name="imagesTableClassifyingFieldName" type="String" defaultValue="" mandatory="true">
+                    <description></description>
+                </field>
+                <field name="imageFieldName" type="String" defaultValue="" mandatory="true">
+                    <description></description>
+                </field>
+                <field name="imageSelectedFieldName" type="String" defaultValue="" mandatory="false">
+                    <description></description>
+                </field>
+            </fields>
+        </class>
+
+    </classes>
+</definitions>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/DefaultUrbanHorizontalSignageManager.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/DefaultUrbanHorizontalSignageManager.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/DefaultUrbanHorizontalSignageManager.java	(revision 5837)
@@ -0,0 +1,579 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.lib.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.DefaultUrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.DefaultUrbanHorizontalSignageData;
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.SplittedLine;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataManager;
+import org.gvsig.fmap.dal.DataStoreParameters;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.EditableFeature;
+import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.EditableFeatureType;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
+import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
+import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
+import org.gvsig.fmap.geom.DataTypes;
+import org.gvsig.fmap.geom.Geometry;
+import static org.gvsig.fmap.geom.Geometry.JOIN_STYLE_MITRE;
+import static org.gvsig.fmap.geom.Geometry.JOIN_STYLE_ROUND;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.aggregate.MultiLine;
+import org.gvsig.fmap.geom.aggregate.MultiPolygon;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.operation.GeometryOperationException;
+import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
+import org.gvsig.fmap.geom.primitive.Line;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.fmap.geom.primitive.Polygon;
+import org.gvsig.fmap.geom.type.GeometryType;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_CONT;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_CONT_CONT;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_CONT_DISC;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC_CONT;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC_DISC;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageManager;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import org.gvsig.legend.urbanverticalsignage.lib.impl.DefaultPictureMarkerSymbolTableLegend;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.folders.FoldersManager;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.tools.util.HasAFile;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultUrbanHorizontalSignageManager implements UrbanHorizontalSignageManager {
+
+    private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageManager.class);
+
+    @Override
+    public UrbanHorizontalSignageLegend createUrbanHorizontalSignageLegend() {
+        return new DefaultUrbanHorizontalSignageLegend();
+    }
+
+    @Override
+    public Class<? extends UrbanHorizontalSignageLegend> getUrbanHorizontalSignageLegendClass() {
+        return DefaultUrbanHorizontalSignageLegend.class;
+    }
+
+    @Override
+    public UrbanHorizontalSignageData createUrbanHorizontalSignageData() {
+        return new DefaultUrbanHorizontalSignageData();
+    }
+
+    @Override
+    public void calculateGeometries(Geometry originalGeometry, UrbanHorizontalSignageData data) {
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        try {
+            MultiPolygon segments = geomManager.createMultiPolygon(originalGeometry.getGeometryType().getSubType());
+            MultiPolygon holes = geomManager.createMultiPolygon(originalGeometry.getGeometryType().getSubType());
+            MultiLine lineSegments = geomManager.createMultiLine(originalGeometry.getGeometryType().getSubType());
+            MultiLine lineHoles = geomManager.createMultiLine(originalGeometry.getGeometryType().getSubType());
+            MultiLine lines = originalGeometry.toLines();
+            final double offsetValueInMeters = Math.abs(data.getGapWidth() / 2.0 + data.getWidth() / 2.0);
+            final double bufferValueInMeters = Math.abs(data.getWidth() / 2.0);
+            for (Geometry geom : lines) {
+                Line line = (Line) geom;
+                switch (data.getContinuity()) {
+                    case CONTINUITY_MODE_CONT:
+                    default:
+                        Geometry buffer = line.buffer(
+                                bufferValueInMeters,
+                                data.isRoundVertex() ? JOIN_STYLE_ROUND : JOIN_STYLE_MITRE,
+                                true
+                        );
+                        if (buffer != null) {
+                            segments.addPrimitives(buffer);
+                            lineSegments.addPrimitives(line);
+                        }
+                        break;
+
+                    case CONTINUITY_MODE_DISC:
+                        SplittedLine splittedLine = splitLine(line, data.getSegmentsLength(), data.getHolesLength());
+                        List<Line> splittedSegments = splittedLine.getSegments();
+                        List<Line> splittedHoles = splittedLine.getHoles();
+                        for (Line segment : splittedSegments) {
+                            buffer = segment.buffer(bufferValueInMeters,
+                                    data.isRoundVertex() ? JOIN_STYLE_ROUND : JOIN_STYLE_MITRE,
+                                    true
+                            );
+                            if (buffer != null) {
+                                segments.addPrimitives(buffer);
+                                lineSegments.addPrimitives(segment);
+                            }
+                        }
+                        for (Line hole : splittedHoles) {
+                            buffer = hole.buffer(
+                                    bufferValueInMeters,
+                                    data.isRoundVertex() ? JOIN_STYLE_ROUND : JOIN_STYLE_MITRE,
+                                    true
+                            );
+                            if (buffer != null) {
+                                holes.addPrimitives(buffer);
+                                lineHoles.addPrimitives(hole);
+                            }
+                        }
+                        break;
+
+                    case CONTINUITY_MODE_CONT_CONT:
+                        //Left
+                        addOffsetedAndBufferedSegment(segments, lineSegments, line, offsetValueInMeters, bufferValueInMeters, data.isRoundVertex());
+                        //Right
+                        addOffsetedAndBufferedSegment(segments, lineSegments, line, -offsetValueInMeters, bufferValueInMeters, data.isRoundVertex());
+                        break;
+
+                    case CONTINUITY_MODE_CONT_DISC:
+                        //Left
+                        addOffsetedAndBufferedSegment(segments, lineSegments, line, offsetValueInMeters, bufferValueInMeters, data.isRoundVertex());
+                        //Right
+                        splittedLine = splitLine(line, data.getSegmentsLength(), data.getHolesLength());
+                        splittedSegments = splittedLine.getSegments();
+                        splittedHoles = splittedLine.getHoles();
+                        for (Line segment : splittedSegments) {
+                            addOffsetedAndBufferedSegment(segments, lineSegments, segment, -offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        for (Line hole : splittedHoles) {
+                            addOffsetedAndBufferedSegment(holes, lineHoles, hole, -offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        break;
+
+                    case CONTINUITY_MODE_DISC_CONT:
+                        //Left
+                        splittedLine = splitLine(line, data.getSegmentsLength(), data.getHolesLength());
+                        splittedSegments = splittedLine.getSegments();
+                        splittedHoles = splittedLine.getHoles();
+                        for (Line segment : splittedSegments) {
+                            addOffsetedAndBufferedSegment(segments, lineSegments, segment, offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        for (Line hole : splittedHoles) {
+                            addOffsetedAndBufferedSegment(holes, lineHoles, hole, offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        //Right
+                        addOffsetedAndBufferedSegment(segments, lineSegments, line, -offsetValueInMeters, bufferValueInMeters, data.isRoundVertex());
+                        break;
+
+                    case CONTINUITY_MODE_DISC_DISC:
+                        splittedLine = splitLine(line, data.getSegmentsLength(), data.getHolesLength());
+                        splittedSegments = splittedLine.getSegments();
+                        splittedHoles = splittedLine.getHoles();
+                        //Left
+                        for (Line segment : splittedSegments) {
+                            addOffsetedAndBufferedSegment(segments, lineSegments, segment, offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        for (Line hole : splittedHoles) {
+                            addOffsetedAndBufferedSegment(holes, lineHoles, hole, offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        //Right
+                        for (Line segment : splittedSegments) {
+                            addOffsetedAndBufferedSegment(segments, lineSegments, segment, -offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        for (Line hole : splittedHoles) {
+                            addOffsetedAndBufferedSegment(holes, lineHoles, hole, -offsetValueInMeters, bufferValueInMeters, true);
+                        }
+                        break;
+
+                }
+
+            }
+            data.setSegmentsGeometry(segments);
+            data.setHolesGeometry(holes);
+            data.setLineSegmentsGeometry(lineSegments);
+            data.setLineHolesGeometry(lineHoles);
+        } catch (Exception ex) {
+            LOGGER.warn("Can't calculate geometries.", ex);
+//            Logger.getLogger(DefaultUrbanHorizontalSignageManager.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
+    }
+
+    protected void addOffsetedAndBufferedSegment(MultiPolygon segments, MultiLine lineSegments, Line segment, final double offsetValueInMeters, final double bufferValueInMeters, boolean roundVertex) throws GeometryOperationException, GeometryOperationNotSupportedException {
+        Geometry buffer;
+        final int joinStyle = roundVertex ? JOIN_STYLE_ROUND : JOIN_STYLE_MITRE;
+
+        Geometry segmentOffset;
+        if (segment.isClosed() && segment.getNumVertices() > 2 && segment.isCCW()) {
+            Line cloned = segment.cloneGeometry();
+            cloned.flip();
+            segmentOffset = cloned.offset(
+                    joinStyle,
+                    -offsetValueInMeters
+            );
+        } else {
+            segmentOffset = segment.cloneGeometry().offset(
+                    joinStyle,
+                    offsetValueInMeters
+            );
+        }
+        if (segmentOffset == null) {
+            return;
+        }
+        buffer = segmentOffset.buffer(bufferValueInMeters, joinStyle,
+                true
+        );
+        if (buffer != null) {
+            segments.addPrimitives(buffer);
+            lineSegments.addPrimitives(segmentOffset);
+        }
+    }
+
+    /*
+        segmentLength & holesLenght in meters
+     */
+ /*friend*/
+    SplittedLine splitLine(Line line, double segmentLength, double holesLength) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException, CloneNotSupportedException {
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        SplittedLine res = new SplittedLine();
+
+        Point previousPoint = null;
+        double previousLength = 0;
+        Line currentSegment = geomManager.createLine(line.getGeometryType().getSubType());
+        boolean isHole = false;
+        boolean advanceToNext = true;
+        Point currentPoint = null;
+        Iterator<Point> it = line.iterator();
+        while (it.hasNext() || !advanceToNext) {
+            if (advanceToNext) {
+                currentPoint = it.next();
+            }
+            if (previousPoint == null) {
+                previousPoint = currentPoint.clone();
+                currentSegment.addVertex(previousPoint);
+                advanceToNext = true;
+                continue;
+            }
+            double distance = previousPoint.distance(currentPoint);
+            if (!isHole) {
+                if (previousLength + distance < segmentLength) {
+                    previousLength += distance;
+                    if (distance > 0.0) {
+                        currentSegment.addVertex(currentPoint);
+                    }
+                    previousPoint = currentPoint.cloneGeometry();
+                    advanceToNext = true;
+//                    continue;
+                } else {
+                    //buscar punto dentro del segmento a una distancia = segmentLengthMeters-previousLength
+                    Point point = calculateIntermediatePoint(previousPoint, currentPoint, (segmentLength - previousLength) / distance);
+                    //agregarlo al currentSegment,
+                    currentSegment.addVertex(point);
+                    //agregar  el currentSegment a la lista de segmentos
+                    res.addSegment(currentSegment.cloneGeometry());
+                    //crear un nuevo currentSegment y meter el punto como primero
+                    currentSegment = geomManager.createLine(line.getGeometryType().getSubType());
+                    currentSegment.addVertex(point);
+                    //cambiar modo ==> isHole = true
+                    isHole = !isHole;
+                    previousPoint = point.clone();
+                    previousLength = 0;
+                    advanceToNext = false;
+//                    continue;
+                }
+            } else {
+                if (previousLength + distance < holesLength) {
+                    previousLength += distance;
+                    if (distance > 0.0) {
+                        currentSegment.addVertex(currentPoint);
+                    }
+                    previousPoint = currentPoint.cloneGeometry();
+                    advanceToNext = true;
+//                    continue;
+                } else {
+                    //buscar punto dentro del segmento a una distancia = segmentLengthMeters-previousLength
+                    Point point = calculateIntermediatePoint(previousPoint, currentPoint, (holesLength - previousLength) / distance);
+                    //agregarlo al currentSegment,
+                    currentSegment.addVertex(point);
+                    //agregar  el surrentSegment a la lista de segmentos
+                    res.addHole(currentSegment.cloneGeometry());
+                    //crear un nuevo currentSegment y meter el punto como primero
+                    currentSegment = geomManager.createLine(line.getGeometryType().getSubType());
+                    currentSegment.addVertex(point);
+                    //Cambiar modo Segment <==> Hole
+                    isHole = !isHole;
+                    previousPoint = point.clone();
+                    previousLength = 0;
+                    advanceToNext = false;
+//                    continue;
+                }
+            }
+        }
+
+        if (currentSegment.getNumVertices() > 1) {
+            if (isHole) {
+                res.addHole(currentSegment.cloneGeometry());
+            } else {
+                res.addSegment(currentSegment.cloneGeometry());
+            }
+        }
+
+        return res;
+    }
+
+    /**
+     * @deprecated
+     * use {@link GeometryUtils.calculateLambdaPoint}
+     * 
+     * @param p1
+     * @param p2
+     * @param lambda
+     * @return
+     * @throws CreateGeometryException
+     * @throws GeometryOperationNotSupportedException
+     * @throws GeometryOperationException
+     * @deprecated
+     */
+    @Deprecated 
+    Point calculateIntermediatePoint(Point p1, Point p2, double lambda) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException {
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        GeometryType geomType = p1.getGeometryType();
+        int subtype = geomType.getSubType();
+        int dimension = geomType.getDimension();
+        double[] coords = new double[dimension];
+        Point p = geomManager.createPoint(0, 0, subtype);
+        double distance = p1.distance(p2);
+        for (int d = 0; d < dimension; d++) {
+            p.setCoordinateAt(
+                    d,
+                    p1.getCoordinateAt(d) + (p2.getCoordinateAt(d) - p1.getCoordinateAt(d)) * lambda);
+        }
+
+        return p;
+    }
+
+    @Override
+    public FeatureStore createTemporaryPolygonsFromLines(UrbanHorizontalSignageConfig config, FeatureSet lines, SimpleTaskStatus status) {
+
+        //TODO: el status....
+        UrbanHorizontalSignageManager uhsManager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        EditableFeatureType targetFeatureType = createTargetFeatureType(lines.getFeatureStore());
+        FeatureStore targetStore = createTemporalStore(targetFeatureType);
+        try {
+            targetStore.edit(FeatureStore.MODE_APPEND);
+
+            for (Feature feature : lines) {
+
+                Geometry originalGeometry = feature.getDefaultGeometry();
+
+                UrbanHorizontalSignageData data = config.getValues(feature);
+
+                uhsManager.calculateGeometries(originalGeometry, data);
+
+                MultiPolygon multiGeom = data.getSegmentsGeometry();
+                MultiLine multiLine = data.getLineSegmentsGeometry();
+                insertPolygonsOfLine(multiGeom, multiLine, targetStore, feature, config, config.getSegmentsColorFieldName());
+
+                switch (data.getContinuity()) {
+                    case CONTINUITY_MODE_CONT_DISC:
+                    case CONTINUITY_MODE_DISC_CONT:
+                    case CONTINUITY_MODE_DISC:
+                    case CONTINUITY_MODE_DISC_DISC:
+                        if (data.isPaintHoles()) {
+                            multiGeom = data.getHolesGeometry();
+                            multiLine = data.getLineHolesGeometry();
+                            insertPolygonsOfLine(multiGeom, multiLine, targetStore, feature, config, config.getHolesColorFieldName());
+                        }
+                }
+
+            }
+
+            targetStore.finishEditing();
+            return targetStore;
+
+        } catch (Exception e) {
+            LOGGER.debug("Can't create temporary polygons store.", e);
+        }
+
+        return null;
+    }
+
+    private void insertPolygonsOfLine(MultiPolygon multiGeom, MultiLine multiLine, FeatureStore targetStore, Feature feature, UrbanHorizontalSignageConfig config, String colorFieldName) throws GeometryOperationNotSupportedException, GeometryOperationException, DataException {
+        if (multiGeom != null && multiGeom.getPrimitivesNumber() > 0) {
+            for (int i = 0; i < multiGeom.getPrimitivesNumber(); i++) {
+                Polygon polygon = (Polygon) multiGeom.getPrimitiveAt(i);
+                Line line = (Line) multiLine.getPrimitiveAt(i);
+                EditableFeature targetFeature = targetStore.createNewFeature();
+                targetFeature.copyFrom(feature, (FeatureAttributeDescriptor t) -> !(t.isPrimaryKey() || (t.isIndexed() && !t.allowIndexDuplicateds()) || t.getType() == DataTypes.GEOMETRY));
+
+                if (StringUtils.isNotBlank(config.getTargetColorFieldName())) {
+                    targetFeature.set(config.getTargetColorFieldName(), feature.get(colorFieldName));
+                }
+
+                if (StringUtils.isNotBlank(config.getTargetLenghtFieldName())) {
+                    targetFeature.set(config.getTargetLenghtFieldName(), line.perimeter());
+                }
+
+                if (StringUtils.isNotBlank(config.getTargetAreaFieldName())) {
+                    targetFeature.set(config.getTargetAreaFieldName(), polygon.area());
+                }
+
+                targetFeature.setDefaultGeometry(polygon);
+                targetStore.insert(targetFeature);
+            }
+        }
+    }
+
+    private EditableFeatureType createTargetFeatureType(FeatureStore store) {
+        DataManager dataManager = DALLocator.getDataManager();
+
+        EditableFeatureType featureType = dataManager.createFeatureType();
+        featureType.addAll(store.getDefaultFeatureTypeQuietly());
+        for (FeatureAttributeDescriptor attr : featureType) {
+            EditableFeatureAttributeDescriptor eattr = (EditableFeatureAttributeDescriptor) attr;
+            eattr.setIsPrimaryKey(false);
+            eattr.setIsIndexed(false);
+            eattr.setAllowNull(true);
+        }
+
+        EditableFeatureAttributeDescriptor attr = (EditableFeatureAttributeDescriptor) featureType.getDefaultGeometryAttribute();
+        attr.setGeometryType(Geometry.TYPES.POLYGON, Geometry.SUBTYPES.GEOM2D);
+
+        return featureType;
+    }
+
+    private FeatureStore createTemporalStore(EditableFeatureType featType) {
+        if (featType.getStore() != null) {
+            throw new IllegalArgumentException("Can't create temporal store from a feature type of a already existent store.");
+        }
+        try {
+            // crear ruta de archivo temporal
+            FoldersManager foldersManager = ToolsLocator.getFoldersManager();
+            File tempFile = foldersManager.getUniqueTemporaryFile("urbanHorizontalSignage_temporal_store_" + UUID.randomUUID().toString());
+
+            // crear SERVER STORE
+            DataManager dataManager = DALLocator.getDataManager();
+            JDBCServerExplorerParameters serverParameters = (JDBCServerExplorerParameters) dataManager.createServerExplorerParameters("H2Spatial");
+            ((HasAFile) serverParameters).setFile(tempFile);
+            JDBCServerExplorer serverExplorer = (JDBCServerExplorer) dataManager.openServerExplorer("H2Spatial", serverParameters);
+
+            //Crear tablas en server store
+            JDBCNewStoreParameters parametersResults = serverExplorer.getAddParameters();
+            parametersResults.setDynValue("Table", "results");
+
+            parametersResults.setDefaultFeatureType(featType);
+            serverExplorer.add("H2Spatial", parametersResults, true);
+
+            DataStoreParameters storeParametersResults = dataManager.createStoreParameters("H2Spatial");
+            storeParametersResults.setDynValue("database_file", tempFile);
+            storeParametersResults.setDynValue("Table", "results");
+
+            //Creación del store con los resultados
+            FeatureStore storeResults = (FeatureStore) dataManager.openStore("H2Spatial", storeParametersResults);
+
+            return storeResults;
+        } catch (Exception ex) {
+            LOGGER.debug("Can't create temporal store.", ex);
+            return null;
+        }
+    }
+
+    @Override
+    public PictureMarkerSymbolTableLegend createPictureMarkerSymbolTableLegend() {
+        return new DefaultPictureMarkerSymbolTableLegend();
+    }
+
+    @Override
+    public Class<? extends PictureMarkerSymbolTableLegend> getPictureMarkerSymbolTableLegendClass() {
+        return DefaultPictureMarkerSymbolTableLegend.class;
+    }
+
+    @Override
+    public void convertLinesToPolygons(
+            UrbanHorizontalSignageConfig config,
+            FeatureSet source,
+            FeatureStore targetStore,
+            boolean deleteSourceAtFinish,
+            SimpleTaskStatus status
+    ) {
+
+        boolean needFinishEditing = !(targetStore.isEditing() || targetStore.isAppending());
+        try {
+            if (needFinishEditing) {
+                targetStore.edit();
+            }
+            for (Feature feature : source) {
+                Geometry geom = feature.getDefaultGeometry();
+                UrbanHorizontalSignageData data = config.getValues(feature);
+                calculateGeometries(geom, data);
+
+                MultiPolygon multiGeom = data.getSegmentsGeometry();
+                MultiLine multiLine = data.getLineSegmentsGeometry();
+                insertPolygonsOfLine(multiGeom, multiLine, targetStore, feature, config, config.getSegmentsColorFieldName());
+
+                switch (data.getContinuity()) {
+                    case CONTINUITY_MODE_CONT_DISC:
+                    case CONTINUITY_MODE_DISC_CONT:
+                    case CONTINUITY_MODE_DISC:
+                    case CONTINUITY_MODE_DISC_DISC:
+                        if (data.isPaintHoles()) {
+                            multiGeom = data.getHolesGeometry();
+                            multiLine = data.getLineHolesGeometry();
+                            insertPolygonsOfLine(multiGeom, multiLine, targetStore, feature, config, config.getHolesColorFieldName());
+                        }
+                }
+            }
+            if (needFinishEditing) {
+                targetStore.finishEditing();
+            }
+
+        } catch (Exception ex) {
+            FeatureStore.cancelEditingQuietly(targetStore);
+            throw new RuntimeException("Can't convert lines to polygins", ex);
+        }
+        if (deleteSourceAtFinish) {
+            FeatureStore sourceStore = null;
+            try {
+                sourceStore = source.getFeatureStore();
+                needFinishEditing = !(sourceStore.isEditing() || sourceStore.isAppending());
+                if (needFinishEditing) {
+                    sourceStore.edit();
+                }
+                for (Feature feature : source) {
+                    source.delete(feature);
+                }
+                if (needFinishEditing) {
+                    sourceStore.finishEditing();
+                }
+            } catch (Exception ex) {
+                FeatureStore.cancelEditingQuietly(sourceStore);
+                throw new RuntimeException("Can't delete source lines", ex);
+            }
+        }
+    }
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignageLibraryImpl.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignageLibraryImpl.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/UrbanHorizontalSignageLibraryImpl.java	(revision 5837)
@@ -0,0 +1,101 @@
+/**
+ * gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.lib.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.DefaultUrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.UrbanHorizontalSignageSymbol;
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.DefaultUrbanHorizontalSignageConfig;
+import java.io.InputStream;
+import java.util.Map;
+import org.gvsig.fmap.mapcontext.MapContextLibrary;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLibrary;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanverticalsignage.lib.impl.DefaultPictureMarkerSymbolTableLegend;
+import org.gvsig.symbology.impl.SymbologyDefaultImplLibrary;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+public class UrbanHorizontalSignageLibraryImpl extends AbstractLibrary {
+
+    @Override
+    public void doRegistration() {
+        registerAsImplementationOf(UrbanHorizontalSignageLibrary.class);
+        this.require(MapContextLibrary.class);
+        this.require(SymbologyDefaultImplLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+        UrbanHorizontalSignageLocator.registerUrbanHorizontalSignageManager(DefaultUrbanHorizontalSignageManager.class);
+        MapContextManager mcmanager = MapContextLocator.getMapContextManager();
+        mcmanager.registerLegend("UrbanHorizontalSignageLegend", DefaultUrbanHorizontalSignageLegend.class);
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+        PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
+        InputStream is = this.getClass().getResourceAsStream("UrbanHorizontalSignagePersistence.xml");
+        Map<String,DynStruct> definitions;
+        try {
+            definitions = ToolsLocator.getDynObjectManager().importDynClassDefinitions(is, this.getClass().getClassLoader());
+        } catch (Exception ex) {
+            throw new LibraryException(this.getClass(), ex);
+        }
+        
+        persistenceManager.addDefinition(
+                DefaultUrbanHorizontalSignageLegend.class,
+                "DefaultUrbanHorizontalSignageLegend",
+                definitions,
+                null,
+                null);
+        persistenceManager.addDefinition(
+                UrbanHorizontalSignageSymbol.class,
+                "UrbanHorizontalSignageSymbol",
+                definitions,
+                null,
+                null
+        );
+        persistenceManager.addDefinition(
+                DefaultUrbanHorizontalSignageConfig.class,
+                "DefaultUrbanHorizontalSignageConfig",
+                definitions,
+                null,
+                null
+        );
+        persistenceManager.addDefinition(
+                DefaultPictureMarkerSymbolTableLegend.class,
+                "DefaultPictureMarkerSymbolTableLegend",
+                definitions,
+                null,
+                null
+        );
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageConfig.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageConfig.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageConfig.java	(revision 5837)
@@ -0,0 +1,234 @@
+/*
+ * 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.legend.urbanhorizontalsignage.lib.impl.linelegend;
+
+import java.awt.Color;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig.DEFAULT_GAP_WIDTH_VALUE;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_CONTINUITY_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_HOLES_COLOR_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_HOLES_LENGTH_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_PAINT_HOLES_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_ROUND_VERTEX_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_SEGMENT_COLOR_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_SEGMENT_LENGTH_VALUE;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.DEFAULT_WIDTH_VALUE;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dataTypes.DataTypesManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.tools.swing.api.DataTypes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author fdiaz
+ */
+public class DefaultUrbanHorizontalSignageConfig implements UrbanHorizontalSignageConfig {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageConfig.class);
+
+    private String widthFieldName;
+    private String continuityFieldName;
+    private String holesLengthFieldName;
+    private String holesColorFieldName;
+    private String paintHolesFieldName;
+    private String segmentsLengthFieldName;
+    private String segmentsColorFieldName;
+    private String roundVertexFieldName;
+    private int gapWidth;
+    private String targetColorFieldName;
+    private String targetLenghtFieldName;
+    private String targetAreaFieldName;
+    
+    public DefaultUrbanHorizontalSignageConfig() {
+        this.gapWidth = DEFAULT_GAP_WIDTH_VALUE;
+    }
+
+    @Override
+    public void loadFromState(PersistentState state) throws PersistenceException {
+
+        this.widthFieldName = state.getString("widthFieldName");
+        this.continuityFieldName = state.getString("continuityFieldName");
+        this.holesLengthFieldName = state.getString("holesLengthFieldName");
+        this.holesColorFieldName = state.getString("holesColorFieldName");
+        this.paintHolesFieldName = state.getString("paintHolesFieldName");
+        this.segmentsLengthFieldName = state.getString("segmentsLengthFieldName");
+        this.segmentsColorFieldName = state.getString("segmentsColorFieldName");
+        this.roundVertexFieldName = state.getString("roundVertexFieldName");
+        this.gapWidth = state.getInt("gapWidth", DEFAULT_GAP_WIDTH_VALUE);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set("widthFieldName", this.widthFieldName);
+        state.set("continuityFieldName", this.continuityFieldName);
+        state.set("holesLengthFieldName", this.holesLengthFieldName);
+        state.set("holesColorFieldName", this.holesColorFieldName);
+        state.set("paintHolesFieldName", this.paintHolesFieldName);
+        state.set("segmentsLengthFieldName", this.segmentsLengthFieldName);
+        state.set("segmentsColorFieldName", this.segmentsColorFieldName);
+        state.set("roundVertexFieldName", this.roundVertexFieldName);
+        state.set("gapWidth", this.gapWidth);
+    }
+
+    @Override
+    public String getWidthFieldName() {
+        return this.widthFieldName;
+    }
+
+    @Override
+    public void setWidthFieldName(String fieldName) {
+        this.widthFieldName = fieldName;
+    }
+
+    @Override
+    public String getContinuityFieldName() {
+        return this.continuityFieldName;
+    }
+
+    @Override
+    public void setContinuityFieldName(String fieldName) {
+        this.continuityFieldName = fieldName;
+    }
+
+    @Override
+    public String getSegmentsColorFieldName() {
+        return this.segmentsColorFieldName;
+    }
+
+    @Override
+    public void setSegmentsColorFieldName(String fieldName) {
+        this.segmentsColorFieldName = fieldName;
+    }
+
+    @Override
+    public String getSegmentsLengthFieldName() {
+        return this.segmentsLengthFieldName;
+    }
+
+    @Override
+    public void setSegmentsLengthFieldName(String fieldName) {
+        this.segmentsLengthFieldName = fieldName;
+    }
+
+    @Override
+    public String getPaintHolesFieldName() {
+        return this.paintHolesFieldName;
+    }
+
+    @Override
+    public void setPaintHolesFieldName(String fieldName) {
+        this.paintHolesFieldName = fieldName;
+    }
+
+    @Override
+    public String getHolesColorFieldName() {
+        return this.holesColorFieldName;
+    }
+
+    @Override
+    public void setHolesColorFieldName(String fieldName) {
+        this.holesColorFieldName = fieldName;
+    }
+
+    @Override
+    public String getHolesLengthFieldName() {
+        return this.holesLengthFieldName;
+    }
+
+    @Override
+    public void setHolesLengthFieldName(String fieldName) {
+        this.holesLengthFieldName = fieldName;
+    }
+    
+    @Override
+    public String getRoundVertexFieldName() {
+        return this.roundVertexFieldName;
+    }
+
+    @Override
+    public void setRoundVertexFieldName(String fieldName) {
+        this.roundVertexFieldName = fieldName;
+    }
+    
+    @Override
+    public int getGapWidth() {
+        return this.gapWidth;
+    }
+
+    @Override
+    public void setGapWith(int value) {
+        this.gapWidth = value;
+    }
+
+    @Override
+    public UrbanHorizontalSignageData getValues(Feature feature) {
+        UrbanHorizontalSignageData data = new DefaultUrbanHorizontalSignageData();
+        DataTypesManager manager = ToolsLocator.getDataTypesManager();
+        FeatureType ftype = feature.getType();
+        double valueDouble = feature.getIntOrDefault( this.widthFieldName, (int)DEFAULT_WIDTH_VALUE*100 )/100.0;
+        data.setWidth(valueDouble);
+        int valueInt = feature.getIntOrDefault( this.continuityFieldName, DEFAULT_CONTINUITY_VALUE );
+        data.setContinuity(valueInt);
+        Color valueColor = (Color)feature.getOrDefault( this.segmentsColorFieldName, DataTypes.COLOR, DEFAULT_SEGMENT_COLOR_VALUE );
+        data.setSegmentsColor(valueColor);
+        valueDouble = feature.getIntOrDefault( this.segmentsLengthFieldName, (int)DEFAULT_SEGMENT_LENGTH_VALUE*100 )/100.0;
+        data.setSegmentsLength(valueDouble);
+        valueDouble = feature.getIntOrDefault( this.holesLengthFieldName, (int)DEFAULT_HOLES_LENGTH_VALUE*100 )/100.0;
+        data.setHolesLength(valueDouble);
+        boolean valueBoolean = feature.getBooleanOrDefault( this.paintHolesFieldName, DEFAULT_PAINT_HOLES_VALUE );
+        data.setPaintHoles(valueBoolean);
+        valueColor = (Color) feature.getOrDefault( this.holesColorFieldName, DataTypes.COLOR, DEFAULT_HOLES_COLOR_VALUE );
+        data.setHolesColor(valueColor);
+        valueBoolean = feature.getBooleanOrDefault( this.roundVertexFieldName, DEFAULT_ROUND_VERTEX_VALUE );
+        data.setRoundVertex(valueBoolean);
+
+        data.setGapWidth(this.getGapWidth()/100.0);
+        
+        return data;
+    }
+
+    @Override
+    public String getTargetColorFieldName() {
+        return this.targetColorFieldName;
+    }
+
+    @Override
+    public void setTargetColorFieldName(String fieldName) {
+        this.targetColorFieldName = fieldName;
+    }
+
+    @Override
+    public String getTargetLenghtFieldName() {
+        return this.targetLenghtFieldName;
+    }
+
+    @Override
+    public void setTargetLenghtFieldName(String fieldName) {
+        this.targetLenghtFieldName = fieldName;
+    }
+
+    @Override
+    public String getTargetAreaFieldName() {
+        return this.targetAreaFieldName;
+    }
+
+    @Override
+    public void setTargetAreaFieldName(String fieldName) {
+        this.targetAreaFieldName = fieldName;
+    }
+
+    @Override
+    public UrbanHorizontalSignageConfig clone() throws CloneNotSupportedException {
+        return (UrbanHorizontalSignageConfig) super.clone(); 
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageData.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageData.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageData.java	(revision 5837)
@@ -0,0 +1,174 @@
+/*
+ * 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.legend.urbanhorizontalsignage.lib.impl.linelegend;
+
+import java.awt.Color;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.aggregate.MultiLine;
+import org.gvsig.fmap.geom.aggregate.MultiPolygon;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+
+/**
+ *
+ * @author fdiaz
+ */
+public class DefaultUrbanHorizontalSignageData implements UrbanHorizontalSignageData {
+    
+    private double width;
+    private int continuity;
+    private Color segmentsColor;
+    private double segmentsLength;
+    private MultiPolygon segmentsGeometry;
+    private boolean isPaintHoles;
+    private Color holesColor;
+    private double holesLength;
+    private MultiPolygon holesGeometry;
+    private double gapWidth;
+    private Geometry originalGeometry;
+    private boolean roundVertex;
+    private MultiLine lineSegmentsGeometry;
+    private MultiLine lineHolesGeometry;
+
+    public DefaultUrbanHorizontalSignageData() {
+        width = DEFAULT_WIDTH_VALUE;
+        continuity = DEFAULT_CONTINUITY_VALUE;
+        segmentsColor = DEFAULT_SEGMENT_COLOR_VALUE;
+        segmentsLength = DEFAULT_SEGMENT_LENGTH_VALUE;
+        isPaintHoles = DEFAULT_PAINT_HOLES_VALUE;
+        holesColor = DEFAULT_HOLES_COLOR_VALUE;
+        holesLength = DEFAULT_HOLES_LENGTH_VALUE;
+        gapWidth = DEFAULT_GAP_WIDTH_VALUE;
+        roundVertex = DEFAULT_ROUND_VERTEX_VALUE;
+    }
+
+    @Override
+    public double getWidth() {
+        return this.width;
+    }
+
+    @Override
+    public void setWidth(double value) {
+        this.width = value;
+    }
+
+    @Override
+    public int getContinuity() {
+        return this.continuity;
+    }
+
+    @Override
+    public void setContinuity(int value) {
+        this.continuity = value;
+    }
+
+    @Override
+    public Color getSegmentsColor() {
+        return this.segmentsColor;
+    }
+
+    @Override
+    public void setSegmentsColor(Color value) {
+        this.segmentsColor = value;
+    }
+
+    @Override
+    public double getSegmentsLength() {
+        return this.segmentsLength;
+    }
+
+    @Override
+    public void setSegmentsLength(double value) {
+        this.segmentsLength = value;
+    }
+
+    @Override
+    public MultiPolygon getSegmentsGeometry() {
+        return this.segmentsGeometry;
+    }
+
+    @Override
+    public void setSegmentsGeometry(MultiPolygon value) {
+        this.segmentsGeometry = value;
+    }
+
+    @Override
+    public boolean isPaintHoles() {
+        return this.isPaintHoles;
+    }
+
+    @Override
+    public void setPaintHoles(boolean value) {
+        this.isPaintHoles = value;
+    }
+
+    @Override
+    public Color getHolesColor() {
+        return this.holesColor;
+    }
+
+    @Override
+    public void setHolesColor(Color value) {
+        this.holesColor = value;
+    }
+
+    @Override
+    public double getHolesLength() {
+        return this.holesLength;
+    }
+
+    @Override
+    public void setHolesLength(double value) {
+        this.holesLength = value;
+    }
+
+    @Override
+    public MultiPolygon getHolesGeometry() {
+        return this.holesGeometry;
+    }
+
+    @Override
+    public void setHolesGeometry(MultiPolygon value) {
+        this.holesGeometry = value;
+    }
+
+    @Override
+    public double getGapWidth() {
+        return this.gapWidth;
+    }
+
+    @Override
+    public void setGapWidth(double value) {
+        this.gapWidth = value;
+    }
+    
+    public boolean isRoundVertex(){
+        return this.roundVertex;
+    }
+
+    public void setRoundVertex(boolean value){
+        this.roundVertex = value;
+    }
+
+    @Override
+    public MultiLine getLineSegmentsGeometry() {
+        return this.lineSegmentsGeometry;
+    }
+
+    @Override
+    public void setLineSegmentsGeometry(MultiLine value) {
+        this.lineSegmentsGeometry = value;
+    }
+
+    @Override
+    public MultiLine getLineHolesGeometry() {
+        return this.lineHolesGeometry;
+    }
+
+    @Override
+    public void setLineHolesGeometry(MultiLine value) {
+        this.lineHolesGeometry = value;
+    }
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/SplittedLine.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/SplittedLine.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/SplittedLine.java	(revision 5837)
@@ -0,0 +1,37 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.gvsig.fmap.geom.primitive.Line;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+public class SplittedLine {
+    
+    List<Line> segments;
+    List<Line> holes;
+
+    public SplittedLine() {
+        segments = new ArrayList<>();
+        holes = new ArrayList<>();
+    }
+
+    public List<Line> getSegments() {
+        return this.segments;
+    }
+
+    public List<Line> getHoles() {
+        return this.holes;
+    }
+
+    public void addSegment(Line segment) {
+        this.segments.add(segment);
+    }
+
+    public void addHole(Line hole) {
+        this.holes.add(hole);
+    }
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageLegend.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageLegend.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/DefaultUrbanHorizontalSignageLegend.java	(revision 5837)
@@ -0,0 +1,164 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend;
+
+import java.awt.Image;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.mapcontext.MapContextException;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.symbology.SymbologyManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractVectorialLegend;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DefaultUrbanHorizontalSignageLegend 
+        extends AbstractVectorialLegend 
+        implements UrbanHorizontalSignageLegend //, IHasImageLegend 
+{
+    
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageLegend.class);
+
+    private final UrbanHorizontalSignageSymbol defaultSymbol;
+    
+    private UrbanHorizontalSignageConfig config;
+    
+    private Image imageLegend;
+    
+    public DefaultUrbanHorizontalSignageLegend() {
+        
+        SymbologyManager symbologyManager = SymbologyLocator.getSymbologyManager();
+        this.defaultSymbol = new UrbanHorizontalSignageSymbol();
+        DefaultUrbanHorizontalSignageData data = new DefaultUrbanHorizontalSignageData();
+        data.setContinuity(UrbanHorizontalSignageData.CONTINUITY_MODE_DISC_CONT);
+        this.defaultSymbol.setData(new DefaultUrbanHorizontalSignageData());
+        
+        this.config = new DefaultUrbanHorizontalSignageConfig();
+    }
+
+    @Override
+    public ISymbol getDefaultSymbol() {
+        return this.defaultSymbol;
+    }
+
+    @Override
+    public void setDefaultSymbol(ISymbol is) {
+        //DO NOTHING
+    }
+
+    @Override
+    public ISymbol getSymbolByFeature(Feature ftr) throws MapContextException {
+
+        UrbanHorizontalSignageData values = this.getConfig().getValues(ftr);
+
+        UrbanHorizontalSignageSymbol symbol = new UrbanHorizontalSignageSymbol();
+        symbol.setData(values);
+        return symbol;
+    }
+
+    @Override
+    public int getShapeType() {
+        return Geometry.TYPES.CURVE;
+    }
+
+    @Override
+    public void setShapeType(int i) {
+    }
+
+    @Override
+    public boolean isUseDefaultSymbol() {
+        return true;
+    }
+
+    @Override
+    public void useDefaultSymbol(boolean bln) {
+    }
+
+    @Override
+    public boolean isSuitableForShapeType(int shapeType) {
+        return (GeometryUtils.isSubtype(Geometry.TYPES.CURVE, shapeType) ||  
+            GeometryUtils.isSubtype(Geometry.TYPES.MULTICURVE, shapeType));
+    }
+
+    @Override
+    public void loadFromState(PersistentState state) throws PersistenceException {
+//        this.defaultSymbol = new SimpleTextSymbol();
+        this.imageLegend = null;
+
+        super.loadFromState(state);
+        this.config = (UrbanHorizontalSignageConfig) state.get("config");
+        if(this.config == null){
+            this.config = new DefaultUrbanHorizontalSignageConfig();
+        }
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set("config", this.getConfig());
+    }
+
+    @Override
+    protected String[] getRequiredFeatureAttributeNames(FeatureStore fs) throws DataException {
+        List<String> names = new ArrayList<>(10);
+        UrbanHorizontalSignageConfig theConfig = this.getConfig();
+        
+        String name = theConfig.getWidthFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getContinuityFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getHolesLengthFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getHolesColorFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getPaintHolesFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getPaintHolesFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getSegmentsLengthFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getSegmentsColorFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = theConfig.getRoundVertexFieldName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        name = fs.getDefaultFeatureType().getDefaultGeometryAttributeName();
+        if( StringUtils.isNotBlank(name) ) {
+            names.add(name);
+        }
+        return names.toArray(new String[names.size()]);
+    }
+
+    @Override
+    public UrbanHorizontalSignageConfig getConfig() {
+        return config;
+    }
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/UrbanHorizontalSignageSymbol.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/UrbanHorizontalSignageSymbol.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/linelegend/UrbanHorizontalSignageSymbol.java	(revision 5837)
@@ -0,0 +1,437 @@
+/**
+ * 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.legend.urbanhorizontalsignage.lib.impl.linelegend;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.util.concurrent.Callable;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.geom.aggregate.MultiPolygon;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.geom.primitive.Line;
+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.ISymbol_v2;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolDrawingException;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_CONT_DISC;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC_CONT;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData.CONTINUITY_MODE_DISC_DISC;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.AbstractSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.impl.CartographicSupportToolkit;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.tools.swing.api.TransparencySupport;
+import org.gvsig.tools.task.Cancellable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UrbanHorizontalSignageSymbol extends AbstractSymbol implements ISymbol_v2, TransparencySupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(UrbanHorizontalSignageSymbol.class);
+    private static final String SYMBOL_NAME = "UrbanHorizontalSignageSymbol";
+    private static final String URBAN_HORIZONTAL_SIGNAGE_SYMBOL_PERSISTENCE_DEFINITION_NAME = "UrbanHorizontalSignageSymbol";
+    
+    private static final String FIELD_WIDTH = "width";
+    private static final String FIELD_CONTINUITY = "continuity";
+    private static final String FIELD_SEGMENTS_COLOR = "segmentsColor";
+    private static final String FIELD_SEGMENTS_LENGTH = "segmentsLength";
+    private static final String FIELD_HOLES_COLOR = "holesColor";
+    private static final String FIELD_HOLES_LENGTH = "holesLength";
+    private static final String FIELD_PAINT_HOLES = "paintHoles";
+    private static final String FIELD_GAP_WIDTH = "gapWidth";
+    private static final String FIELD_ROUND_VERTEX = "roundVertex";
+    private static final String FIELD_SEGMENTS_GEOMETRY = "segmentsGeometry";
+    private static final String FIELD_HOLES_GEOMETRY = "holesGeometry";
+    private static final String FIELD_TRANSPARENCY = "transparency";
+    private static final String FIELD_MUST_DRAW_ORIGINAL_GEOMETRY = "mustDrawOriginalGeometry";
+    private static final String FIELD_COLOR_FOR_ORIGINAL_GEOMETRY = "colorForOriginalGeometry";
+    
+
+
+//    private static final String FIELD_SYMBOL_FOR_SELECTION = "symbolForSelection";
+    private UrbanHorizontalSignageData data;
+
+    transient private UrbanHorizontalSignageSymbol symbolForSelection;
+    
+    private boolean mustDrawOriginalGeometry;
+    private Color colorForOriginalGeometry;
+    private double cartographicSize;
+    private double transparency; //[0.0, 1.0]
+
+    public UrbanHorizontalSignageSymbol() {
+        super();
+        this.mustDrawOriginalGeometry = false;
+        this.transparency = 1.0;
+    }
+
+    public void setData(UrbanHorizontalSignageData data) {
+        this.data = data;
+    }
+
+    public UrbanHorizontalSignageData getData() {
+        return data;
+    }
+
+    /**
+     * Sets the transparency for symbol. The valid values are in [0.0, 1.0]
+     * 
+     * @param transparency 
+     */
+    @Override
+    public void setTransparency(double transparency) {
+        if(transparency < 0 || transparency > 1.0){
+            throw new IllegalArgumentException("Transparency value must be in [0.0, 1.0] ("+transparency+")");
+        }
+        this.transparency = transparency;
+    }
+
+    @Override
+    public double getTransparency() {
+        return transparency;
+    }
+    
+    @Override
+    public ISymbol getSymbolForSelection() {
+        if (symbolForSelection == null) {
+            symbolForSelection = (UrbanHorizontalSignageSymbol) cloneForSelection();
+            symbolForSelection.mustDrawOriginalGeometry = true;
+        } else {
+            symbolForSelection.setColor(MapContext.getSelectionColor());
+        }
+        return symbolForSelection;
+    }
+
+    @Override
+    public void draw(Graphics2D g, AffineTransform affineTransform,
+            Geometry originalGeometry, Feature feature, Cancellable cancel) {
+        
+        if (true) {
+            // Esto deberia ser para optimizar el pintado de 
+            // geometrias grandes.
+            try {
+                Geometry env = originalGeometry.getEnvelope().getGeometry();
+                env.transform(affineTransform);
+                Envelope env2 = env.getEnvelope();
+                if (env2.getLength(0) < 1.5 && env2.getLength(1) < 1.5) {
+                    Color color = data.getSegmentsColor();
+                    Color transparentColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), (int)(transparency*color.getAlpha()));
+                    g.setColor(transparentColor);
+                    Point upperCorner = env2.getUpperCorner();
+                    int x = (int) upperCorner.getX();
+                    int y = (int) upperCorner.getY();
+                    g.drawLine(x, y, x, y);
+                    return;
+                }
+            } catch (Exception ex) {
+                LOG.warn("Error optimizing the drawing of the geometry. Continues with normal drawing.", ex);
+                // Do nothing, continue with the draw of the original geometry
+            }
+        }
+
+        UrbanHorizontalSignageManager uhsManager = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        uhsManager.calculateGeometries(originalGeometry, data);
+        
+        MultiPolygon geom = data.getSegmentsGeometry();
+        if (geom != null && geom.getPrimitivesNumber() > 0) {
+            Color color = data.getSegmentsColor();
+            Color transparentColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), (int)(transparency*color.getAlpha()));
+            g.setColor(transparentColor);
+            g.fill(geom.getShape(affineTransform));
+        }
+
+        switch (data.getContinuity()) {
+            case CONTINUITY_MODE_CONT_DISC:
+            case CONTINUITY_MODE_DISC_CONT:
+            case CONTINUITY_MODE_DISC:
+            case CONTINUITY_MODE_DISC_DISC:
+                if (data.isPaintHoles()) {
+                    geom = data.getHolesGeometry();
+                    if (geom != null && geom.getPrimitivesNumber() > 0) {
+                        Color color = data.getHolesColor();
+                        Color transparentColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), (int)(transparency*color.getAlpha()));
+                        g.setColor(transparentColor);
+                        g.fill(geom.getShape(affineTransform));
+                    }
+                }
+        }
+
+        //For debug purposse only
+        if(mustDrawOriginalGeometry){
+            g.setColor(getColor());
+            g.draw(originalGeometry.getShape(affineTransform));
+        }
+
+    }
+
+    @Override
+    public int getOnePointRgb() {
+        return data.getSegmentsColor().getRGB();
+    }
+
+    @Override
+    public void drawInsideRectangle(Graphics2D g,
+            AffineTransform scaleInstance, Rectangle r, PrintAttributes properties) throws SymbolDrawingException {
+        
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        
+        final int hGap = (int) (r.getWidth() * 0.1); // the left and right margins
+        final int vPos = 1; 						 // the top and bottom margins
+        final int splitCount = 3; 					 // number of lines
+        final int splitHSize = (r.width - hGap - hGap) / splitCount;
+        int hPos = hGap;
+        boolean swap = false;
+
+        Line geom = GeometryUtils.createLine(Geometry.SUBTYPES.GEOM2D);
+        geom.addVertex(r.x + hPos, r.y + r.height - vPos);
+
+        for (int i = 0; i < splitCount; i++) {
+            swap = !swap;
+            geom.addVertex(r.x + hPos + splitHSize, (swap ? vPos : r.height - vPos) + r.y);
+            hPos += splitHSize;
+        }
+
+        try {
+            if (properties == null) {
+                draw(g, new AffineTransform(), geom, null, null);
+            } else {
+                print(g, new AffineTransform(), geom, properties);
+            }
+        } catch (Exception e) {
+            throw new SymbolDrawingException(SymbolDrawingException.UNSUPPORTED_SET_OF_SETTINGS);
+        }
+
+    }
+
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+        UrbanHorizontalSignageSymbol copy = (UrbanHorizontalSignageSymbol) super.clone();
+
+        if (symbolForSelection != null) {
+            copy.symbolForSelection = (UrbanHorizontalSignageSymbol) symbolForSelection
+                    .clone();
+        }
+
+        return copy;
+    }
+
+    @Override
+    public void loadFromState(PersistentState state) throws PersistenceException {
+        // Set parent style properties
+        super.loadFromState(state);
+        
+        UrbanHorizontalSignageData data = new DefaultUrbanHorizontalSignageData();
+        data.setWidth(state.getDouble(FIELD_WIDTH, UrbanHorizontalSignageData.DEFAULT_WIDTH_VALUE));
+        data.setContinuity(state.getInt(FIELD_CONTINUITY, UrbanHorizontalSignageData.DEFAULT_CONTINUITY_VALUE));
+        
+        Color color = (Color) state.get(FIELD_SEGMENTS_COLOR);
+        data.setSegmentsColor(color != null ? color : UrbanHorizontalSignageData.DEFAULT_SEGMENT_COLOR_VALUE);
+        
+        data.setSegmentsLength(state.getDouble(FIELD_SEGMENTS_LENGTH, UrbanHorizontalSignageData.DEFAULT_SEGMENT_LENGTH_VALUE));
+        
+        color = (Color) state.get(FIELD_HOLES_COLOR);
+        data.setHolesColor(color != null ? color : UrbanHorizontalSignageData.DEFAULT_HOLES_COLOR_VALUE);
+        
+        data.setHolesLength(state.getDouble(FIELD_HOLES_LENGTH, UrbanHorizontalSignageData.DEFAULT_HOLES_LENGTH_VALUE));
+        data.setGapWidth(state.getDouble(FIELD_GAP_WIDTH, UrbanHorizontalSignageData.DEFAULT_GAP_WIDTH_VALUE));
+        data.setRoundVertex(state.getBoolean(FIELD_ROUND_VERTEX, UrbanHorizontalSignageData.DEFAULT_ROUND_VERTEX_VALUE));
+        
+        this.transparency = state.getDouble(FIELD_TRANSPARENCY, 1.0);
+        this.mustDrawOriginalGeometry = state.getBoolean(FIELD_MUST_DRAW_ORIGINAL_GEOMETRY, false);
+        color = (Color) state.get(FIELD_COLOR_FOR_ORIGINAL_GEOMETRY);
+        this.colorForOriginalGeometry = color != null ? color : MapContext.getSelectionColor();
+        this.data = data;
+
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        // Save parent fill symbol properties
+        super.saveToState(state);
+
+        // Save own properties
+        
+        if(data != null){
+            state.set(FIELD_WIDTH, data.getWidth());
+            state.set(FIELD_CONTINUITY, data.getContinuity());
+            state.set(FIELD_SEGMENTS_COLOR, data.getSegmentsColor());
+            state.set(FIELD_SEGMENTS_LENGTH, data.getSegmentsLength());
+            state.set(FIELD_HOLES_COLOR, data.getHolesColor());
+            state.set(FIELD_HOLES_LENGTH, data.getHolesLength());
+            state.set(FIELD_PAINT_HOLES, data.isPaintHoles());
+            state.set(FIELD_GAP_WIDTH, data.getGapWidth());
+            state.set(FIELD_ROUND_VERTEX, data.isRoundVertex());
+        }
+        state.set(FIELD_MUST_DRAW_ORIGINAL_GEOMETRY, mustDrawOriginalGeometry);
+        state.set(FIELD_COLOR_FOR_ORIGINAL_GEOMETRY, colorForOriginalGeometry);
+        state.set(FIELD_TRANSPARENCY, this.getTransparency());
+    }
+
+    @Override
+    public void getPixExtentPlus(Geometry geom, float[] distances, ViewPort viewPort, int dpi) {
+        float cs = (float) getCartographicSize(viewPort, dpi, geom);
+        // TODO and add the line offset
+        distances[0] = cs;
+        distances[1] = cs;
+    }
+
+    @Override
+    public int getSymbolType() {
+        return Geometry.TYPES.CURVE;
+    }
+
+    @Override
+    public boolean isSuitableFor(Geometry geom) {
+        return geom.getGeometryType().isTypeOf(Geometry.TYPES.CURVE);
+    }
+
+    @Override
+    public Color getColor() {
+        return this.colorForOriginalGeometry;
+    }
+
+    @Override
+    public void setColor(Color color) {
+        this.colorForOriginalGeometry = color;
+    }
+
+    @Override
+    public void print(Graphics2D g, AffineTransform at, Geometry shape, PrintAttributes properties) {
+        draw(g, at, shape, null, null);
+//		double originalSize = getLineWidth();
+//		double size=originalSize;
+//		// scale it to size
+//		int pq = properties.getPrintQuality();
+//		if (pq == PrintAttributes.PRINT_QUALITY_NORMAL){
+//			size *= (double) 300/72;
+//		}else if (pq == PrintAttributes.PRINT_QUALITY_HIGH){
+//			size *= (double) 600/72;
+//		}else if (pq == PrintAttributes.PRINT_QUALITY_DRAFT){
+//			// size *= 72/72; // (which is the same than doing nothing)
+//		}
+//		setLineWidth(size);
+//		draw(g,at,geom,null, null);
+//		setLineWidth(originalSize);
+    }
+
+    @Override
+    public double toCartographicSize(ViewPort viewPort, double dpi, Geometry geom) {
+        double oldSize = getData().getWidth();
+        setCartographicSize(getCartographicSize(
+                viewPort,
+                dpi,
+                geom),
+                geom);
+        return oldSize;
+
+//        return 0;
+    }
+
+    @Override
+    public void setCartographicSize(double cartographicSize, Geometry geom) {
+        //DO NOTHING
+        this.getData().setWidth(cartographicSize);
+    }
+
+    @Override
+    public double getCartographicSize(ViewPort viewPort, double dpi, Geometry geom) {
+        return CartographicSupportToolkit.getCartographicLength(
+                this,
+                getData().getWidth(),
+                viewPort,
+                dpi
+        );
+
+//        return 0;
+    }
+
+//    public static class RegisterPersistence implements Callable {
+//
+//        @Override
+//        public Object call() throws Exception {
+//            PersistenceManager manager = ToolsLocator.getPersistenceManager();
+//            if (manager.getDefinition(URBAN_HORIZONTAL_SIGNAGE_SYMBOL_PERSISTENCE_DEFINITION_NAME) == null) {
+//                DynStruct definition = manager.addDefinition(
+//                        UrbanHorizontalSignageSymbol.class,
+//                        URBAN_HORIZONTAL_SIGNAGE_SYMBOL_PERSISTENCE_DEFINITION_NAME,
+//                        URBAN_HORIZONTAL_SIGNAGE_SYMBOL_PERSISTENCE_DEFINITION_NAME + " Persistence definition",
+//                        null,
+//                        null
+//                );
+//                // Extend the LineSymbol base definition
+//                definition.extend(manager.getDefinition(AbstractSymbol.SYMBOL_PERSISTENCE_DEFINITION_NAME));
+//                
+//                definition.addDynFieldDouble(FIELD_WIDTH).setMandatory(false);
+//                definition.addDynFieldInt(FIELD_CONTINUITY).setMandatory(false);
+//                definition.addDynFieldObject(FIELD_SEGMENTS_COLOR).setClassOfValue(Color.class).setMandatory(false);
+//                definition.addDynFieldDouble(FIELD_SEGMENTS_LENGTH).setMandatory(false);
+//                definition.addDynFieldObject(FIELD_HOLES_COLOR).setClassOfValue(Color.class).setMandatory(false);
+//                definition.addDynFieldDouble(FIELD_HOLES_LENGTH).setMandatory(false);
+//                definition.addDynFieldBoolean(FIELD_PAINT_HOLES).setMandatory(false);
+//                definition.addDynFieldDouble(FIELD_GAP_WIDTH).setMandatory(false);
+//                definition.addDynFieldBoolean(FIELD_ROUND_VERTEX).setMandatory(false);
+//                definition.addDynFieldDouble(FIELD_TRANSPARENCY).setMandatory(false);
+//                definition.addDynFieldBoolean(FIELD_MUST_DRAW_ORIGINAL_GEOMETRY).setMandatory(false);
+//                definition.addDynFieldObject(FIELD_COLOR_FOR_ORIGINAL_GEOMETRY).setClassOfValue(Color.class).setMandatory(false);
+//            }
+//            return Boolean.TRUE;
+//        }
+//
+//    }
+
+    public static class RegisterSymbol implements Callable {
+
+        @Override
+        public Object call() throws Exception {
+            int[] shapeTypes;
+            SymbolManager manager = MapContextLocator.getSymbolManager();
+
+            shapeTypes = new int[]{Geometry.TYPES.CURVE, Geometry.TYPES.ARC,
+                Geometry.TYPES.MULTICURVE, Geometry.TYPES.CIRCUMFERENCE,
+                Geometry.TYPES.PERIELLIPSE, Geometry.TYPES.SPLINE,
+                Geometry.TYPES.LINE, Geometry.TYPES.MULTILINE};
+            manager.registerSymbol(SYMBOL_NAME,
+                    shapeTypes,
+                    UrbanHorizontalSignageSymbol.class);
+
+            return Boolean.TRUE;
+        }
+
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/ImageMarkerSymbol.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/ImageMarkerSymbol.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/ImageMarkerSymbol.java	(revision 5837)
@@ -0,0 +1,318 @@
+package org.gvsig.legend.urbanverticalsignage.lib.impl;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.fmap.mapcontext.rendering.symbols.IMultiLayerSymbol;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.impl.AbstractLineSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.AbstractMarkerSymbol;
+import org.gvsig.tools.swing.api.TransparencySupport;
+import org.gvsig.tools.task.Cancellable;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class ImageMarkerSymbol extends AbstractMarkerSymbol implements  IMarkerSymbol, IMultiLayerSymbol, TransparencySupport {
+
+    private ImageMarkerSymbol selectionSym;
+    private boolean selected;
+    private BufferedImage image;
+    private BufferedImage imagesel;
+    private ISymbol[] layers;
+    
+    private static class ImageSymbol extends AbstractMarkerSymbol implements IMarkerSymbol {
+
+        private final ImageMarkerSymbol parent;
+
+        public ImageSymbol(ImageMarkerSymbol parent) {
+            this.parent = parent;
+        }
+        
+        @Override
+        public ISymbol getSymbolForSelection() {
+            return ((ImageMarkerSymbol)(this.parent.getSymbolForSelection())).getLayer(1);
+        }
+
+        @Override
+        public void draw(Graphics2D g, AffineTransform affineTransform, Geometry geom, Feature f, Cancellable cnclbl) {
+            Point p;
+            try {
+                p = geom.centroid();
+            } catch (Exception ex) {
+                return;
+            }
+            if (affineTransform != null) {
+                p.transform(affineTransform);
+            }
+            double x, y;
+            int size = (int) Math.round(this.parent.getEfectiveSize(f));
+            double halfSize = this.parent.getEfectiveSize(f) / 2;
+            x = p.getX() - halfSize;
+            y = p.getY() - halfSize;
+            Point2D theOffset = this.parent.getEfectiveOffset(f);
+            int xOffset = (int) theOffset.getX();
+            int yOffset = (int) theOffset.getY();
+
+            if (size > 0) {
+                Rectangle rect = new Rectangle(size, size);
+                g.translate(x + xOffset, y + yOffset);
+                double auxRotation = this.parent.getEfectiveRotationInRadians(f);
+                g.rotate(auxRotation, halfSize, halfSize);
+
+                this.parent.drawInsideRectangle(g, rect, true);
+
+                g.rotate(-auxRotation, halfSize, halfSize);
+                g.translate(-(x + xOffset), -(y + yOffset));
+
+            }
+        }
+
+        @Override
+        public double toCartographicSize(ViewPort viewPort, double dpi, Geometry geom) {
+            return this.parent.toCartographicSize(viewPort, dpi, geom); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public void setCartographicSize(double cartographicSize, Geometry geom) {
+            this.parent.setCartographicSize(cartographicSize, geom); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public int getUnit() {
+            return this.parent.getUnit();
+        }
+
+    }
+
+    private static class LineSymbol extends AbstractLineSymbol implements ILineSymbol {
+        
+        private final ImageMarkerSymbol parent;
+
+        public LineSymbol(ImageMarkerSymbol parent) {
+            this.parent = parent;
+        }
+
+        @Override
+        public ISymbol getSymbolForSelection() {
+            return ((ImageMarkerSymbol)(this.parent.getSymbolForSelection())).getLayer(0);
+        }
+
+        @Override
+        public void draw(Graphics2D g, AffineTransform affineTransform, Geometry geom, Feature f, Cancellable cnclbl) {
+            Point p;
+            try {
+                p = geom.centroid();
+            } catch (Exception ex) {
+                return;
+            }
+            if (affineTransform != null) {
+                p.transform(affineTransform);
+            }
+            int size = (int) Math.round(this.parent.getEfectiveSize(f));
+            Point2D theOffset = this.parent.getEfectiveOffset(f);
+            int xOffset = (int) theOffset.getX();
+            int yOffset = (int) theOffset.getY();
+
+            if (size > 0) {
+                if (this.parent.isDrawLineToOffset()) {
+                    g.setColor(this.parent.getEfectiveLineToOffsetColor(f));
+                    g.drawLine((int) p.getX(), (int) p.getY(), (int) p.getX() + xOffset, (int) p.getY() + yOffset);
+                }
+            }
+        }
+
+        @Override
+        public void setLineWidth(double d) {
+        }
+
+        @Override
+        public double getLineWidth() {
+            return 1;
+        }
+
+        @Override
+        public double toCartographicSize(ViewPort viewPort, double dpi, Geometry geom) {
+            return this.parent.toCartographicSize(viewPort, dpi, geom); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public void setCartographicSize(double cartographicSize, Geometry geom) {
+            this.parent.setCartographicSize(cartographicSize, geom); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public int getUnit() {
+            return this.parent.getUnit();
+        }
+        
+    }
+
+    public ImageMarkerSymbol() {
+        this.layers = new ISymbol[] {new LineSymbol(this), new ImageSymbol(this)};
+    }
+    
+    void setImage(BufferedImage img) {
+        this.image = img;
+    }
+    
+    void setImageSel(BufferedImage img) {
+        this.imagesel = img;
+    }
+    
+    @Override
+    public void draw(Graphics2D g, AffineTransform affineTransform, Geometry geom, Feature f, Cancellable cancel) {
+        Point p;
+        try {
+            p = geom.centroid();
+        } catch (Exception ex) {
+            return;
+        }
+        if (affineTransform != null) {
+            p.transform(affineTransform);
+        }
+        double x, y;
+        int size = (int) Math.round(getEfectiveSize(f));
+        double halfSize = getEfectiveSize(f) / 2;
+        x = p.getX() - halfSize;
+        y = p.getY() - halfSize;
+        Point2D theOffset = this.getEfectiveOffset(f);
+        int xOffset = (int) theOffset.getX();
+        int yOffset = (int) theOffset.getY();
+
+        if (size > 0) {
+            if( isDrawLineToOffset() ) {
+                g.setColor(this.getEfectiveLineToOffsetColor(f));
+                g.drawLine((int)p.getX(), (int)p.getY(), (int)p.getX() + xOffset, (int)p.getY() + yOffset);
+            }
+            Rectangle rect = new Rectangle(size, size);
+            g.translate(x + xOffset, y + yOffset);
+            double auxRotation = getEfectiveRotationInRadians(f);
+            g.rotate(auxRotation, halfSize, halfSize);
+            
+            this.drawInsideRectangle(g, rect, true);
+            
+            g.rotate(-auxRotation, halfSize, halfSize);
+            g.translate(-(x + xOffset), -(y + yOffset));
+            
+        }
+    }
+
+    private void drawInsideRectangle(Graphics2D g, Rectangle r, boolean keepAspectRatio) {
+        BufferedImage theImage = (!selected) ? this.image : this.imagesel;
+        if (theImage != null) {
+
+            double xOffset = 0;
+            double yOffset = 0;
+            @SuppressWarnings("UnusedAssignment")
+            double xScale = 1;
+            @SuppressWarnings("UnusedAssignment")
+            double yScale = 1;
+            if (keepAspectRatio) {
+                double scale;
+                if (theImage.getWidth() > theImage.getHeight()) {
+                    scale = r.getWidth() / theImage.getWidth();
+                    yOffset = 0.5 * (r.getHeight() - theImage.getHeight() * scale);
+                } else {
+                    scale = r.getHeight() / theImage.getHeight();
+                    xOffset = 0.5 * (r.getWidth() - theImage.getWidth() * scale);
+                }
+                xScale = yScale = scale;
+
+            } else {
+                xScale = r.getWidth() / theImage.getWidth();
+                yScale = r.getHeight() / theImage.getHeight();
+                yOffset = theImage.getHeight() * 0.5 * yScale;
+
+            }
+
+            AffineTransform at = AffineTransform.getTranslateInstance(xOffset, yOffset);
+            at.concatenate(AffineTransform.getScaleInstance(xScale, yScale));
+            g.drawRenderedImage(theImage, at);
+        }
+        
+    }
+    
+    
+    @Override
+    public ISymbol getSymbolForSelection() {
+        if (selectionSym == null) {
+            try {
+                selectionSym = (ImageMarkerSymbol) this.clone();
+            } catch (CloneNotSupportedException e) {
+//                LOG.warn("Error creating the selection symbol for the symbol "+ this, e);
+            }
+            selectionSym.selected = true;
+            selectionSym.selectionSym = selectionSym; // avoid too much lazy creations
+        } else {
+            selectionSym.setColor(MapContext.getSelectionColor());
+        }
+        return selectionSym;
+    }
+
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+        ImageMarkerSymbol copy = (ImageMarkerSymbol) super.clone();
+        copy.layers = new ISymbol[] {new LineSymbol(copy), new ImageSymbol(copy)};
+
+        return copy;
+    }
+
+    @Override
+    public void setTransparency(double d) {
+    }
+
+    @Override
+    public double getTransparency() {
+        return 0;
+    }
+
+    @Override
+    public void setLayer(int i, ISymbol is) throws IndexOutOfBoundsException {
+    }
+
+    @Override
+    public void swapLayers(int i, int i1) {
+    }
+
+    @Override
+    public ISymbol getLayer(int i) {
+        return getLayers()[i];
+    }
+
+    @Override
+    public int getLayerCount() {
+        return 2;
+    }
+
+    @Override
+    public void addLayer(ISymbol is) {
+    }
+
+    @Override
+    public void addLayer(ISymbol is, int i) throws IndexOutOfBoundsException {
+    }
+
+    @Override
+    public boolean removeLayer(ISymbol is) {
+        return false;
+    }
+
+    public ISymbol[] getLayers() {
+        return layers;
+    }
+    
+    
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/DefaultPictureMarkerSymbolTableLegend.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/DefaultPictureMarkerSymbolTableLegend.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/lib/impl/DefaultPictureMarkerSymbolTableLegend.java	(revision 5837)
@@ -0,0 +1,573 @@
+package org.gvsig.legend.urbanverticalsignage.lib.impl;
+
+import java.awt.Color;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.processing.SupportedSourceVersion;
+import javax.lang.model.SourceVersion;
+import org.apache.commons.collections4.map.LRUMap;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.expressionevaluator.ExpressionBuilder;
+import org.gvsig.expressionevaluator.ExpressionUtils;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataTypes;
+import org.gvsig.fmap.dal.StoresRepository;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.mapcontext.MapContextException;
+import org.gvsig.fmap.mapcontext.rendering.legend.ZSort;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.IntervalLegendEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.LabelLegendEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendChangedEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendClearEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.SymbolLegendEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.ValueLegendEvent;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.symbology.SymbologyManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractVectorialLegend;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.ISimpleMarkerSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dataTypes.Coercion;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.tools.swing.api.SimpleImage;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SupportedSourceVersion(SourceVersion.RELEASE_8)
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultPictureMarkerSymbolTableLegend 
+        extends AbstractVectorialLegend 
+        implements PictureMarkerSymbolTableLegend 
+{
+    
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultPictureMarkerSymbolTableLegend.class);
+
+    private static final int IMAGESCACHE_SIZE = 100;
+    
+    /** 
+     * defaultSimbol no se usa para nada. 
+     * Lo inicializamos en el constructor a SimpleMarkerSymbol por si a caso 
+     * alguien lo consulta, por ejemplo al persistir el ImageMarkerSimbol.
+     */
+    transient private final ISimpleMarkerSymbol defaultSymbol;
+    
+    transient private final Coercion toColor;
+    transient private FeatureStore imagesStore;
+    transient private ExpressionBuilder expressionBuilder;
+    transient private final LRUMap<Object, BufferedImage[]> imagesCache;
+    
+    private double size;
+    private int units;
+    private Color lineToOffsetColor;
+    private boolean drawLineToOffset;
+
+    private String classifyingFieldName;
+    private String offsetXFieldName;
+    private String offsetYFieldName;
+    private String rotationFieldName;
+    private String lineToOffsetColorFieldlName;
+
+    private String imagesTableName;
+    private String imagesTableClassifyingFieldName;
+    private String imageFieldName;
+    private String imageSelectedFieldName;
+    private SimpleImage imageNotFound;
+    
+    private class MyZSort extends ZSort {
+        
+	public MyZSort() {
+		super();
+	}
+
+        @Override
+	public void legendChanged(LegendChangedEvent e) throws MapContextException {
+//		symbols.clear();
+//		usingZSort = false;
+//		initialize(e.getNewLegend());
+
+	}
+
+        @Override
+	public String getClassName() {
+		return getClass().getName();
+	}
+
+        @Override
+	public int getLevelCount() {
+		return 2;
+	}
+
+        @Override
+	public void setUsingZSort(boolean usingZSort) {
+	}
+
+        @Override
+	public void setLevels(ISymbol sym, int[] values) {
+	}
+
+        @Override
+	public void setLevels(int row, int[] values) {
+	}
+
+        @Override
+	public int[] getLevels(ISymbol sym) {
+		return new int[]{0,1};
+	}
+
+        @Override
+	public int[] getLevels(int row) {
+		return null;
+	}
+
+        @Override
+	public boolean isUsingZSort() {
+		return true;
+	}
+
+        @Override
+	public ISymbol[] getSymbols() {
+		return null;
+	}
+
+        @Override
+	public String[] getDescriptions() {
+            return new String[] {"line", "Image"};
+	}
+
+        @Override
+	public int getTopLevelIndexAllowed() {
+		return 0;
+	}
+
+        @Override
+	public String toString() {
+            return "Line, Image";
+	}
+
+        @Override
+	public boolean symbolChanged(SymbolLegendEvent e) {
+		return true;
+	}
+
+        @Override
+	public boolean classifiedSymbolChange(SymbolLegendEvent e) {
+		return true;
+	}
+
+        @Override
+	public boolean intervalChange(IntervalLegendEvent e) {
+		return false;
+	}
+
+        @Override
+	public boolean valueChange(ValueLegendEvent e) {
+		return false;
+	}
+
+	// TODO should not exist here
+        @Override
+	public boolean labelFieldChange(LabelLegendEvent e) {
+		return false;
+	}
+
+        @Override
+	public void legendCleared(LegendClearEvent event) {
+	}
+        
+    }
+    
+    public DefaultPictureMarkerSymbolTableLegend() {
+        
+        SymbologyManager symbologyManager = SymbologyLocator.getSymbologyManager();
+        this.defaultSymbol = symbologyManager.createSimpleMarkerSymbol();
+        this.toColor = ToolsLocator.getDataTypesManager().getCoercion(DataTypes.COLOR);
+        this.size = DEFAULT_IMAGE_SIZE;
+        this.drawLineToOffset = true;
+        this.lineToOffsetColor = Color.DARK_GRAY;
+        this.imagesCache = new LRUMap<>(IMAGESCACHE_SIZE);
+        this.setZSort(new MyZSort());
+    }
+
+    @Override
+    public ISymbol getDefaultSymbol() {
+        return this.defaultSymbol;
+    }
+
+    @Override
+    public void setDefaultSymbol(ISymbol is) {
+        //DO NOTHING
+    }
+
+    private Color getColor(Feature feature, String attrname, Color defaultValue) {
+        if( StringUtils.isBlank(attrname) ) {
+            return defaultValue;
+        }
+        try {
+            return (Color) toColor.coerce(feature.get(attrname));
+        } catch(Exception ex) {
+            return defaultValue;
+        }
+    }
+    
+    @Override
+    public ISymbol getSymbolByFeature(Feature feature) throws MapContextException {
+        ImageMarkerSymbol symbol = new ImageMarkerSymbol();
+        
+        Point2D.Double offset = new Point2D.Double(0,0);
+        if( StringUtils.isNotBlank(this.offsetXFieldName)) {
+            offset.x = feature.getDouble(this.offsetXFieldName);
+        }
+        if( StringUtils.isNotBlank(this.offsetYFieldName)) {
+            offset.y = feature.getDouble(this.offsetYFieldName);
+        }
+        symbol.setOffset(offset);
+        
+        if( StringUtils.isNotBlank(this.rotationFieldName)) {
+            symbol.setRotation(feature.getDouble(this.rotationFieldName));
+        } else {
+            symbol.setRotation(0);
+        }
+        
+        if( drawLineToOffset && (offset.x!=0 || offset.y!=0))    {
+            symbol.setDrawLineToOffset(true);
+            symbol.setLineToOffsetColor(
+                    getColor(
+                            feature, 
+                            this.lineToOffsetColorFieldlName, 
+                            this.lineToOffsetColor
+                    )
+            );
+        } else {
+            symbol.setDrawLineToOffset(false);
+            symbol.setLineToOffsetColor(Color.DARK_GRAY);
+        }
+        symbol.setSize(this.size);
+        symbol.setUnit(this.units);
+        
+        Object classifyingValue = feature.get(this.classifyingFieldName);
+        BufferedImage[] images = this.getImages(classifyingValue);
+        symbol.setImage(images[0]);
+        symbol.setImageSel(images[1]);
+        return symbol;
+    }
+
+    @Override
+    public int getShapeType() {
+        return Geometry.TYPES.POINT;
+    }
+
+    private BufferedImage[] getImages(Object classifyingValue) {
+        
+        BufferedImage[] images;
+        images = this.imagesCache.get(classifyingValue);
+        if( images!=null ) {
+            return images;
+        }
+        
+        images = new BufferedImage[] { null, null };        
+        try {
+            FeatureStore store = this.getImagesStore();
+            FeatureType featureType = store.getDefaultFeatureTypeQuietly();
+            FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(this.imagesTableClassifyingFieldName);
+            Object value = attr.coerce(classifyingValue);
+            ExpressionBuilder builder = this.getExpressionBuilder();
+            String filter = builder.eq(
+                    builder.column(this.imagesTableClassifyingFieldName),
+                    builder.constant(value)
+            ).toString();
+            Feature f = store.findFirst(filter);
+            if( f==null ) {
+                SimpleImage image = getImageNotFound();
+                images[0] = image.getBufferedImage();
+                images[1] = images[0];
+            } else {
+                SimpleImage image = (SimpleImage) f.getFromProfile(this.imageFieldName);
+                if( image != null ) {
+                    images[0] = image.getBufferedImage();
+                    images[1] = images[0];
+                }
+                image = (SimpleImage) f.getFromProfile(this.imageSelectedFieldName);
+                if( image != null && !image.isEmpty() ) {
+                    images[1] = image.getBufferedImage();
+                }
+            }
+        } catch(Exception ex) {
+            LOGGER.debug("Can't retrieve images from table '"+this.imagesTableName+"'", ex);
+        }
+        this.imagesCache.put(classifyingValue, images);
+        return images;
+    }
+    
+    private SimpleImage getImageNotFound() {
+        if(this.imageNotFound == null){
+            URL url = this.getClass().getResource("/images/picturemarkersymboltablelegend/image-not-found.png");
+            this.imageNotFound = ToolsSwingLocator.getToolsSwingManager().createSimpleImage(url);
+        }
+        return this.imageNotFound;
+    }
+    
+    private ExpressionBuilder getExpressionBuilder() {
+        if( this.expressionBuilder == null ) {
+            this.expressionBuilder = ExpressionUtils.createExpressionBuilder();
+        }
+        return this.expressionBuilder;
+    }
+    
+    private FeatureStore getImagesStore() {
+        if( this.imagesStore == null ) {
+            StoresRepository repository = DALLocator.getDataManager().getStoresRepository();
+            this.imagesStore = (FeatureStore) repository.getStore(this.imagesTableName);
+        }
+        return this.imagesStore;
+    }
+    
+    @Override
+    public void setShapeType(int i) {
+    }
+
+    @Override
+    public boolean isUseDefaultSymbol() {
+        return true;
+    }
+
+    @Override
+    public void useDefaultSymbol(boolean bln) {
+    }
+
+    @Override
+    public boolean isSuitableForShapeType(int shapeType) {
+        return GeometryUtils.isSubtype(Geometry.TYPES.POINT, shapeType);
+    }
+
+    @Override
+    public void loadFromState(PersistentState state) throws PersistenceException {
+        super.loadFromState(state);
+        
+        this.size = state.getDouble("size",DEFAULT_IMAGE_SIZE);
+        this.units = state.getInt("units",-1);
+        this.lineToOffsetColor = (Color) state.get("lineToOffsetColor");
+        this.drawLineToOffset = state.getBoolean("drawLineToOffset",true);
+        this.classifyingFieldName = state.getString("classifyingFieldName");
+        
+        this.offsetXFieldName = state.getString("offsetXFieldName");
+        this.offsetYFieldName = state.getString("offsetYFieldName");
+        this.rotationFieldName = state.getString("rotationFieldName");
+        this.lineToOffsetColorFieldlName = state.getString("lineToOffsetColorFieldlName");
+
+        this.imagesTableName = state.getString("imagesTableName");
+        this.imagesTableClassifyingFieldName = state.getString("imagesTableClassifyingFieldName");
+        this.imageFieldName = state.getString("imageFieldName");
+        this.imageSelectedFieldName = state.getString("imageSelectedFieldName");
+        
+        setZSort(new MyZSort());
+
+        
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        
+        state.set("size", this.size);
+        state.set("units", this.units);
+        state.set("lineToOffsetColor", this.lineToOffsetColor);
+        state.set("drawLineToOffset", this.drawLineToOffset);
+        state.set("classifyingFieldName", this.classifyingFieldName);
+
+        state.set("offsetXFieldName", this.offsetXFieldName);
+        state.set("offsetYFieldName", this.offsetYFieldName);
+        state.set("rotationFieldName", this.rotationFieldName);
+        state.set("lineToOffsetColorFieldlName", this.lineToOffsetColorFieldlName);
+
+        state.set("imagesTableName", this.imagesTableName);
+        state.set("imagesTableClassifyingFieldName", this.imagesTableClassifyingFieldName);
+        state.set("imageFieldName", this.imageFieldName);
+        state.set("imageSelectedFieldName", this.imageSelectedFieldName);
+        
+    }
+
+    @Override
+    protected String[] getRequiredFeatureAttributeNames(FeatureStore fs) throws DataException {
+        List<String> attributes = new ArrayList<>();
+        if( StringUtils.isNotBlank(this.classifyingFieldName)) {
+            attributes.add(this.classifyingFieldName);
+        }
+        if( StringUtils.isNotBlank(this.offsetXFieldName)) {
+            attributes.add(this.offsetXFieldName);
+        }
+        if( StringUtils.isNotBlank(this.offsetYFieldName)) {
+            attributes.add(this.offsetYFieldName);
+        }
+        if( StringUtils.isNotBlank(this.rotationFieldName)) {
+            attributes.add(this.rotationFieldName);
+        }
+        if( StringUtils.isNotBlank(this.lineToOffsetColorFieldlName)) {
+            attributes.add(this.lineToOffsetColorFieldlName);
+        }
+        attributes.add( fs.getDefaultFeatureType().getDefaultGeometryAttributeName() );
+        return attributes.toArray(new String[attributes.size()]);
+    }
+
+    @Override
+    public Color getDefaultLineToOffsetColor() {
+        return this.lineToOffsetColor;
+    }
+
+    @Override
+    public void setDefaultLineToOffsetColor(Color color) {
+        this.lineToOffsetColor = color;
+    }
+
+    @Override
+    public boolean isDrawLineToOffset() {
+        return this.drawLineToOffset;
+    }
+
+    @Override
+    public void setDrawLineToOffset(boolean drawLineToOffset) {
+        this.drawLineToOffset = drawLineToOffset;
+    }
+
+    @Override
+    public double getImageSize() {
+        return this.size;
+    }
+
+    @Override
+    public void setImageSize(double size) {
+        this.size = size;
+    }
+
+    @Override
+    public String getLineToOffsetColorFieldName() {
+        return this.lineToOffsetColorFieldlName;
+    }
+
+    @Override
+    public void setLineToOffsetColorFieldName(String fieldName) {
+        this.lineToOffsetColorFieldlName = fieldName;
+    }
+
+    @Override
+    public String getOffsetXFieldName() {
+        return this.offsetXFieldName;
+    }
+
+    @Override
+    public void setOffsetXFieldName(String fieldName) {
+        this.offsetXFieldName = fieldName;
+    }
+
+    @Override
+    public String getOffsetYFieldName() {
+        return this.offsetYFieldName;
+    }
+
+    @Override
+    public void setOffsetYFieldName(String fieldName) {
+        this.offsetYFieldName = fieldName;
+    }
+
+    @Override
+    public String getRotationFieldName() {
+        return this.rotationFieldName;
+    }
+
+    @Override
+    public void setRotationFieldName(String fieldName) {
+        this.rotationFieldName = fieldName;
+    }
+
+    @Override
+    public String getImagesTableName() {
+        return imagesTableName;
+    }
+
+    @Override
+    public void setImagesTableName(String imagesTableName) {
+        this.imagesTableName = imagesTableName;
+        this.imagesCache.clear();
+    }
+
+    @Override
+    public String getImageFieldName() {
+        return imageFieldName;
+    }
+
+    @Override
+    public void setImageFieldName(String imageFieldName) {
+        this.imageFieldName = imageFieldName;
+        this.imagesCache.clear();
+    }
+
+    @Override
+    public String getClassifyingFieldName() {
+        return classifyingFieldName;
+    }
+
+    @Override
+    public void setClassifyingFieldName(String classifyingFieldName) {
+        this.classifyingFieldName = classifyingFieldName;
+        this.imagesCache.clear();
+    }
+
+    @Override
+    public String getImageSelectedFieldName() {
+        return imageSelectedFieldName;
+    }
+
+    @Override
+    public void setImageSelectedFieldName(String imageSelectedFieldName) {
+        this.imageSelectedFieldName = imageSelectedFieldName;
+        this.imagesCache.clear();
+    }
+
+    @Override
+    public String getImagesTableClassifyingFieldName() {
+        return imagesTableClassifyingFieldName;
+    }
+
+    @Override
+    public void setImagesTableClassifyingFieldName(String imagesTableClassifyingFieldName) {
+        this.imagesTableClassifyingFieldName = imagesTableClassifyingFieldName;
+        this.imagesCache.clear();
+    }
+
+    @Override
+    public String[] getDescriptions() {
+        return new String[] { this.classifyingFieldName + "->" + this.imagesTableName};
+    }
+
+    @Override
+    public ISymbol[] getSymbols() {
+        return new ISymbol[] { this.defaultSymbol };
+    }
+
+    @Override
+    public Object[] getValues() {
+        return new Object[] { "" } ;
+    }
+
+    @Override
+    public int getUnits() {
+        return units;
+    }
+
+    @Override
+    public void setUnits(int units) {
+        this.units = units;
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/test/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/Test01CalculateGeometries.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/test/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/Test01CalculateGeometries.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/src/test/java/org/gvsig/legend/urbanhorizontalsignage/lib/impl/Test01CalculateGeometries.java	(revision 5837)
@@ -0,0 +1,99 @@
+package org.gvsig.legend.urbanhorizontalsignage.lib.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.impl.linelegend.SplittedLine;
+import java.util.List;
+import junit.framework.TestCase;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.geom.primitive.Line;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageData;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Test01CalculateGeometries extends TestCase {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(Test01CalculateGeometries.class);
+
+    public Test01CalculateGeometries(String testName) {
+        super(testName);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        new DefaultLibrariesInitializer().fullInitialize();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    // TODO add test methods here. The name must begin with 'test'. For example:
+    // public void testHello() {}
+    public void test01CalculateIntermediatePoint() {
+        final String testid = "calculateIntermediatePoint";
+        Point p1 = GeometryUtils.createPoint(0,0);
+        Point p2 = GeometryUtils.createPoint(10,0);
+              
+        DefaultUrbanHorizontalSignageManager uhsManager = (DefaultUrbanHorizontalSignageManager)UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+        try {
+            for (double lambda = 0; lambda <= 1; lambda += 0.1) {
+                Point intermediatePoint = uhsManager.calculateIntermediatePoint(p1, p2, lambda);
+                assertEquals(10*lambda, intermediatePoint.getCoordinateAt(0));
+                assertEquals(0.0, intermediatePoint.getCoordinateAt(1));
+            }
+        } catch (Exception ex) {
+            //TODO:
+            fail(ex.getMessage());
+        }
+        
+        
+    }
+    
+    public void test02SplitLine() throws Exception {
+        final String testid = "splitLine";
+        
+        Point p1 = GeometryUtils.createPoint(0,0);
+        Point p2 = GeometryUtils.createPoint(10,0);
+        Line line = GeometryUtils.createLine(p1, p2, 0);
+        
+        DefaultUrbanHorizontalSignageManager uhsManager = (DefaultUrbanHorizontalSignageManager)UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager();
+//        UrbanHorizontalSignageData data = uhsManager.createUrbanHorizontalSignageData();
+
+//        data.setWidth(20);
+//        data.setContinuity(UrbanHorizontalSignageData.DEFAULT_CONTINUITY_VALUE);
+//        data.setSegmentsLength(100);
+//        data.setHolesLength(50);
+//        data.setGapWith(10);
+//        data.setSegmentsColor(Color.RED);
+//        data.setHolesColor(Color.BLACK);
+//        data.setRoundVertex(false);
+//        data.setPaintHoles(true);
+        
+        SplittedLine splittedLine = uhsManager.splitLine(line, 1, 0.5);
+        
+        List<Line> segments = splittedLine.getSegments();
+        List<Line> holes = splittedLine.getHoles();
+        
+        assertEquals(7, segments.size());
+        assertEquals(6, holes.size());
+        
+        double x = 0;
+        for (Line segment : segments) {
+            assertEquals(x, segment.getVertex(0).getX());
+            assertEquals(x+1.0, segment.getVertex(1).getX());
+            x += 1.50;
+        }
+        x = 1.0;
+        for (Line hole : holes) {
+            assertEquals(x, hole.getVertex(0).getX());
+            assertEquals(x+0.5, hole.getVertex(1).getX());
+            x += 1.50;
+        }
+    }
+    
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl/pom.xml	(revision 5837)
@@ -0,0 +1,103 @@
+<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>
+    <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.impl</artifactId>
+    <name>org.gvsig.legend.urbanhorizontalsignage.lib.impl</name>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib</artifactId>
+        <version>1.0.15</version>
+    </parent>
+    <groupId>org.gvsig</groupId>
+    <dependencies>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.api</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.symbology.lib.impl</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.ui</artifactId>
+            <scope>compile</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+<!--
+            <artifactId>${org.gvsig.h2spatial.provider}</artifactId>
+-->
+            <artifactId>org.gvsig.h2spatial.h2gis132.provider</artifactId>
+            
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>${org.gvsig.fmap.geometry.impl}</artifactId>
+            <scope>test</scope>
+        </dependency>    
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.expressionevaluator.lib.impl</artifactId>
+            <scope>test</scope>
+        </dependency>    
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.expressionevaluator.geometry.lib.impl</artifactId>
+            <scope>test</scope>
+        </dependency>    
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>${org.gvsig.proj.lib.impl}</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.compat.se</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.metadata.lib.basic.impl</artifactId>
+            <scope>test</scope>
+        </dependency>      
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.file.csv</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.tools.util.impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.tools.swing.impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.db.jdbc</artifactId>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/org.gvsig.legend.urbanhorizontalsignage.lib.impl
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.lib/pom.xml	(revision 5837)
@@ -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.legend.urbanhorizontalsignage</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib</artifactId>
+  <packaging>pom</packaging>
+  <modules>
+    <module>org.gvsig.legend.urbanhorizontalsignage.lib.api</module>
+    <module>org.gvsig.legend.urbanhorizontalsignage.lib.impl</module>
+  </modules>
+</project>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 5837)
@@ -0,0 +1 @@
+org.gvsig.legend.urbanhorizontalsignage.swing.impl.UrbanHorizontalSignageLegendSwingLibrary
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.xml	(revision 5837)
@@ -0,0 +1,1273 @@
+<?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/fdiaz/projects/gvSIG/org.gvsig.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/DefaultUrbanHorizontalSignageConfigPanelView.xml</at>
+   <at name="rowspecs">CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,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">lblWidthField</at>
+            <at name="width">152</at>
+            <at name="text">_Width_field</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">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">lblContinuityField</at>
+            <at name="width">152</at>
+            <at name="text">_Continuity_field</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">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.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">lblSegmentsColorField</at>
+            <at name="width">152</at>
+            <at name="text">_Segments_color_field</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">2</at>
+           <at name="row">10</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">lblSegmentsLengthField</at>
+            <at name="width">152</at>
+            <at name="text">_Segments_length_field</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">2</at>
+           <at name="row">12</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">lblPaintHolesField</at>
+            <at name="width">152</at>
+            <at name="text">_Paint_holes_field</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">2</at>
+           <at name="row">14</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">lblHolesColorField</at>
+            <at name="width">152</at>
+            <at name="text">_Holes_color_field</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">2</at>
+           <at name="row">16</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">lblHolesLengthField</at>
+            <at name="width">152</at>
+            <at name="text">_Holes_length_field</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">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">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">lblGapWidth</at>
+            <at name="width">152</at>
+            <at name="text">_Gap_width_between_lines</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">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.JSpinner</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JSpinner</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="name">spnGapWith</at>
+            <at name="width">1092</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">2</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.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">cboWidthFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">16</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.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">cboHolesLengthFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">14</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.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">cboHolesColorFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">12</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.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">cboPaintHolesFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">10</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.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">cboSegmentsLengthFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">8</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.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">cboSegmentsColorFields</at>
+            <at name="width">1120</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">4</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.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">cboContinuityFields</at>
+            <at name="width">1120</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">4</at>
+           <at name="row">18</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.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">cboRoundVertexFields</at>
+            <at name="width">1120</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">2</at>
+           <at name="row">18</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">lblRoundVertexField</at>
+            <at name="width">152</at>
+            <at name="text">_Round_vertex_field</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">6</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">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">lblCm</at>
+            <at name="width">17</at>
+            <at name="text">cm</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="19">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="4">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="5">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="6">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="7">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="8">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="9">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="10">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="11">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="12">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="13">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="14">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="15">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="16">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="17">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="18">
+        <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>
+</object>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.xml	(revision 5837)
@@ -0,0 +1,202 @@
+<?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/fdiaz/projects/gvSIG/org.gvsig.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/DefaultUrbanHorizontalSignageLegendEditorView.xml</at>
+   <at name="rowspecs">CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU: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.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.A6861c8f5U17a7a49ddb8PM7ff3</at>
+        <at name="rowspecs">FILL:4DLU:GROW(1.0)</at>
+        <at name="colspecs">FILL:8DLU:GROW(1.0)</at>
+        <at name="components">
+         <object classname="java.util.LinkedList"/>
+        </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">grdConfig</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>
+             </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="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>
+      </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.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanelView.java	(revision 5837)
@@ -0,0 +1,216 @@
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend;
+
+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.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+
+
+public class DefaultUrbanHorizontalSignageConfigPanelView extends JPanel
+{
+   JLabel lblWidthField = new JLabel();
+   JLabel lblContinuityField = new JLabel();
+   JLabel lblSegmentsColorField = new JLabel();
+   JLabel lblSegmentsLengthField = new JLabel();
+   JLabel lblPaintHolesField = new JLabel();
+   JLabel lblHolesColorField = new JLabel();
+   JLabel lblHolesLengthField = new JLabel();
+   JLabel lblGapWidth = new JLabel();
+   JSpinner spnGapWith = new JSpinner();
+   JComboBox cboWidthFields = new JComboBox();
+   JComboBox cboHolesLengthFields = new JComboBox();
+   JComboBox cboHolesColorFields = new JComboBox();
+   JComboBox cboPaintHolesFields = new JComboBox();
+   JComboBox cboSegmentsLengthFields = new JComboBox();
+   JComboBox cboSegmentsColorFields = new JComboBox();
+   JComboBox cboContinuityFields = new JComboBox();
+   JComboBox cboRoundVertexFields = new JComboBox();
+   JLabel lblRoundVertexField = new JLabel();
+   JLabel lblCm = new JLabel();
+
+   /**
+    * Default constructor
+    */
+   public DefaultUrbanHorizontalSignageConfigPanelView()
+   {
+      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,FILL:DEFAULT:NONE,FILL:4DLU:NONE","CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblWidthField.setName("lblWidthField");
+      lblWidthField.setText("_Width_field");
+      jpanel1.add(lblWidthField,cc.xy(2,2));
+
+      lblContinuityField.setName("lblContinuityField");
+      lblContinuityField.setText("_Continuity_field");
+      jpanel1.add(lblContinuityField,cc.xy(2,4));
+
+      lblSegmentsColorField.setName("lblSegmentsColorField");
+      lblSegmentsColorField.setText("_Segments_color_field");
+      jpanel1.add(lblSegmentsColorField,cc.xy(2,8));
+
+      lblSegmentsLengthField.setName("lblSegmentsLengthField");
+      lblSegmentsLengthField.setText("_Segments_length_field");
+      jpanel1.add(lblSegmentsLengthField,cc.xy(2,10));
+
+      lblPaintHolesField.setName("lblPaintHolesField");
+      lblPaintHolesField.setText("_Paint_holes_field");
+      jpanel1.add(lblPaintHolesField,cc.xy(2,12));
+
+      lblHolesColorField.setName("lblHolesColorField");
+      lblHolesColorField.setText("_Holes_color_field");
+      jpanel1.add(lblHolesColorField,cc.xy(2,14));
+
+      lblHolesLengthField.setName("lblHolesLengthField");
+      lblHolesLengthField.setText("_Holes_length_field");
+      jpanel1.add(lblHolesLengthField,cc.xy(2,16));
+
+      lblGapWidth.setName("lblGapWidth");
+      lblGapWidth.setText("_Gap_width_between_lines");
+      jpanel1.add(lblGapWidth,cc.xy(2,6));
+
+      spnGapWith.setName("spnGapWith");
+      jpanel1.add(spnGapWith,cc.xy(4,6));
+
+      cboWidthFields.setName("cboWidthFields");
+      jpanel1.add(cboWidthFields,cc.xywh(4,2,3,1));
+
+      cboHolesLengthFields.setName("cboHolesLengthFields");
+      jpanel1.add(cboHolesLengthFields,cc.xywh(4,16,3,1));
+
+      cboHolesColorFields.setName("cboHolesColorFields");
+      jpanel1.add(cboHolesColorFields,cc.xywh(4,14,3,1));
+
+      cboPaintHolesFields.setName("cboPaintHolesFields");
+      jpanel1.add(cboPaintHolesFields,cc.xywh(4,12,3,1));
+
+      cboSegmentsLengthFields.setName("cboSegmentsLengthFields");
+      jpanel1.add(cboSegmentsLengthFields,cc.xywh(4,10,3,1));
+
+      cboSegmentsColorFields.setName("cboSegmentsColorFields");
+      jpanel1.add(cboSegmentsColorFields,cc.xywh(4,8,3,1));
+
+      cboContinuityFields.setName("cboContinuityFields");
+      jpanel1.add(cboContinuityFields,cc.xywh(4,4,3,1));
+
+      cboRoundVertexFields.setName("cboRoundVertexFields");
+      jpanel1.add(cboRoundVertexFields,cc.xywh(4,18,3,1));
+
+      lblRoundVertexField.setName("lblRoundVertexField");
+      lblRoundVertexField.setText("_Round_vertex_field");
+      jpanel1.add(lblRoundVertexField,cc.xy(2,18));
+
+      lblCm.setName("lblCm");
+      lblCm.setText("cm");
+      jpanel1.add(lblCm,cc.xy(6,6));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditorView.java	(revision 5837)
@@ -0,0 +1,140 @@
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend;
+
+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.JPanel;
+
+
+public class DefaultUrbanHorizontalSignageLegendEditorView extends JPanel
+{
+   JPanel grdConfig = new JPanel();
+
+   /**
+    * Default constructor
+    */
+   public DefaultUrbanHorizontalSignageLegendEditorView()
+   {
+      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:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      jpanel1.add(creategrdConfig(),cc.xy(2,2));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3 });
+      return jpanel1;
+   }
+
+   public JPanel creategrdConfig()
+   {
+      grdConfig.setName("grdConfig");
+      FormLayout formlayout1 = new FormLayout("FILL:8DLU:GROW(1.0)","FILL:4DLU:GROW(1.0)");
+      CellConstraints cc = new CellConstraints();
+      grdConfig.setLayout(formlayout1);
+
+      addFillComponents(grdConfig,new int[]{ 1 },new int[]{ 1 });
+      return grdConfig;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanel.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanel.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageConfigPanel.java	(revision 5837)
@@ -0,0 +1,127 @@
+
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend;
+
+import javax.swing.SpinnerNumberModel;
+import org.gvsig.fmap.dal.DataTypes;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.dal.swing.DataSwingManager;
+import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import static org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig.DEFAULT_GAP_WIDTH_VALUE;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageConfigPanel;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DefaultUrbanHorizontalSignageConfigPanel extends DefaultUrbanHorizontalSignageConfigPanelView implements UrbanHorizontalSignageConfigPanel {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageConfigPanel.class);
+
+    private AttributeDescriptorPickerController widthFieldController;
+    private AttributeDescriptorPickerController continuityFieldController;
+    private AttributeDescriptorPickerController segmentsColorFieldController;
+    private AttributeDescriptorPickerController paintHolesFieldController;
+    private AttributeDescriptorPickerController holesColorFieldController;
+    private AttributeDescriptorPickerController segmentsLengthFieldController;
+    private AttributeDescriptorPickerController holesLengthFieldController;
+    private AttributeDescriptorPickerController roundVertexFieldController;
+
+    public DefaultUrbanHorizontalSignageConfigPanel() {
+        initComponents();
+    }
+
+    private void initComponents(){
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+        
+        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
+        widthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboWidthFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        continuityFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboContinuityFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        segmentsColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboSegmentsColorFields, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        segmentsLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboSegmentsLengthFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        paintHolesFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboPaintHolesFields, (t) -> {
+            return t.getType() != DataTypes.GEOMETRY;
+        });
+        holesColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboHolesColorFields, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        holesLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboHolesLengthFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        roundVertexFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboRoundVertexFields, (t) -> {
+            return t.getType() != DataTypes.GEOMETRY;
+        });
+        
+        SpinnerNumberModel spnModel = new SpinnerNumberModel((int)DEFAULT_GAP_WIDTH_VALUE, 0, Integer.MAX_VALUE, 1);
+        spnGapWith.setModel(spnModel);
+        
+        translateAll();
+    }
+
+    private void translateAll() {
+        ToolsSwingManager toolsSwingmanager = ToolsSwingLocator.getToolsSwingManager();
+        toolsSwingmanager.translate(this.lblWidthField);
+        toolsSwingmanager.translate(this.lblContinuityField);
+        toolsSwingmanager.translate(this.lblSegmentsColorField);
+        toolsSwingmanager.translate(this.lblSegmentsLengthField);
+        toolsSwingmanager.translate(this.lblHolesColorField);
+        toolsSwingmanager.translate(this.lblPaintHolesField);
+        toolsSwingmanager.translate(this.lblHolesLengthField);
+        toolsSwingmanager.translate(this.lblRoundVertexField);
+        toolsSwingmanager.translate(this.lblGapWidth);
+    }
+
+    @Override
+    public void put(UrbanHorizontalSignageConfig config) {
+        this.widthFieldController.set(config.getWidthFieldName());
+        this.continuityFieldController.set(config.getContinuityFieldName());
+        this.segmentsColorFieldController.set(config.getSegmentsColorFieldName());
+        this.segmentsLengthFieldController.set(config.getSegmentsLengthFieldName());
+        this.paintHolesFieldController.set(config.getPaintHolesFieldName());
+        this.holesColorFieldController.set(config.getHolesColorFieldName());
+        this.holesLengthFieldController.set(config.getHolesLengthFieldName());
+        this.roundVertexFieldController.set(config.getRoundVertexFieldName());
+
+        this.spnGapWith.getModel().setValue(config.getGapWidth());
+
+    }
+    
+    @Override
+    public void fetch(UrbanHorizontalSignageConfig config) {
+        config.setWidthFieldName((String) this.widthFieldController.getName());
+        config.setContinuityFieldName(this.continuityFieldController.getName());
+        config.setSegmentsColorFieldName(this.segmentsColorFieldController.getName());
+        config.setSegmentsLengthFieldName(this.segmentsLengthFieldController.getName());
+        config.setPaintHolesFieldName(this.paintHolesFieldController.getName());
+        config.setHolesColorFieldName(this.holesColorFieldController.getName());
+        config.setHolesLengthFieldName(this.holesLengthFieldController.getName());
+        config.setRoundVertexFieldName(this.roundVertexFieldController.getName());
+        
+        config.setGapWith((int) spnGapWith.getValue());
+
+    }
+    
+    @Override
+    public void setFeatureType(FeatureType type) {
+        this.widthFieldController.setFeatureType(type);
+        this.continuityFieldController.setFeatureType(type);
+        this.segmentsColorFieldController.setFeatureType(type);
+        this.segmentsLengthFieldController.setFeatureType(type);
+        this.paintHolesFieldController.setFeatureType(type);
+        this.holesColorFieldController.setFeatureType(type);
+        this.holesLengthFieldController.setFeatureType(type);
+        this.roundVertexFieldController.setFeatureType(type);
+
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditor.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditor.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/linelegend/DefaultUrbanHorizontalSignageLegendEditor.java	(revision 5837)
@@ -0,0 +1,137 @@
+
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend;
+
+import java.awt.BorderLayout;
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import org.gvsig.app.project.documents.view.legend.gui.Features;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageLegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageLegendEditor;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.i18n.I18nManager;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultUrbanHorizontalSignageLegendEditor extends DefaultUrbanHorizontalSignageLegendEditorView implements UrbanHorizontalSignageLegendEditor {
+
+    private static final long serialVersionUID = 4307714097793669675L;
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageLegendEditor.class);
+
+    private UrbanHorizontalSignageLegend legend;
+    private FLayer layer;
+    private final Class<? extends UrbanHorizontalSignageLegend> legendClass;
+    private DefaultUrbanHorizontalSignageConfigPanel configPanel;
+
+    public DefaultUrbanHorizontalSignageLegendEditor() {
+        this.legendClass = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager().getUrbanHorizontalSignageLegendClass();
+        initComponents();
+    }
+
+    private void initComponents(){
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+        
+        configPanel = new DefaultUrbanHorizontalSignageConfigPanel();
+        this.grdConfig.setLayout(new BorderLayout());
+        this.grdConfig.add(configPanel,BorderLayout.CENTER);
+        
+        translateAll();
+    }
+
+    private void translateAll() {
+    }
+
+    @Override
+    public void setData(FLayer layer, ILegend legend) {
+        if( layer == this.layer && legend == this.legend ) {
+            return;
+        }
+        this.layer = layer;
+        if( this.getLegendClass().isInstance(legend) ) {
+            this.legend = (UrbanHorizontalSignageLegend) legend;
+        } else {
+            this.legend = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager().createUrbanHorizontalSignageLegend();
+        }
+               
+        if( layer instanceof FLyrVect ) {
+            FeatureStore store = ((FLyrVect) layer).getFeatureStore();
+            if( store != null ) {
+                try {
+                    FeatureType ftype = store.getDefaultFeatureType();
+                    this.configPanel.setFeatureType(ftype);
+                    this.configPanel.put(this.legend.getConfig());
+                } catch (Exception ex) {
+                    LOGGER.warn("Can't fill data of legend.", ex);
+                    //FIXME: ¿hacemos algo más con la excepción?
+                }
+            }
+        }
+    }
+
+    @Override
+    public ILegend getLegend() {
+        this.configPanel.fetch(this.legend.getConfig());
+        return legend;
+    }
+
+    @Override
+    public String getDescription() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        return i18n.getTranslation( "_Urban_horizontal_signage_legend_description");
+    }
+
+    @Override
+    public ImageIcon getIcon() {
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
+        return theme.get("legend-overview-vectorial-urbanhorizontalsignage");
+    }
+
+    @Override
+	public Class getParentClass() {
+		return Features.class;
+	}
+
+    @Override
+    public String getTitle() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        return i18n.getTranslation( "_Urban_horizontal_signage_legend");
+    }
+
+    @Override
+    public JPanel getPanel() {
+        return this;
+    }
+
+    @Override
+    public Class getLegendClass() {
+        return this.legendClass;
+    }
+
+    @Override
+    public boolean isSuitableFor(FLayer layer) {
+        if(layer instanceof FLyrVect){
+            try {
+                int shapeType = ((FLyrVect)layer).getShapeType();
+                return (GeometryUtils.isSubtype(Geometry.TYPES.CURVE, shapeType) ||
+                        GeometryUtils.isSubtype(Geometry.TYPES.MULTICURVE, shapeType));
+            } catch (Exception ex) {
+                LOGGER.debug("Can't get shape type for layer "+layer.getName(), ex);
+                return false;
+            }
+        }
+        return false;
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/DefaultUrbanHorizontalSignageSwingManager.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/DefaultUrbanHorizontalSignageSwingManager.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/DefaultUrbanHorizontalSignageSwingManager.java	(revision 5837)
@@ -0,0 +1,53 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.swing.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.ConvertLinesToPolygonsPanel;
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend.DefaultUrbanHorizontalSignageLegendEditor;
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend.DefaultUrbanHorizontalSignageConfigPanel;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageConfigPanel;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageLegendEditor;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageSwingManager;
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.convertlines.DefaultConvertLinesToPolygonsPanel;
+
+
+public class DefaultUrbanHorizontalSignageSwingManager implements UrbanHorizontalSignageSwingManager {
+
+    @Override
+    public UrbanHorizontalSignageLegendEditor createUrbanHorizontalSignageLegendEditor() {
+        return new DefaultUrbanHorizontalSignageLegendEditor();
+    }
+
+    @Override
+    public UrbanHorizontalSignageConfigPanel createUrbanHorizontalSignageConfigPanel() {
+        return new DefaultUrbanHorizontalSignageConfigPanel();
+    }
+
+    @Override
+    public ConvertLinesToPolygonsPanel createConvertLinesToPolygonsPanel() {
+        DefaultConvertLinesToPolygonsPanel p = new DefaultConvertLinesToPolygonsPanel();
+        return p;
+    }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/UrbanHorizontalSignageLegendSwingLibrary.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/UrbanHorizontalSignageLegendSwingLibrary.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/UrbanHorizontalSignageLegendSwingLibrary.java	(revision 5837)
@@ -0,0 +1,59 @@
+/**
+ * gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.swing.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend.DefaultUrbanHorizontalSignageLegendEditor;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageSwingLocator;
+import org.gvsig.legend.urbanverticalsignage.swing.impl.DefaultPictureMarkerSymbolTableLegendEditor;
+import org.gvsig.symbology.swing.SymbologySwingLibrary;
+import org.gvsig.symbology.swing.SymbologySwingLocator;
+import org.gvsig.symbology.swing.SymbologySwingManager;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+
+
+public class UrbanHorizontalSignageLegendSwingLibrary extends AbstractLibrary {
+
+
+
+	@Override
+    public void doRegistration() {
+        registerAsImplementationOf(UrbanHorizontalSignageLegendSwingLibrary.class);
+        require(SymbologySwingLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+        UrbanHorizontalSignageSwingLocator.registerUrbanHorizontalSignageSwingManager(DefaultUrbanHorizontalSignageSwingManager.class);
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+        SymbologySwingManager symmnager = SymbologySwingLocator.getSwingManager();
+        symmnager.registerLegendEditor(DefaultUrbanHorizontalSignageLegendEditor.class);
+        symmnager.registerLegendEditor(DefaultPictureMarkerSymbolTableLegendEditor.class);
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.xml	(revision 5837)
@@ -0,0 +1,1165 @@
+<?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.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.xml</at>
+   <at name="path">datos/devel/org.gvsig.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.xml</at>
+   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,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">lblElementsToProcess</at>
+            <at name="width">116</at>
+            <at name="text">_Elements_to_process</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">top</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">lblTargetLayer</at>
+            <at name="width">116</at>
+            <at name="text">_Target_layer</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">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">lblTargetColorField</at>
+            <at name="width">116</at>
+            <at name="text">_Target_Color_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">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.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">lblTargetLengthField</at>
+            <at name="width">116</at>
+            <at name="text">_Target_Length_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">10</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">lblTargetAreaField</at>
+            <at name="width">116</at>
+            <at name="text">_Target_Area_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">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.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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetLengthFields</at>
+            <at name="width">1231</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </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">4</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.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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetColorFields</at>
+            <at name="width">1231</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </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">4</at>
+           <at name="row">10</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="componentCount">3</at>
+            <at name="editable">true</at>
+            <at name="requestFocusEnabled">false</at>
+            <at name="name">cboTargetAreaFields</at>
+            <at name="width">1231</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </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">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="background" object="color">225,225,225</at>
+            <at name="editable">false</at>
+            <at name="name">txtElementsToProcess</at>
+            <at name="width">1231</at>
+            <at name="height">22</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">14</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.FormComponent</at>
+        </super>
+        <at name="id">embedded.2003936885</at>
+        <at name="rowspecs">CENTER:MAX(12DLU;PREF):NONE,CENTER:2DLU:NONE,CENTER:MAX(12DLU;PREF):NONE,CENTER:2DLU:NONE,CENTER:MAX(12DLU;PREF):NONE</at>
+        <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:12DLU: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">lblStatusCaption</at>
+                 <at name="width">1334</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">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">lblStatusMsg</at>
+                 <at name="width">1334</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">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.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">pbStatus</at>
+                 <at name="width">1334</at>
+                 <at name="percentComplete">0.25</at>
+                 <at name="value">25</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="5">
+            <at name="item" index="0">
+             <object classname="[Ljava.lang.Object;" size="2"/>
+            </at>
+            <at name="item" index="1">
+             <object classname="[Ljava.lang.Object;" size="2"/>
+            </at>
+            <at name="item" index="2">
+             <object classname="[Ljava.lang.Object;" size="2"/>
+            </at>
+            <at name="item" index="3">
+             <object classname="[Ljava.lang.Object;" size="2"/>
+            </at>
+            <at name="item" index="4">
+             <object classname="[Ljava.lang.Object;" size="2"/>
+            </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.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">12</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">lblDeleteLinesAtFinish</at>
+            <at name="width">116</at>
+            <at name="text">_Delete_lines_at_finish</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">16</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">12</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.JCheckBox</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JCheckBox</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">chkDeleteLinesAtFinish</at>
+            <at name="width">1231</at>
+            <at name="height">15</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.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">treeTargetLayer</at>
+            <at name="width">1229</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>
+             </object>
+            </at>
+            <at name="height">613</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="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>
+       <at name="item" index="7">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="8">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="9">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="10">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="11">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="12">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="13">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="14">
+        <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.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanelView.java	(revision 5837)
@@ -0,0 +1,226 @@
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.convertlines;
+
+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.Color;
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+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.JTextField;
+import javax.swing.JTree;
+
+
+public class DefaultConvertLinesToPolygonsPanelView extends JPanel
+{
+   JLabel lblElementsToProcess = new JLabel();
+   JLabel lblTargetLayer = new JLabel();
+   JLabel lblTargetColorField = new JLabel();
+   JLabel lblTargetLengthField = new JLabel();
+   JLabel lblTargetAreaField = new JLabel();
+   JComboBox cboTargetLengthFields = new JComboBox();
+   JComboBox cboTargetColorFields = new JComboBox();
+   JComboBox cboTargetAreaFields = new JComboBox();
+   JTextField txtElementsToProcess = new JTextField();
+   JLabel lblStatusCaption = new JLabel();
+   JLabel lblStatusMsg = new JLabel();
+   JProgressBar pbStatus = new JProgressBar();
+   JLabel lblDeleteLinesAtFinish = new JLabel();
+   JCheckBox chkDeleteLinesAtFinish = new JCheckBox();
+   JTree treeTargetLayer = new JTree();
+
+   /**
+    * Default constructor
+    */
+   public DefaultConvertLinesToPolygonsPanelView()
+   {
+      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:4DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblElementsToProcess.setName("lblElementsToProcess");
+      lblElementsToProcess.setText("_Elements_to_process");
+      jpanel1.add(lblElementsToProcess,cc.xy(2,2));
+
+      lblTargetLayer.setName("lblTargetLayer");
+      lblTargetLayer.setText("_Target_layer");
+      jpanel1.add(lblTargetLayer,new CellConstraints(2,4,1,1,CellConstraints.DEFAULT,CellConstraints.TOP));
+
+      lblTargetColorField.setName("lblTargetColorField");
+      lblTargetColorField.setText("_Target_Color_field");
+      jpanel1.add(lblTargetColorField,cc.xy(2,6));
+
+      lblTargetLengthField.setName("lblTargetLengthField");
+      lblTargetLengthField.setText("_Target_Length_field");
+      jpanel1.add(lblTargetLengthField,cc.xy(2,8));
+
+      lblTargetAreaField.setName("lblTargetAreaField");
+      lblTargetAreaField.setText("_Target_Area_field");
+      jpanel1.add(lblTargetAreaField,cc.xy(2,10));
+
+      cboTargetLengthFields.setEditable(true);
+      cboTargetLengthFields.setName("cboTargetLengthFields");
+      cboTargetLengthFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetLengthFields,cc.xy(4,8));
+
+      cboTargetColorFields.setEditable(true);
+      cboTargetColorFields.setName("cboTargetColorFields");
+      cboTargetColorFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetColorFields,cc.xy(4,6));
+
+      cboTargetAreaFields.setEditable(true);
+      cboTargetAreaFields.setName("cboTargetAreaFields");
+      cboTargetAreaFields.setRequestFocusEnabled(false);
+      jpanel1.add(cboTargetAreaFields,cc.xy(4,10));
+
+      txtElementsToProcess.setBackground(new Color(225,225,225));
+      txtElementsToProcess.setEditable(false);
+      txtElementsToProcess.setName("txtElementsToProcess");
+      jpanel1.add(txtElementsToProcess,cc.xy(4,2));
+
+      jpanel1.add(createPanel1(),cc.xywh(2,14,3,1));
+      lblDeleteLinesAtFinish.setName("lblDeleteLinesAtFinish");
+      lblDeleteLinesAtFinish.setText("_Delete_lines_at_finish");
+      jpanel1.add(lblDeleteLinesAtFinish,cc.xy(2,12));
+
+      chkDeleteLinesAtFinish.setName("chkDeleteLinesAtFinish");
+      jpanel1.add(chkDeleteLinesAtFinish,cc.xy(4,12));
+
+      treeTargetLayer.setName("treeTargetLayer");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(treeTargetLayer);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(4,4));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0),FILL:12DLU:NONE","CENTER:MAX(12DLU;PREF):NONE,CENTER:2DLU:NONE,CENTER:MAX(12DLU;PREF):NONE,CENTER:2DLU:NONE,CENTER:MAX(12DLU;PREF):NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblStatusCaption.setName("lblStatusCaption");
+      jpanel1.add(lblStatusCaption,cc.xy(1,1));
+
+      lblStatusMsg.setName("lblStatusMsg");
+      jpanel1.add(lblStatusMsg,cc.xy(1,5));
+
+      pbStatus.setName("pbStatus");
+      pbStatus.setValue(25);
+      jpanel1.add(pbStatus,cc.xy(1,3));
+
+      addFillComponents(jpanel1,new int[]{ 2 },new int[]{ 2,4 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanel.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanel.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/impl/convertlines/DefaultConvertLinesToPolygonsPanel.java	(revision 5837)
@@ -0,0 +1,292 @@
+package org.gvsig.legend.urbanhorizontalsignage.swing.impl.convertlines;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+import org.gvsig.fmap.dal.DataTypes;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.dal.swing.DataSwingManager;
+import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.geom.type.GeometryType;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.ConvertLinesToPolygonsPanel;
+import org.gvsig.tools.swing.api.IconGetter;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.api.ToolsSwingUtils;
+import org.gvsig.tools.swing.api.task.TaskStatusController;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.tools.util.LabeledValue;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+public class DefaultConvertLinesToPolygonsPanel 
+        extends DefaultConvertLinesToPolygonsPanelView 
+        implements ConvertLinesToPolygonsPanel 
+    {
+    
+    private static Map<String,Map<String,Object>> remindervalues = new HashMap<>();
+    
+    private AttributeDescriptorPickerController targetColorFieldController;
+    private AttributeDescriptorPickerController targetLengthFieldController;
+    private AttributeDescriptorPickerController targetAreaFieldController;
+
+    private FeatureSet source;
+    private UrbanHorizontalSignageConfig config;
+    private TreeModel stores;
+    private TaskStatusController statusController;
+    
+    public DefaultConvertLinesToPolygonsPanel() {
+        this.source = null;
+        
+        initComponents();
+    }
+    
+    private void initComponents(){
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
+        
+        targetColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetColorFields, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        targetColorFieldController.setEditable(true);
+        
+        targetLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetLengthFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        targetLengthFieldController.setEditable(true);
+        
+        targetAreaFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboTargetAreaFields, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        targetAreaFieldController.setEditable(true);
+        
+        this.treeTargetLayer.getSelectionModel().addTreeSelectionListener((TreeSelectionEvent e) -> {
+            doUpdateTargetFeatureType();
+            updateEnableComponents();
+        });
+        this.treeTargetLayer.setCellRenderer(new DefaultTreeCellRenderer() {
+            @Override
+            public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
+                JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); //To change body of generated methods, choose Tools | Templates.
+                if( stores instanceof IconGetter ) {
+                    Icon icon = ((IconGetter)stores).getIcon(value);
+                    setIcon(icon);
+                }
+                return label;
+            }
+
+        });
+
+        this.statusController = ToolsSwingLocator.getTaskStatusSwingManager().createTaskStatusController(
+                this.lblStatusCaption,
+                this.lblStatusMsg,
+                this.pbStatus
+        );
+        this.setTaskStatusVisible(false);
+        translateAll();
+        ToolsSwingUtils.ensureRowsCols(this, 13, 80, 20, 100);
+        updateEnableComponents();
+    }
+    
+    private void translateAll() {
+        ToolsSwingManager toolsSwingmanager = ToolsSwingLocator.getToolsSwingManager();
+        toolsSwingmanager.translate(this.lblTargetColorField);
+        toolsSwingmanager.translate(this.lblTargetLengthField);
+        toolsSwingmanager.translate(this.lblTargetAreaField);
+        toolsSwingmanager.translate(this.lblElementsToProcess);
+        toolsSwingmanager.translate(this.lblTargetLayer);
+        toolsSwingmanager.translate(this.lblDeleteLinesAtFinish);
+    }
+
+    @Override
+    public void setSource(FeatureSet source) {
+        this.source = source;
+        
+        if( this.source==null || this.source.isEmpty() ) {
+            this.targetColorFieldController.clean();
+            this.targetAreaFieldController.clean();
+            this.targetLengthFieldController.clean();
+            this.txtElementsToProcess.setText("");
+        } else {
+            this.txtElementsToProcess.setText(String.valueOf(this.source.size()));
+        }
+        this.updateEnableComponents();
+    }
+
+    @Override
+    public void setStores(TreeModel stores) {
+        this.stores = stores;
+        this.treeTargetLayer.setModel(stores);
+        this.updateEnableComponents();
+    }
+
+    @Override
+    public UrbanHorizontalSignageConfig fetch(UrbanHorizontalSignageConfig config) {
+        config.setTargetColorFieldName(this.targetColorFieldController.getName());
+        config.setTargetLenghtFieldName(this.targetLengthFieldController.getName());
+        config.setTargetAreaFieldName(this.targetAreaFieldController.getName());
+        saveValues();
+        return config;
+    }
+
+    @Override
+    public void put(UrbanHorizontalSignageConfig config) {
+        try {
+            this.config = config.clone();
+        } catch (CloneNotSupportedException ex) {
+            throw new RuntimeException("Can't put config", ex);
+        }
+        this.targetColorFieldController.set(config.getTargetColorFieldName());
+        this.targetLengthFieldController.set(config.getTargetLenghtFieldName());
+        this.targetAreaFieldController.set(config.getTargetAreaFieldName());
+        this.updateEnableComponents();
+    }
+
+    @Override
+    public JComponent asJComponent() {
+        return this;
+    }
+    
+    private void doUpdateTargetFeatureType() {
+        FeatureType ft = this.getTargetFeatureType();
+        if( ft == null ) {
+            this.targetColorFieldController.clean();
+            this.targetAreaFieldController.clean();
+            this.targetLengthFieldController.clean();
+            return;
+        } 
+        this.targetColorFieldController.setFeatureType(ft);
+        this.targetAreaFieldController.setFeatureType(ft);
+        this.targetLengthFieldController.setFeatureType(ft);
+        restoreValues();
+    }
+
+    private void updateEnableComponents() {
+        if( this.source==null || this.stores==null ) {
+            this.targetColorFieldController.setEnabled(false);
+            this.targetAreaFieldController.setEnabled(false);
+            this.targetLengthFieldController.setEnabled(false);
+            this.treeTargetLayer.setEnabled(false);
+            return;
+        }
+        this.treeTargetLayer.setEnabled(true);
+        if( this.getTargetStore()==null ) {
+            this.targetColorFieldController.setEnabled(false);
+            this.targetAreaFieldController.setEnabled(false);
+            this.targetLengthFieldController.setEnabled(false);
+            return;
+        }
+        this.targetColorFieldController.setEnabled(true);
+        this.targetAreaFieldController.setEnabled(true);
+        this.targetLengthFieldController.setEnabled(true);
+    }
+    
+    @Override
+    public UrbanHorizontalSignageConfig getConfig() {
+        return this.fetch(this.config);
+    }
+
+    @Override
+    public FeatureSet getSource() {
+        return this.source;
+    }
+
+    @Override
+    public FeatureStore getTargetStore() {
+        TreePath path = this.treeTargetLayer.getSelectionPath();
+        if( path == null ) {
+            return null;
+        }
+        Object store = path.getLastPathComponent();
+        if( store instanceof LabeledValue ) {
+            store = ((LabeledValue)store).getValue();
+        }
+        if( store instanceof FeatureStore ) {
+            try {
+                FeatureType ft = ((FeatureStore) store).getDefaultFeatureTypeQuietly();
+                FeatureAttributeDescriptor geomattr = ft.getDefaultGeometryAttribute();
+                int geomtype = geomattr.getGeomType().getType();
+                if( GeometryUtils.isSubtype(Geometry.TYPES.POLYGON, geomtype) ||
+                    GeometryUtils.isSubtype(Geometry.TYPES.MULTIPOLYGON, geomtype) ) {
+                    return (FeatureStore) store;
+                }
+                return null;
+            } catch(Exception ex) {
+                return null;
+            }
+        }
+        return null;
+    }
+
+    private FeatureType getTargetFeatureType() {
+        FeatureStore store = this.getTargetStore();
+        if( store == null) {
+            return null;
+        }
+        return store.getDefaultFeatureTypeQuietly();
+    }
+    
+    @Override
+    public SimpleTaskStatus getTaskStatus() {
+        return this.statusController.getSimpleTaskStatus();
+    }
+
+    @Override
+    public void setTaskStatusVisible(boolean visible) {
+        this.pbStatus.setVisible(visible);
+        this.lblStatusCaption.setVisible(visible);
+        this.lblStatusMsg.setVisible(visible);
+    }
+
+    @Override
+    public boolean getDeleteSourceAtFinish() {
+        return this.chkDeleteLinesAtFinish.isSelected();
+    }
+
+    @Override
+    public void setDeleteSourceAtFinish(boolean deleteSourceAtFinish) {
+        this.chkDeleteLinesAtFinish.setSelected(deleteSourceAtFinish);
+    }
+
+    private void restoreValues() {
+        FeatureStore store = this.getTargetStore();
+        if( store!=null ) {
+            Map<String,Object> values = remindervalues.get(store.getFullName());
+            if( values!=null ) {
+                this.targetColorFieldController.set((String) values.get("Color"));
+                this.targetAreaFieldController.set((String) values.get("Area"));
+                this.targetLengthFieldController.set((String) values.get("Len"));
+                this.chkDeleteLinesAtFinish.setSelected((boolean) values.get("DeleteAtFinish"));
+            }
+        }
+    }
+    
+    private void saveValues() {
+        FeatureStore targetStore = this.getTargetStore();
+        if( targetStore!=null ) {
+            Map<String,Object>values = new HashMap<>();
+            values.put("Color", this.targetColorFieldController.getName());
+            values.put("Len", this.targetLengthFieldController.getName());
+            values.put("Area", this.targetAreaFieldController.getName());
+            values.put("DeleteAtFinish", this.chkDeleteLinesAtFinish.isSelected());
+            remindervalues.put(targetStore.getFullName(),values);
+        }
+        
+    }
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.xml	(revision 5837)
@@ -0,0 +1,2054 @@
+<?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.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.xml</at>
+   <at name="path">datos/devel/org.gvsig.legend.urbanhorizontalsignage/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.xml</at>
+   <at name="rowspecs">CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,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">lblImageSize</at>
+            <at name="width">229</at>
+            <at name="text">_Size</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">lblLineToOffsetColor</at>
+            <at name="width">229</at>
+            <at name="text">_Line_to_offset_color</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">10</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">lblClassifyingFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Classifying_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">12</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">lblOffsetXFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_OffsetX_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">14</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">lblOffsetYFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_OffsetY_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">16</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">lblRotationFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Rotation_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">18</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">lblLineToOffsetColorFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Line_to_offset_color_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">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">lblDrawLineToOffset</at>
+            <at name="width">229</at>
+            <at name="text">_Draw_line_to_offset</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">18</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.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">cboLineToOffsetColorFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">16</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.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">cboRotationFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">14</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.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">cboOffsetYFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">12</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.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">cboOffsetXFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">10</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.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">cboClassifyingFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">22</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">cboImagesTableName</at>
+            <at name="width">1170</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">22</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">lblImagesTableName</at>
+            <at name="width">229</at>
+            <at name="text">_Table_name</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">6</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.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>
+                    <at name="title"></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="actionCommand">...</at>
+            <at name="name">btnLineToOffsetColor</at>
+            <at name="width">20</at>
+            <at name="text">...</at>
+            <at name="height">30</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">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.JCheckBox</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JCheckBox</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">chkDrawLineToOffset</at>
+            <at name="width">1170</at>
+            <at name="height">21</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">20</at>
+           <at name="colspan">5</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.separator.TitledSeparator</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.components.separator.TitledSeparator</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">lblImagesTableFields</at>
+            <at name="width">1449</at>
+            <at name="text">_Images_table_fields</at>
+            <at name="height">26</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">26</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">lblImageFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Image_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">28</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">lblImageSelectedFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Image_selected_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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">24</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.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">cboImagesTableClassifyingFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">26</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.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">cboImageFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">28</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.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">cboImageSelectedFieldName</at>
+            <at name="width">1205</at>
+            <at name="items">
+             <object classname="com.jeta.forms.store.properties.ItemsProperty">
+              <at name="name">items</at>
+             </object>
+            </at>
+            <at name="height">38</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">24</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">lblImagesTableClassifyingFieldName</at>
+            <at name="width">229</at>
+            <at name="text">_Classifying_field</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">26</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="name">txtLineToOffsetColor</at>
+            <at name="width">1170</at>
+            <at name="height">38</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">6</at>
+           <at name="row">22</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>
+                    <at name="title"></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="actionCommand">...</at>
+            <at name="icon">
+             <object classname="com.jeta.forms.store.properties.IconProperty">
+              <at name="embedded">false</at>
+              <at name="path">datos/devel/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/resources/org/gvsig/vcsgis/swing/impl/images/common-refresh.png</at>
+              <at name="description">common-refresh.png</at>
+              <at name="width">16</at>
+              <at name="height">16</at>
+             </object>
+            </at>
+            <at name="name">btnImagesTableNameRefresh</at>
+            <at name="width">20</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">8</at>
+           <at name="colspan">5</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.separator.TitledSeparator</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.components.separator.TitledSeparator</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">lblLegendTableFields</at>
+            <at name="width">1449</at>
+            <at name="text">_Legend_table_fields</at>
+            <at name="height">26</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">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.C608d98d4S17aa8da5927GJ7fed</at>
+        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+        <at name="colspecs">FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5)</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.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">txtImageSize</at>
+                 <at name="width">525</at>
+                 <at name="height">38</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">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">lblUnits</at>
+                 <at name="width">46</at>
+                 <at name="text">_Unit</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">26</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.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">cboUnits</at>
+                 <at name="width">564</at>
+                 <at name="items">
+                  <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                   <at name="name">items</at>
+                  </object>
+                 </at>
+                 <at name="height">38</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>
+             </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>
+       <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="29">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="4">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="5">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="6">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="7">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="8">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="9">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="10">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="11">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="12">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="13">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="14">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="15">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="16">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="17">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="18">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="19">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="20">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="21">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="22">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="23">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="24">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="25">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="26">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="27">
+        <object classname="[Ljava.lang.Object;" size="7"/>
+       </at>
+       <at name="item" index="28">
+        <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>
+</object>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditorView.java	(revision 5837)
@@ -0,0 +1,289 @@
+package org.gvsig.legend.urbanverticalsignage.swing.impl;
+
+import com.jeta.forms.components.separator.TitledSeparator;
+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.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.border.EmptyBorder;
+
+
+public class DefaultPictureMarkerSymbolTableLegendEditorView extends JPanel
+{
+   JLabel lblImageSize = new JLabel();
+   JLabel lblLineToOffsetColor = new JLabel();
+   JLabel lblClassifyingFieldName = new JLabel();
+   JLabel lblOffsetXFieldName = new JLabel();
+   JLabel lblOffsetYFieldName = new JLabel();
+   JLabel lblRotationFieldName = new JLabel();
+   JLabel lblLineToOffsetColorFieldName = new JLabel();
+   JLabel lblDrawLineToOffset = new JLabel();
+   JComboBox cboLineToOffsetColorFieldName = new JComboBox();
+   JComboBox cboRotationFieldName = new JComboBox();
+   JComboBox cboOffsetYFieldName = new JComboBox();
+   JComboBox cboOffsetXFieldName = new JComboBox();
+   JComboBox cboClassifyingFieldName = new JComboBox();
+   JComboBox cboImagesTableName = new JComboBox();
+   JLabel lblImagesTableName = new JLabel();
+   JButton btnLineToOffsetColor = new JButton();
+   JCheckBox chkDrawLineToOffset = new JCheckBox();
+   TitledSeparator lblImagesTableFields = new TitledSeparator();
+   JLabel lblImageFieldName = new JLabel();
+   JLabel lblImageSelectedFieldName = new JLabel();
+   JComboBox cboImagesTableClassifyingFieldName = new JComboBox();
+   JComboBox cboImageFieldName = new JComboBox();
+   JComboBox cboImageSelectedFieldName = new JComboBox();
+   JLabel lblImagesTableClassifyingFieldName = new JLabel();
+   JTextField txtLineToOffsetColor = new JTextField();
+   JButton btnImagesTableNameRefresh = new JButton();
+   TitledSeparator lblLegendTableFields = new TitledSeparator();
+   JTextField txtImageSize = new JTextField();
+   JLabel lblUnits = new JLabel();
+   JComboBox cboUnits = new JComboBox();
+
+   /**
+    * Default constructor
+    */
+   public DefaultPictureMarkerSymbolTableLegendEditorView()
+   {
+      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,FILL:DEFAULT:NONE,FILL:4DLU:NONE","CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblImageSize.setName("lblImageSize");
+      lblImageSize.setText("_Size");
+      jpanel1.add(lblImageSize,cc.xy(2,2));
+
+      lblLineToOffsetColor.setName("lblLineToOffsetColor");
+      lblLineToOffsetColor.setText("_Line_to_offset_color");
+      jpanel1.add(lblLineToOffsetColor,cc.xy(2,4));
+
+      lblClassifyingFieldName.setName("lblClassifyingFieldName");
+      lblClassifyingFieldName.setText("_Classifying_field");
+      jpanel1.add(lblClassifyingFieldName,cc.xy(2,10));
+
+      lblOffsetXFieldName.setName("lblOffsetXFieldName");
+      lblOffsetXFieldName.setText("_OffsetX_field");
+      jpanel1.add(lblOffsetXFieldName,cc.xy(2,12));
+
+      lblOffsetYFieldName.setName("lblOffsetYFieldName");
+      lblOffsetYFieldName.setText("_OffsetY_field");
+      jpanel1.add(lblOffsetYFieldName,cc.xy(2,14));
+
+      lblRotationFieldName.setName("lblRotationFieldName");
+      lblRotationFieldName.setText("_Rotation_field");
+      jpanel1.add(lblRotationFieldName,cc.xy(2,16));
+
+      lblLineToOffsetColorFieldName.setName("lblLineToOffsetColorFieldName");
+      lblLineToOffsetColorFieldName.setText("_Line_to_offset_color_field");
+      jpanel1.add(lblLineToOffsetColorFieldName,cc.xy(2,18));
+
+      lblDrawLineToOffset.setName("lblDrawLineToOffset");
+      lblDrawLineToOffset.setText("_Draw_line_to_offset");
+      jpanel1.add(lblDrawLineToOffset,cc.xy(2,6));
+
+      cboLineToOffsetColorFieldName.setName("cboLineToOffsetColorFieldName");
+      jpanel1.add(cboLineToOffsetColorFieldName,cc.xywh(4,18,3,1));
+
+      cboRotationFieldName.setName("cboRotationFieldName");
+      jpanel1.add(cboRotationFieldName,cc.xywh(4,16,3,1));
+
+      cboOffsetYFieldName.setName("cboOffsetYFieldName");
+      jpanel1.add(cboOffsetYFieldName,cc.xywh(4,14,3,1));
+
+      cboOffsetXFieldName.setName("cboOffsetXFieldName");
+      jpanel1.add(cboOffsetXFieldName,cc.xywh(4,12,3,1));
+
+      cboClassifyingFieldName.setName("cboClassifyingFieldName");
+      jpanel1.add(cboClassifyingFieldName,cc.xywh(4,10,3,1));
+
+      cboImagesTableName.setName("cboImagesTableName");
+      jpanel1.add(cboImagesTableName,cc.xy(4,22));
+
+      lblImagesTableName.setName("lblImagesTableName");
+      lblImagesTableName.setText("_Table_name");
+      jpanel1.add(lblImagesTableName,cc.xy(2,22));
+
+      btnLineToOffsetColor.setActionCommand("...");
+      btnLineToOffsetColor.setName("btnLineToOffsetColor");
+      btnLineToOffsetColor.setText("...");
+      EmptyBorder emptyborder1 = new EmptyBorder(2,2,2,2);
+      btnLineToOffsetColor.setBorder(emptyborder1);
+      jpanel1.add(btnLineToOffsetColor,cc.xy(6,4));
+
+      chkDrawLineToOffset.setName("chkDrawLineToOffset");
+      jpanel1.add(chkDrawLineToOffset,cc.xy(4,6));
+
+      lblImagesTableFields.setName("lblImagesTableFields");
+      lblImagesTableFields.setText("_Images_table_fields");
+      jpanel1.add(lblImagesTableFields,cc.xywh(2,20,5,1));
+
+      lblImageFieldName.setName("lblImageFieldName");
+      lblImageFieldName.setText("_Image_field");
+      jpanel1.add(lblImageFieldName,cc.xy(2,26));
+
+      lblImageSelectedFieldName.setName("lblImageSelectedFieldName");
+      lblImageSelectedFieldName.setText("_Image_selected_field");
+      jpanel1.add(lblImageSelectedFieldName,cc.xy(2,28));
+
+      cboImagesTableClassifyingFieldName.setName("cboImagesTableClassifyingFieldName");
+      jpanel1.add(cboImagesTableClassifyingFieldName,cc.xywh(4,24,3,1));
+
+      cboImageFieldName.setName("cboImageFieldName");
+      jpanel1.add(cboImageFieldName,cc.xywh(4,26,3,1));
+
+      cboImageSelectedFieldName.setName("cboImageSelectedFieldName");
+      jpanel1.add(cboImageSelectedFieldName,cc.xywh(4,28,3,1));
+
+      lblImagesTableClassifyingFieldName.setName("lblImagesTableClassifyingFieldName");
+      lblImagesTableClassifyingFieldName.setText("_Classifying_field");
+      jpanel1.add(lblImagesTableClassifyingFieldName,cc.xy(2,24));
+
+      txtLineToOffsetColor.setName("txtLineToOffsetColor");
+      jpanel1.add(txtLineToOffsetColor,cc.xy(4,4));
+
+      btnImagesTableNameRefresh.setActionCommand("...");
+      btnImagesTableNameRefresh.setIcon(loadImage("datos/devel/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/resources/org/gvsig/vcsgis/swing/impl/images/common-refresh.png"));
+      btnImagesTableNameRefresh.setName("btnImagesTableNameRefresh");
+      EmptyBorder emptyborder2 = new EmptyBorder(2,2,2,2);
+      btnImagesTableNameRefresh.setBorder(emptyborder2);
+      jpanel1.add(btnImagesTableNameRefresh,cc.xy(6,22));
+
+      lblLegendTableFields.setName("lblLegendTableFields");
+      lblLegendTableFields.setText("_Legend_table_fields");
+      jpanel1.add(lblLegendTableFields,cc.xywh(2,8,5,1));
+
+      jpanel1.add(createPanel1(),cc.xy(4,2));
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6,7 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5)","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      txtImageSize.setName("txtImageSize");
+      jpanel1.add(txtImageSize,cc.xy(1,1));
+
+      lblUnits.setName("lblUnits");
+      lblUnits.setText("_Unit");
+      jpanel1.add(lblUnits,cc.xy(3,1));
+
+      cboUnits.setName("cboUnits");
+      jpanel1.add(cboUnits,cc.xy(5,1));
+
+      addFillComponents(jpanel1,new int[]{ 2,4 },new int[0]);
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditor.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditor.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/impl/DefaultPictureMarkerSymbolTableLegendEditor.java	(revision 5837)
@@ -0,0 +1,380 @@
+
+package org.gvsig.legend.urbanverticalsignage.swing.impl;
+
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.linelegend.DefaultUrbanHorizontalSignageLegendEditor;
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.gvsig.app.project.documents.view.legend.gui.Categories;
+import org.gvsig.expressionevaluator.ExpressionUtils;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataManager;
+import org.gvsig.fmap.dal.DataStoreParameters;
+import org.gvsig.fmap.dal.DataTypes;
+import org.gvsig.fmap.dal.StoresRepository;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.dal.feature.OpenFeatureStoreParameters;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.dal.swing.DataSwingManager;
+import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageLegendEditor;
+import org.gvsig.legend.urbanhorizontalsignage.swing.impl.*;
+import org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend;
+import static org.gvsig.legend.urbanverticalsignage.lib.api.PictureMarkerSymbolTableLegend.DEFAULT_IMAGE_SIZE;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dispose.DisposeUtils;
+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.ToolsSwingUtils;
+import org.gvsig.tools.swing.api.documentfilters.DoubleDocumentFilter;
+import org.gvsig.tools.swing.api.pickercontroller.ColorPickerController;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.gvsig.tools.util.LabeledValue;
+import org.gvsig.tools.util.LabeledValueImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultPictureMarkerSymbolTableLegendEditor extends DefaultPictureMarkerSymbolTableLegendEditorView implements UrbanHorizontalSignageLegendEditor {
+
+    private static final long serialVersionUID = 4307714097793669675L;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageLegendEditor.class);
+
+    private PictureMarkerSymbolTableLegend legend;
+    private FLayer layer;
+    private final Class<? extends PictureMarkerSymbolTableLegend> legendClass;
+    
+    private ColorPickerController pickerLineToOffsetColor;
+
+    private AttributeDescriptorPickerController pickerClassifyingField;
+    private AttributeDescriptorPickerController pickerOffsetXField;
+    private AttributeDescriptorPickerController pickerOffsetYField;
+    private AttributeDescriptorPickerController pickerRotationField;
+    private AttributeDescriptorPickerController pickerLineToOffsetColorField;
+    
+    private AttributeDescriptorPickerController pickerImagesTableClassifyingField;
+    private AttributeDescriptorPickerController pickerImageField;
+    private AttributeDescriptorPickerController pickerImageSelectedField;
+    private List<String> availablesTables;
+
+    public DefaultPictureMarkerSymbolTableLegendEditor() {
+        this.legendClass = UrbanHorizontalSignageLocator
+                .getUrbanHorizontalSignageManager()
+                .getPictureMarkerSymbolTableLegendClass();
+        initComponents();
+    }
+
+    private void initComponents(){
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+        DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager();
+        
+        translateAll();
+
+        DoubleDocumentFilter.install(this.txtImageSize);
+        this.cboUnits.setModel(this.createModelUnits());
+        this.cboUnits.setSelectedIndex(0);
+        
+        this.pickerLineToOffsetColor = toolsSwingManager.createColorPickerController(this.txtLineToOffsetColor, this.btnLineToOffsetColor);
+        
+        
+        this.pickerClassifyingField = dataSwingManager.createAttributeDescriptorPickerController(cboClassifyingFieldName, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        this.pickerOffsetXField = dataSwingManager.createAttributeDescriptorPickerController(cboOffsetXFieldName, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        this.pickerOffsetYField = dataSwingManager.createAttributeDescriptorPickerController(cboOffsetYFieldName, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        this.pickerRotationField = dataSwingManager.createAttributeDescriptorPickerController(cboRotationFieldName, (t) -> {
+            return t.getDataType().isNumeric();
+        });
+        this.pickerLineToOffsetColorField = dataSwingManager.createAttributeDescriptorPickerController(cboLineToOffsetColorFieldName, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        
+        this.cboImagesTableName.setModel(this.createImagesTableNameModel());        
+        this.pickerImagesTableClassifyingField = dataSwingManager.createAttributeDescriptorPickerController(cboImagesTableClassifyingFieldName, (t) -> {
+            return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
+        });
+        this.pickerImageField = dataSwingManager.createAttributeDescriptorPickerController(cboImageFieldName, (t) -> {
+            return StringUtils.equalsIgnoreCase("Image", t.getDataProfileName());
+        });
+        this.pickerImageSelectedField = dataSwingManager.createAttributeDescriptorPickerController(cboImageSelectedFieldName, (t) -> {
+            return StringUtils.equalsIgnoreCase("Image", t.getDataProfileName());
+        });
+
+        this.cboImagesTableName.addItemListener((ItemEvent e) -> {
+            doChangeImageTableName();
+        });
+        this.btnImagesTableNameRefresh.addActionListener((ActionEvent e) -> {
+            doRefreshImageTables();
+        });
+        this.cboImagesTableName.setSelectedIndex(-1);
+    }
+
+    private void translateAll() {
+        ToolsSwingManager toolsSwingmanager = ToolsSwingLocator.getToolsSwingManager();
+        toolsSwingmanager.translate(this.lblClassifyingFieldName);
+        toolsSwingmanager.translate(this.lblDrawLineToOffset);
+        toolsSwingmanager.translate(this.lblImageFieldName);
+        toolsSwingmanager.translate(this.lblImageSelectedFieldName);
+        toolsSwingmanager.translate(this.lblImagesTableClassifyingFieldName);
+        toolsSwingmanager.translate(this.lblImagesTableFields);
+        toolsSwingmanager.translate(this.lblImagesTableName);
+        toolsSwingmanager.translate(this.lblLegendTableFields);
+        toolsSwingmanager.translate(this.lblLineToOffsetColor);
+        toolsSwingmanager.translate(this.lblLineToOffsetColorFieldName);
+        toolsSwingmanager.translate(this.lblOffsetXFieldName);
+        toolsSwingmanager.translate(this.lblOffsetYFieldName);
+        toolsSwingmanager.translate(this.lblRotationFieldName);
+        toolsSwingmanager.translate(this.lblImageSize);
+        toolsSwingmanager.translate(this.lblUnits);
+    }
+
+    private ComboBoxModel createModelUnits() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        DefaultComboBoxModel<LabeledValue<Integer>> model = new DefaultComboBoxModel<>();
+        model.addElement(new LabeledValueImpl<>(i18n.getTranslation("_Pixels"),-1));
+        String[] names=MapContext.getDistanceNames();
+        int n = 0;
+        for (String name : names) {
+            model.addElement(new LabeledValueImpl<>(i18n.getTranslation(name),n++));
+        }
+        return model;
+    }
+    
+    @Override
+    public void setData(FLayer layer, ILegend legend) {
+        if( layer == this.layer && legend == this.legend ) {
+            return;
+        }
+        this.layer = layer;
+        if( this.getLegendClass().isInstance(legend) ) {
+            this.legend = (PictureMarkerSymbolTableLegend) legend;
+        } else {
+            this.legend = UrbanHorizontalSignageLocator
+                    .getUrbanHorizontalSignageManager()
+                    .createPictureMarkerSymbolTableLegend();
+        }
+               
+        if( layer instanceof FLyrVect ) {
+            FeatureStore store = ((FLyrVect) layer).getFeatureStore();
+            if( store != null ) {
+                try {
+                    FeatureType ftype = store.getDefaultFeatureType();
+                    this.txtImageSize.setText(String.valueOf(this.legend.getImageSize()));
+                    ListElement.setSelected(this.cboUnits, this.legend.getUnits());
+                            
+                    this.pickerLineToOffsetColor.set(this.legend.getDefaultLineToOffsetColor());
+                    this.chkDrawLineToOffset.setSelected(this.legend.isDrawLineToOffset());
+
+                    this.pickerClassifyingField.setFeatureType(ftype);
+                    this.pickerOffsetXField.setFeatureType(ftype);
+                    this.pickerOffsetYField.setFeatureType(ftype);
+                    this.pickerRotationField.setFeatureType(ftype);
+                    this.pickerLineToOffsetColorField.setFeatureType(ftype);
+                    
+                    ListElement.setSelected(this.cboImagesTableName, this.legend.getImagesTableName());
+                    
+                    this.pickerClassifyingField.set(this.legend.getClassifyingFieldName());
+                    this.pickerLineToOffsetColorField.set(this.legend.getLineToOffsetColorFieldName());
+                    this.pickerRotationField.set(this.legend.getRotationFieldName());
+                    this.pickerOffsetXField.set(this.legend.getOffsetXFieldName());
+                    this.pickerOffsetYField.set(this.legend.getOffsetYFieldName());
+                    
+                } catch (Exception ex) {
+                    LOGGER.warn("Can't fill data of legend.", ex);
+                    //FIXME: ¿hacemos algo más con la excepción?
+                }
+            }
+        }
+    }
+    
+    @Override
+    public ILegend getLegend() {
+        this.legend.setImageSize(this.getImageSize());
+        this.legend.setUnits((int) ListElement.getSelected(this.cboUnits));
+        this.legend.setDefaultLineToOffsetColor(this.pickerLineToOffsetColor.get());
+        this.legend.setDrawLineToOffset(this.chkDrawLineToOffset.isSelected());
+        
+        this.legend.setClassifyingFieldName(this.pickerClassifyingField.getName());
+        this.legend.setOffsetXFieldName(this.pickerOffsetXField.getName());
+        this.legend.setOffsetYFieldName(this.pickerOffsetYField.getName());
+        this.legend.setRotationFieldName(this.pickerRotationField.getName());
+        this.legend.setLineToOffsetColorFieldName(this.pickerLineToOffsetColorField.getName());
+
+        this.legend.setImagesTableName((String) this.cboImagesTableName.getSelectedItem());
+        this.legend.setImagesTableClassifyingFieldName(this.pickerImagesTableClassifyingField.getName());
+        this.legend.setImageFieldName(this.pickerImageField.getName());
+        this.legend.setImageSelectedFieldName(this.pickerImageSelectedField.getName());
+        
+        return legend;
+    }
+
+    private int getImageSize() {
+        String s = this.txtImageSize.getText();
+        return ExpressionUtils.parseInt(null, s, DEFAULT_IMAGE_SIZE);
+    }
+    
+    @Override
+    public String getDescription() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        return i18n.getTranslation( "_Picture_marker_symbol_table_legend");
+    }
+
+    @Override
+    public ImageIcon getIcon() {
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
+        return theme.get("legend-overview-vectorial-picturemarkersymboltable");
+    }
+
+    @Override
+	public Class getParentClass() {
+		return Categories.class;
+	}
+
+    @Override
+    public String getTitle() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        return i18n.getTranslation( "_Picture_marker_symbol_table_legend");
+    }
+
+    @Override
+    public JPanel getPanel() {
+        return this;
+    }
+
+    @Override
+    public Class getLegendClass() {
+        return this.legendClass;
+    }
+
+    @Override
+    public boolean isSuitableFor(FLayer layer) {
+        if(layer instanceof FLyrVect){
+            try {
+                int shapeType = ((FLyrVect)layer).getShapeType();
+                return GeometryUtils.isSubtype(Geometry.TYPES.POINT, shapeType);
+            } catch (Exception ex) {
+                LOGGER.debug("Can't get shape type for layer "+layer.getName(), ex);
+                return false;
+            }
+        }
+        return false;
+    }
+
+    public void doChangeImageTableName() {
+        String tableName = (String) this.cboImagesTableName.getSelectedItem();
+        if( StringUtils.isNotBlank(tableName) ) {
+            FeatureStore store = null;
+            try {
+                DataManager dataManager = DALLocator.getDataManager();
+                StoresRepository repositories = dataManager.getStoresRepository();
+                store = (FeatureStore) repositories.getStore(tableName);
+                FeatureType ftype = store.getDefaultFeatureTypeQuietly();
+                boolean hasimages = false;
+                for (FeatureAttributeDescriptor attr : ftype) {
+                    if( StringUtils.equalsIgnoreCase("Image", attr.getDataProfileName()) ) {
+                        hasimages = true;
+                        break;
+                    } 
+                }
+                if( hasimages ) {
+                    this.pickerImagesTableClassifyingField.setFeatureType(ftype);
+                    this.pickerImageField.setFeatureType(ftype);
+                    this.pickerImageSelectedField.setFeatureType(ftype);
+                    this.pickerImagesTableClassifyingField.setEnabled(true);
+                    this.pickerImageField.setEnabled(true);
+                    this.pickerImageSelectedField.setEnabled(true);    
+                    
+                    this.pickerImagesTableClassifyingField.set(this.legend.getImagesTableClassifyingFieldName());
+                    this.pickerImageField.set(this.legend.getImageFieldName());
+                    this.pickerImageSelectedField.set(this.legend.getImageSelectedFieldName());
+                    return;
+                }
+            } catch(Exception ex) {
+                LOGGER.debug("Can't use '"+tableName+"' as table for retrieve images.",ex);
+                // Do nothing
+            } finally {
+                DisposeUtils.disposeQuietly(store);
+            }
+        }
+        this.pickerImagesTableClassifyingField.clean();
+        this.pickerImageField.clean();
+        this.pickerImageSelectedField.clean();
+        this.pickerImagesTableClassifyingField.setEnabled(false);
+        this.pickerImageField.setEnabled(false);
+        this.pickerImageSelectedField.setEnabled(false);
+    }
+    
+    private void createListOfAvailableTables() {
+        DataManager dataManager = DALLocator.getDataManager();
+        Map<String,Integer> allTableNames = new HashMap<>();
+        StoresRepository repositories = dataManager.getStoresRepository();
+        for (String tableName : repositories.keySet()) {
+            DataStoreParameters params = repositories.get(tableName);
+            if( params instanceof OpenFeatureStoreParameters ) {
+                if( allTableNames.containsKey(tableName) ) {
+                    allTableNames.put(tableName, allTableNames.get(tableName)+1);
+                } else {
+                    allTableNames.put(tableName, 1);
+                }
+            }
+        }
+        List<String> tableNames = new ArrayList<>();
+        for (String tableName : allTableNames.keySet()) {
+            if( allTableNames.get(tableName)==1 ) {
+                tableNames.add(tableName);
+            }
+        }
+        Collections.sort(tableNames);
+        this.availablesTables = tableNames;
+    }
+    
+    private ComboBoxModel createImagesTableNameModel() {
+        if( CollectionUtils.isEmpty(this.availablesTables) ) {
+            createListOfAvailableTables();
+        }
+        DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>();
+        for (String tableName : availablesTables) {
+            model.addElement(tableName);
+        }
+        return model;
+    }
+
+    private void doRefreshImageTables() {
+        availablesTables = null;
+        cboImagesTableName.setModel(createImagesTableNameModel());        
+        cboImagesTableName.setSelectedIndex(-1);
+    }
+
+    @Override
+    public ImageIcon loadImage(String imageName) {
+        return ToolsSwingUtils.loadImage(this, imageName);
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl/pom.xml	(revision 5837)
@@ -0,0 +1,38 @@
+<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.legend.urbanhorizontalsignage.swing</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.impl</artifactId>
+  <dependencies>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.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.legend.urbanhorizontalsignage.lib.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.tools.swing.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.symbology.lib.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+
+  </dependencies>
+</project>

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.impl
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/pom.xml	(revision 5837)
@@ -0,0 +1,16 @@
+<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.legend.urbanhorizontalsignage</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing</artifactId>
+  <packaging>pom</packaging>
+  <name>org.gvsig.legend.urbanhorizontalsignage.swing</name>
+  <modules>
+    <module>org.gvsig.legend.urbanhorizontalsignage.swing.api</module>
+    <module>org.gvsig.legend.urbanhorizontalsignage.swing.impl</module>
+  </modules>
+</project>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/pom.xml	(revision 5837)
@@ -0,0 +1,28 @@
+<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.legend.urbanhorizontalsignage.swing</artifactId>
+    <version>1.0.15</version>
+  </parent>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.api</artifactId>
+  <name>org.gvsig.legend.urbanhorizontalsignage.swing.api</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.tools.swing.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.symbology.swing.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+</project>
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 5837)
@@ -0,0 +1 @@
+org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageSwingLibrary
\ No newline at end of file
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingManager.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingManager.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingManager.java	(revision 5837)
@@ -0,0 +1,35 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.swing.api;
+
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageConfigPanel;
+import org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend.UrbanHorizontalSignageLegendEditor;
+
+public interface UrbanHorizontalSignageSwingManager {
+
+    public UrbanHorizontalSignageLegendEditor createUrbanHorizontalSignageLegendEditor();
+    
+    public UrbanHorizontalSignageConfigPanel createUrbanHorizontalSignageConfigPanel();
+
+    public ConvertLinesToPolygonsPanel createConvertLinesToPolygonsPanel();
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageConfigPanel.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageConfigPanel.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageConfigPanel.java	(revision 5837)
@@ -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.legend.urbanhorizontalsignage.swing.api.linelegend;
+
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+
+/**
+ *
+ * @author fdiaz
+ */
+public interface UrbanHorizontalSignageConfigPanel {
+
+    void fetch(UrbanHorizontalSignageConfig config);
+
+    void put(UrbanHorizontalSignageConfig config);
+
+    void setFeatureType(FeatureType type);
+    
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageLegendEditor.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageLegendEditor.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/linelegend/UrbanHorizontalSignageLegendEditor.java	(revision 5837)
@@ -0,0 +1,9 @@
+
+package org.gvsig.legend.urbanhorizontalsignage.swing.api.linelegend;
+
+import org.gvsig.app.project.documents.view.legend.gui.ILegendPanel;
+
+
+public interface UrbanHorizontalSignageLegendEditor extends ILegendPanel {
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/ConvertLinesToPolygonsPanel.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/ConvertLinesToPolygonsPanel.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/ConvertLinesToPolygonsPanel.java	(revision 5837)
@@ -0,0 +1,38 @@
+package org.gvsig.legend.urbanhorizontalsignage.swing.api;
+
+import javax.swing.tree.TreeModel;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.linelegend.UrbanHorizontalSignageConfig;
+import org.gvsig.tools.swing.api.Component;
+import org.gvsig.tools.task.SimpleTaskStatus;
+
+/**
+ *
+ * @author gvSIG Team
+ */
+public interface ConvertLinesToPolygonsPanel extends Component{
+
+    public void setSource(FeatureSet source);
+
+    public void put(UrbanHorizontalSignageConfig config);
+    
+    public void setStores(TreeModel model);
+
+    public UrbanHorizontalSignageConfig fetch(UrbanHorizontalSignageConfig config);
+
+    public UrbanHorizontalSignageConfig getConfig();
+    
+    public FeatureSet getSource();
+    
+    public FeatureStore getTargetStore();
+    
+    public SimpleTaskStatus getTaskStatus();
+    
+    public void setTaskStatusVisible(boolean visible);
+    
+    public boolean getDeleteSourceAtFinish();
+    
+    public void setDeleteSourceAtFinish(boolean deleteSourceAtFinish);
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLocator.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLocator.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLocator.java	(revision 5837)
@@ -0,0 +1,92 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.swing.api;
+
+import org.gvsig.tools.locator.AbstractLocator;
+import org.gvsig.tools.locator.Locator;
+import org.gvsig.tools.locator.LocatorException;
+
+
+public class UrbanHorizontalSignageSwingLocator extends AbstractLocator {
+
+    private static final String LOCATOR_NAME = "UrbanHorizontalSignageSwingLocator";
+
+    public static final String MANAGER_NAME = "UrbanHorizontalSignageSwingManager";
+
+    private static final String MANAGER_DESCRIPTION =
+        "Swing UrbanHorizontalSignage Manager of gvSIG";
+
+
+    /**
+     * Unique instance
+     */
+    private static final UrbanHorizontalSignageSwingLocator instance = new UrbanHorizontalSignageSwingLocator();
+
+
+    @Override
+    public String getLocatorName() {
+        return LOCATOR_NAME;
+    }
+
+
+    /**
+     * Registers the Class implementing the HeatmapSwingManager interface.
+     *
+     * @param clazz
+     *            implementing the HeatmapSwingManager interface
+     */
+    public static void registerUrbanHorizontalSignageSwingManager(Class clazz){
+        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
+    }
+
+    /**
+     * Registers the default Class implementing the HeatmapSwingManager interface
+     *
+     * @param clazz
+     *            implementing the HeatmapSwingManager interface
+     */
+    public static void registerDefaultUrbanHorizontalSignageSwingManager(Class clazz){
+        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
+    }
+
+    /**
+     * Return a reference to UrbanHorizontalSignageSwingManager.
+     *
+     * @return a reference to UrbanHorizontalSignageSwingManager
+     * @throws LocatorException
+     *             if there is no access to the class or the class
+     *             cannot be instantiated
+     * @see Locator#get(String)
+     */
+    public static UrbanHorizontalSignageSwingManager getUrbanHorizontalSignageSwingManager() throws LocatorException {
+        return (UrbanHorizontalSignageSwingManager)(getInstance().get(MANAGER_NAME));
+    }
+
+    /**
+     * @return
+     */
+    public static Locator getInstance() {
+        return instance;
+    }
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLibrary.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLibrary.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanhorizontalsignage/swing/api/UrbanHorizontalSignageSwingLibrary.java	(revision 5837)
@@ -0,0 +1,54 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2015 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 2
+ * 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.legend.urbanhorizontalsignage.swing.api;
+
+import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLibrary;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.tools.locator.ReferenceNotRegisteredException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class UrbanHorizontalSignageSwingLibrary extends AbstractLibrary {
+
+	private static final Logger LOG = LoggerFactory.getLogger(UrbanHorizontalSignageSwingLibrary.class);
+	
+	@Override
+	protected void doInitialize() throws LibraryException {
+		registerAsAPI(UrbanHorizontalSignageSwingLibrary.class);	
+        require(UrbanHorizontalSignageLibrary.class);
+	}
+	
+	@Override
+	protected void doPostInitialize() throws LibraryException {
+		// Validate there is any implementation registered.
+		UrbanHorizontalSignageSwingManager manager = UrbanHorizontalSignageSwingLocator.getUrbanHorizontalSignageSwingManager();
+		if (manager == null) {
+			throw new ReferenceNotRegisteredException(
+					UrbanHorizontalSignageSwingLocator.MANAGER_NAME, UrbanHorizontalSignageSwingLocator.getInstance());
+		}
+	}
+
+
+}
Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/api/PictureMarkerSymbolTableLegendEditor.java
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/api/PictureMarkerSymbolTableLegendEditor.java	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api/src/main/java/org/gvsig/legend/urbanverticalsignage/swing/api/PictureMarkerSymbolTableLegendEditor.java	(revision 5837)
@@ -0,0 +1,9 @@
+
+package org.gvsig.legend.urbanverticalsignage.swing.api;
+
+import org.gvsig.app.project.documents.view.legend.gui.ILegendPanel;
+
+
+public interface PictureMarkerSymbolTableLegendEditor extends ILegendPanel {
+
+}

Property changes on: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/org.gvsig.legend.urbanhorizontalsignage.swing/org.gvsig.legend.urbanhorizontalsignage.swing.api
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/pom.xml
===================================================================
--- org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/pom.xml	(revision 0)
+++ org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15/pom.xml	(revision 5837)
@@ -0,0 +1,94 @@
+<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>
+  <groupId>org.gvsig</groupId>
+  <artifactId>org.gvsig.legend.urbanhorizontalsignage</artifactId>
+  <version>1.0.15</version>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+  <description>Legend for urban horizontal signage.</description>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.desktop</artifactId>
+    <version>2.0.343</version>
+  </parent>
+
+  <url>https://devel.gvsig.org/sites/org.gvsig.legend.urbanhorizontalsignage/${project.version}</url>
+  <scm>
+    <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-base-legends/org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15</connection>
+    <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-base-legends/org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15</developerConnection>
+    <url>https://devel.gvsig.org/redmine/projects/gvsig-base-legends/repository/show/org.gvsig.legend.urbanhorizontalsignage/tags/org.gvsig.legend.urbanhorizontalsignage-1.0.15</url>
+  </scm>
+  <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>
+
+  <distributionManagement>
+    <site>
+      <id>gvsig-repository</id>
+      <url>dav:https://devel.gvsig.org/download/projects/gvsig-base-legends/pool/${project.artifactId}/${project.version}</url>
+    </site>
+  </distributionManagement>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <configuration>
+          <tagBase>https://devel.gvsig.org/svn/gvsig-base-legends/org.gvsig.legend.urbanhorizontalsignage/tags</tagBase>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.api</artifactId>
+        <version>1.0.15</version>
+      </dependency>
+      <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.lib.impl</artifactId>
+        <version>1.0.15</version>
+      </dependency>
+      <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.api</artifactId>
+        <version>1.0.15</version>
+      </dependency>
+      <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.swing.impl</artifactId>
+        <version>1.0.15</version>
+      </dependency>
+      <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.legend.urbanhorizontalsignage.app.mainplugin</artifactId>
+        <version>1.0.15</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <modules>
+    <module>org.gvsig.legend.urbanhorizontalsignage.lib</module>
+    <module>org.gvsig.legend.urbanhorizontalsignage.swing</module>
+    <module>org.gvsig.legend.urbanhorizontalsignage.app</module>
+  </modules>
+</project>
