Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 590)
@@ -0,0 +1,40 @@
+<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>
+      </includes>
+    </dependencySet>
+    
+    -->
+    
+  </dependencySets>
+
+</assembly>
\ No newline at end of file

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/assembly
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PrintPropertiesPage.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PrintPropertiesPage.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PrintPropertiesPage.java	(revision 590)
@@ -0,0 +1,140 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.gui.preferencespage;
+
+import java.awt.Dimension;
+import java.awt.GridLayout;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.preferences.AbstractPreferencePage;
+import org.gvsig.andami.preferences.StoreException;
+
+public class PrintPropertiesPage extends AbstractPreferencePage {
+
+    private static final long serialVersionUID = 5806304468312341691L;
+    private static final boolean FACTORY_DEFAULT_LANDSCAPED_PAGE = true;
+    protected static String id = PrintPropertiesPage.class.getName();
+    private ImageIcon icon;
+    private JRadioButton rdBtnPortraitPage;
+    private JRadioButton rdBtnLandscapePage;
+    private JCheckBox chkCustomMargins;
+    private JTextField txtTopMargin;
+    private JTextField txtLeftMargin;
+    private JTextField txtBottomMargin;
+    private JTextField txtRightMargin;
+
+    public PrintPropertiesPage() {
+        super();
+        setParentID(LayoutPage.class.getName());
+        icon = PluginServices.getIconTheme().get("prepare-page-icon");
+        rdBtnPortraitPage =
+            new JRadioButton(PluginServices.getText(this,
+                "options.layout.paper_properties.portrait"));
+        ImageIcon portrait =
+            PluginServices.getIconTheme().get("portrait-page-setup");
+        rdBtnLandscapePage =
+            new JRadioButton(PluginServices.getText(this,
+                "options.layout.paper_properties.landscaped"));
+        ImageIcon landscape =
+            PluginServices.getIconTheme().get("landscape-page-setup");
+
+        ButtonGroup group = new ButtonGroup();
+        group.add(rdBtnLandscapePage);
+        group.add(rdBtnPortraitPage);
+
+        JPanel aux = new JPanel(new GridLayout(2, 2, 10, 0));
+        aux.setPreferredSize(new Dimension(200, 150));
+        aux.setSize(200, 150);
+        aux.add(new JLabel(landscape));
+        aux.add(new JLabel(portrait));
+        aux.add(rdBtnLandscapePage);
+        aux.add(rdBtnPortraitPage);
+
+        addComponent(new JLabel(PluginServices.getText(this,
+            "options.layout.paper_properties.paper_direction")));
+        addComponent("", aux);
+        addComponent(chkCustomMargins =
+            new JCheckBox(PluginServices.getText(this, "personalizar_margenes")));
+
+        JPanel aux2 = new JPanel(new GridLayout(2, 4, 10, 3));
+        aux2.add(new JLabel(PluginServices.getText(this, "Superior")));
+        aux2.add(txtTopMargin = new JTextField(10));
+        aux2.add(new JLabel(PluginServices.getText(this, "Izquierdo")));
+        aux2.add(txtLeftMargin = new JTextField(10));
+        aux2.add(new JLabel(PluginServices.getText(this, "Inferior")));
+        aux2.add(txtBottomMargin = new JTextField(10));
+        aux2.add(new JLabel(PluginServices.getText(this, "Derecho")));
+        aux2.add(txtRightMargin = new JTextField(10));
+        addComponent("", aux2);
+    }
+
+    public void storeValues() throws StoreException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void setChangesApplied() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public String getID() {
+        return id;
+    }
+
+    public String getTitle() {
+        return PluginServices.getText(this,
+            "options.layout.paper_properties.title");
+    }
+
+    public JPanel getPanel() {
+        return this;
+    }
+
+    public void initializeValues() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void initializeDefaults() {
+        rdBtnLandscapePage.setSelected(FACTORY_DEFAULT_LANDSCAPED_PAGE);
+        rdBtnPortraitPage.setSelected(!FACTORY_DEFAULT_LANDSCAPED_PAGE);
+    }
+
+    public ImageIcon getIcon() {
+        return icon;
+    }
+
+    public boolean isValueChanged() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/LayoutPage.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/LayoutPage.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/LayoutPage.java	(revision 590)
@@ -0,0 +1,289 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.gui.preferencespage;
+
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.preferences.AbstractPreferencePage;
+import org.gvsig.andami.preferences.StoreException;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.Attributes;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.i18n.Messages;
+import org.gvsig.utils.XMLEntity;
+
+/**
+ * Layout preference page where the user can establish default values for
+ * <ol>
+ * <li><b>grid horizontal gap</b></li>
+ * <li><b>grid vertical gap</b></li>
+ * <li><b>show or hide grid</b></li>
+ * <li><b>adjust elements to grid</b></li>
+ * <li><b>show or hide rules</b></li>
+ * </ol>
+ * 
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ * 
+ */
+public class LayoutPage extends AbstractPreferencePage {
+
+    private static final long serialVersionUID = -8225970409668105935L;
+    static String id = LayoutPage.class.getName();;
+    private ImageIcon icon;
+    private JCheckBox chkGridEnabled;
+    private JCheckBox chkShowRules;
+    private JCheckBox chkShowGrid;
+    private JTextField txtVGap;
+    private JTextField txtHGap;
+    private JCheckBox chkShowInitialPageConfig;
+	private JCheckBox chkShowLayoutTOC;
+	private JComboBox cbHGapUnit;
+	private JComboBox cbVGapUnit;
+
+    private static DefaultLayoutManager layoutManager = null;
+
+    /**
+     * Builds preference page where the user can establish default values for
+     * <ol>
+     * <li><b>grid horizontal gap</b></li>
+     * <li><b>grid vertical gap</b></li>
+     * <li><b>show or hide grid</b></li>
+     * <li><b>adjust elements to grid</b></li>
+     * <li><b>show or hide rules</b></li>
+     * </ol>
+     */
+    public LayoutPage() {
+        super();
+        layoutManager =
+            (DefaultLayoutManager) ProjectManager.getInstance()
+                .getDocumentManager(DefaultLayoutManager.TYPENAME);
+
+        icon = IconThemeHelper.getImageIcon("document-map-icon");
+
+        GridBagLayoutPanel gridRulerPanel = new GridBagLayoutPanel();
+        Insets topInsets = new Insets(10, 10, 0, 10);
+        Insets insets = new Insets(8, 10, 0, 10);
+        Insets lastInsets = new Insets(8, 10, 12, 10);
+        gridRulerPanel.setBorder(BorderFactory.createTitledBorder(Messages.getText("Grid_and_ruler")));
+        
+        // horizontal gap text field and units combo
+        cbHGapUnit = new JComboBox();
+        String[] names = MapContext.getDistanceNames();
+        for (int i = 0; i < names.length; i++) {
+        	cbHGapUnit.addItem(PluginServices.getText(this, names[i]));
+        }
+        gridRulerPanel.addComponent(new JLabel(PluginServices.getText(this, "espaciado_horizontal")),
+            txtHGap = new JTextField(5), cbHGapUnit, GridBagConstraints.NONE, insets);
+        
+        // vertical gap text field and units combo
+        cbVGapUnit = new JComboBox();
+        for (int i = 0; i < names.length; i++) {
+        	cbVGapUnit.addItem(PluginServices.getText(this, names[i]));
+        }
+        gridRulerPanel.addComponent(new JLabel(PluginServices.getText(this, "espaciado_vertical")),
+        		txtVGap = new JTextField(5), cbVGapUnit, GridBagConstraints.NONE, insets);
+
+        // show/hide show check
+        gridRulerPanel.addComponent(chkShowGrid =
+            new JCheckBox(PluginServices.getText(this, "visualizar_cuadricula")), insets);
+
+        // enable/disable grid
+        gridRulerPanel.addComponent(chkGridEnabled =
+            new JCheckBox(PluginServices.getText(this, "malla_activada")), insets);
+
+        // show/hide rules
+        gridRulerPanel.addComponent(chkShowRules =
+            new JCheckBox(PluginServices.getText(this, "activar_regla")), lastInsets);
+        
+        addComponent(gridRulerPanel, topInsets);
+        
+        GridBagLayoutPanel behaviourPanel = new GridBagLayoutPanel();
+        behaviourPanel.setBorder(BorderFactory.createTitledBorder(Messages.getText("User_interface")));
+        
+        behaviourPanel.addComponent(
+        		chkShowInitialPageConfig = new JCheckBox(Messages.getText("Show_page_config_dialog_when_layout_document_is_created")),
+        		insets);
+        
+        behaviourPanel.addComponent(
+        		chkShowLayoutTOC = new JCheckBox(Messages.getText("Show_table_of_contents_TOC_for_Layout_views")),
+        		insets);
+        
+        addComponent(behaviourPanel, lastInsets);
+
+    }
+
+    public void storeValues() throws StoreException {
+        double hGap, vGap;
+        boolean gridEnabled, showRules, showGrid, showInitPageConfig,
+        	showLayoutToc;
+        String hGapUnits, vGapUnits;
+        try {
+            hGap = Double.parseDouble(txtHGap.getText());
+            hGapUnits = MapContext.getDistanceAbbr()[cbHGapUnit.getSelectedIndex()];
+            vGap = Double.parseDouble(txtVGap.getText());
+            vGapUnits = MapContext.getDistanceAbbr()[cbVGapUnit.getSelectedIndex()];
+            gridEnabled = chkGridEnabled.isSelected();
+            showGrid = chkShowGrid.isSelected();
+            showRules = chkShowRules.isSelected();
+            showInitPageConfig = chkShowInitialPageConfig.isSelected();
+            showLayoutToc = chkShowLayoutTOC.isSelected();
+        } catch (Exception e) {
+            throw new StoreException(PluginServices.getText(this,
+                "invalid_value_for_gap"));
+        }
+        layoutManager.setDefaultShowGrid(showGrid);
+        layoutManager.setDefaultAdjustToGrid(gridEnabled);
+        layoutManager.setDefaultShowRulers(showRules);
+        Attributes.setDefaultGridGap(hGap, vGap, hGapUnits, vGapUnits);
+        PluginServices ps = PluginsLocator.getManager().getPlugin(this);
+		XMLEntity xml = ps.getPersistentXML();
+        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME, hGap);
+        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME, vGap);
+        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME, hGapUnits);
+        xml.putProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME, vGapUnits);
+        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME, showGrid);
+        xml.putProperty(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME, gridEnabled);
+        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME, showRules);
+        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME, showInitPageConfig);
+        xml.putProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME, showLayoutToc);
+    }
+
+    public String getID() {
+        return id;
+    }
+
+    public String getTitle() {
+        return PluginServices.getText(this, "Mapa");
+    }
+
+    public JPanel getPanel() {
+        return this;
+    }
+
+    public void initializeValues() {
+    	PluginServices ps = PluginsLocator.getManager().getPlugin(this);
+		XMLEntity xml = ps.getPersistentXML();
+        double hGap = PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP;
+        double vGap = PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP;
+        boolean showGrid = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_SHOW;
+        boolean gridEnabled = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_ENABLE;
+        boolean showRules = PreferenceKeys.FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS;
+        boolean showInitPageConfig = PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT;
+        boolean showLayoutToc = PreferenceKeys.FACTORY_DEFAULT_SHOW_LAYOUT_TOC;
+        // horizontal gap
+        if (xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME)) {
+            hGap =
+                xml.getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME);
+        }
+        txtHGap.setText(String.valueOf(hGap));
+
+        // vertical gap
+        if (xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME)) {
+            vGap =
+                xml.getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME);
+        }
+        txtVGap.setText(String.valueOf(vGap));
+        
+        String hGapUnit = xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME)?
+        		xml.getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME):
+        			PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT;
+        cbHGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(hGapUnit));
+        
+        String vGapUnit = xml.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME)?
+                		xml.getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME):
+                			PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT;
+        cbVGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(vGapUnit));
+
+        // show/hide grid check
+        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME)) {
+            showGrid =
+                xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME);
+        }
+        chkShowGrid.setSelected(showGrid);
+
+        // enable/disable grid check
+        if (xml.contains(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME)) {
+            gridEnabled =
+                xml.getBooleanProperty(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME);
+        }
+        chkGridEnabled.setSelected(gridEnabled);
+
+        // enable/disable rules
+        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME)) {
+            showRules =
+                xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME);
+        }
+        chkShowRules.setSelected(showRules);
+        
+        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME)) {
+        	showInitPageConfig = xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME);
+        }
+        chkShowInitialPageConfig.setSelected(showInitPageConfig);
+        
+        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME)) {
+        	showLayoutToc = xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME);
+        }
+        chkShowLayoutTOC.setSelected(showLayoutToc);
+
+        layoutManager.setDefaultShowGrid(showGrid);
+        layoutManager.setDefaultAdjustToGrid(gridEnabled);
+        layoutManager.setDefaultShowRulers(showRules);
+        Attributes.setDefaultGridGap(hGap, vGap, hGapUnit, vGapUnit);
+    }
+
+    public void initializeDefaults() {
+        txtHGap.setText(String.valueOf(PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP));
+        txtVGap.setText(String.valueOf(PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP));
+        cbHGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT));
+        cbVGapUnit.setSelectedIndex(Attributes.getDistanceAbbrPosition(PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT));
+        chkShowGrid.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_SHOW);
+        chkGridEnabled.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_ENABLE);
+        chkShowRules.setSelected(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS);
+        chkShowInitialPageConfig.setSelected(PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT);
+    }
+
+    public ImageIcon getIcon() {
+        return icon;
+    }
+
+    public boolean isValueChanged() {
+        return super.hasChanged();
+    }
+
+    public void setChangesApplied() {
+        setChanged(false);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PreferenceKeys.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PreferenceKeys.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/PreferenceKeys.java	(revision 590)
@@ -0,0 +1,32 @@
+package org.gvsig.app.gui.preferencespage;
+
+/**
+ * The purpose of this interface is to define the keys used for the
+ * persistence of this plugin in order to make these keys available
+ * on library level, instead of defining them within the
+ * preference page (which has UI dependences).
+ * 
+ * @author Cesar Martinez Izquierdo <cesar.izq@gmail.com>
+ *
+ */
+public interface PreferenceKeys {
+    String DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME = "DefaultShowLayoutGrid";
+    String DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME = "DefaultEnableLayoutGrid";
+    String DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME = "DefaultShowLayoutRules";
+    String DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME = "DefaultGridVerticalGap";
+    String DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME = "DefaultGridHorizontalGap";
+    String DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME = "DefaultGridVerticalGapUnits";
+    String DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME = "DefaultGridHorizontalGapUnits";
+    String DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME = "DefaulShowInitialPageConfigLayout";
+    String DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME = "DefaultShowLayoutToc";
+    boolean FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS = true;
+    boolean FACTORY_DEFAULT_LAYOUT_GRID_SHOW = true;
+    double FACTORY_DEFAULT_VERTICAL_GAP = 1.0d;
+    double FACTORY_DEFAULT_HORIZONTAL_GAP = 1.0d;
+    String FACTORY_DEFAULT_VERTICAL_GAP_UNIT = "cm";
+    String FACTORY_DEFAULT_HORIZONTAL_GAP_UNIT = "cm";
+    boolean FACTORY_DEFAULT_LAYOUT_GRID_ENABLE = false;
+    boolean FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT = true;
+    boolean FACTORY_DEFAULT_SHOW_LAYOUT_TOC = true;
+
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/gui
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutNotification.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutNotification.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutNotification.java	(revision 590)
@@ -0,0 +1,41 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ *
+ */
+public class DefaultLayoutNotification implements LayoutNotification {
+    private String type;
+       
+    public DefaultLayoutNotification(String type) {
+        super();
+        this.type = type;
+    }
+    
+    public String getType() {       
+        return type;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/AbstractLayoutContextMenuAction.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/AbstractLayoutContextMenuAction.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/AbstractLayoutContextMenuAction.java	(revision 590)
@@ -0,0 +1,90 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.AbstractContextMenuAction;
+import org.gvsig.tools.extensionpoint.ExtensionBuilder;
+
+public abstract class AbstractLayoutContextMenuAction extends
+    AbstractContextMenuAction implements ExtensionBuilder {
+
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(AbstractLayoutContextMenuAction.class);
+    protected LayoutPanel layoutPanel;
+
+    public LayoutPanel getLayout() {
+        return this.layoutPanel;
+    }
+
+    public void setLayout(LayoutPanel layoutPanel) {
+        this.layoutPanel = layoutPanel;
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public abstract void execute(LayoutContext layoutContext,
+        IFFrame[] selectedFrames);
+
+    public Object create() {
+        return this;
+    }
+
+    public Object create(Map args) {
+        // TODO Auto-generated method stub
+        return this;
+    }
+
+    public Object create(Object[] args) {
+        // TODO Auto-generated method stub
+        return this;
+    }
+
+    public boolean isEnabled(Object item, Object[] selectedItems) {
+        return isEnabled((LayoutContext) item, (IFFrame[]) selectedItems);
+    }
+
+    public boolean isVisible(Object item, Object[] selectedItems) {
+        return isVisible((LayoutContext) item, (IFFrame[]) selectedItems);
+    }
+
+    public void execute(Object item, Object[] selectedItems) {
+        execute((LayoutContext) item, (IFFrame[]) selectedItems);
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PositionLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PositionLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PositionLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,76 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FPositionDialog;
+
+/**
+ * Modifica la posici�n y tama�o del fframe seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class PositionLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "position";
+    }
+
+    public int getGroupOrder() {
+        return 5;
+    }
+
+    public int getOrder() {
+        return 3;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "tamano_posicion");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0)) {
+            return true;
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        if (selectedFrames.length != 0) {
+            for (int i = 0; i < selectedFrames.length; i++) {
+                FPositionDialog positiondialog =
+                    new FPositionDialog(getLayout(), selectedFrames[i]);
+                PluginServices.getMDIManager().addWindow(positiondialog);
+            }
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PropertyLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PropertyLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PropertyLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,99 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+
+/**
+ * Abre el di�logo de propiedades del FFrame seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class PropertyLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    private static LayoutManager layoutManager = null;
+
+    public PropertyLayoutMenuEntry() {
+        layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+    }
+
+    public String getGroup() {
+        return "layout";
+    }
+
+    public int getGroupOrder() {
+        return 6;
+    }
+
+    public int getOrder() {
+        return 1;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "propiedades");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        IFFrame[] selecList = layoutContext.getSelectedFFrames();
+        if (selecList.length == 1) {
+            IFFrame frame = selecList[0];
+            IFFrameDialog fframeDialog =
+                layoutManager.createFFrameDialog(frame, layoutPanel, layoutContext.getAT());
+            if (fframeDialog != null) {
+                PluginServices.getMDIManager().addWindow(fframeDialog);
+                IFFrame fframeAux = fframeDialog.getFFrame();
+                //fframeAux is null when the cancel button has been clicked
+                if (fframeAux != null){
+                    if (fframeAux instanceof IFFrameUseFMap)
+                        ((IFFrameUseFMap) fframeAux).refresh();
+                    layoutContext.getFrameCommandsRecord().update(frame, fframeAux);
+                    fframeAux.getBoundingBox(layoutContext.getAT());                
+                    layoutContext.updateFFrames();
+                    layoutContext.notifAllObservers();
+                }
+            }
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CancelLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CancelLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CancelLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,81 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+
+/**
+ * Cancela los graficos que se esten insertando sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class CancelLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "geometries";
+    }
+
+    public int getGroupOrder() {
+        return 3;
+    }
+
+    public int getOrder() {
+        return 2;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "cancel");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        String currentLayout = getLayout().getLayoutControl().getCurrentTool();
+        if ((currentLayout.equals("layoutaddpolyline")
+            || currentLayout.equals("layoutaddpolygon")
+            || currentLayout.equals("layoutaddcircle")
+            || currentLayout.equals("layoutaddline") || currentLayout
+                .equals("layoutaddrectangle"))
+            && getLayout().getLayoutControl().getGeometryAdapter().getPoints().length > 0) {
+            return true;
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        if (getLayout().getLayoutControl().getCurrentLayoutTool().getListener() instanceof ILayoutGraphicListener) {
+            GeometryAdapter ga =
+                ((ILayoutGraphicListener) getLayout().getLayoutControl()
+                    .getCurrentLayoutTool().getListener())
+                    .createGeometryAdapter();
+            getLayout().getLayoutControl().setGeometryAdapter(ga);
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SelectAllLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SelectAllLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SelectAllLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Realiza selecci�n de todos los FFrames del Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class SelectAllLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "layout";
+    }
+
+    public int getGroupOrder() {
+        return 6;
+    }
+
+    public int getOrder() {
+        return 2;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "seleccionar_todos");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (!(getLayout().getLayoutControl().getGeometryAdapter().getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        IFFrame[] fframes = layoutContext.getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+            fframe.setSelected(true);
+        }
+        layoutContext.notifAllObservers();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/TerminateLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/TerminateLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/TerminateLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,74 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+
+/**
+ * Termina los graficos que se esten insertando sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class TerminateLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "geometries";
+    }
+
+    public int getGroupOrder() {
+        return 3;
+    }
+
+    public int getOrder() {
+        return 1;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "terminar");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        String currentLayout = getLayout().getLayoutControl().getCurrentTool();
+        if ((currentLayout.equals("layoutaddpolyline") || currentLayout
+            .equals("layoutaddpolygon"))
+            && getLayout().getLayoutControl().getGeometryAdapter().getPoints().length > 0) {
+            return true;
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        if (getLayout().getLayoutControl().getCurrentLayoutTool().getListener() instanceof ILayoutGraphicListener) {
+            ((ILayoutGraphicListener) getLayout().getLayoutControl()
+                .getCurrentLayoutTool().getListener()).endGraphic();
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BehindLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BehindLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BehindLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,92 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Coloca detr�s de todos los fframes el fframe seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class BehindLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "position";
+    }
+
+    public int getGroupOrder() {
+        return 5;
+    }
+
+    public int getOrder() {
+        return 2;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "colocar_detras");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0)) {
+            return true;
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        layoutContext.getFrameCommandsRecord().startComplex(
+            PluginServices.getText(this, "change_behind"));
+        for (int i = selectedFrames.length - 1; i >= 0; i--) {
+            IFFrame fframe = selectedFrames[i];
+            if (fframe instanceof FFrameGroup) {
+                ((FFrameGroup) fframe).setAt(layoutContext.getAT());
+            }
+
+            IFFrame fframeAux;
+            try {
+                fframeAux = (IFFrame) fframe.clone();
+                fframeAux.setLevel(layoutContext.getNumBehind());
+                layoutContext.getFrameCommandsRecord()
+                    .update(fframe, fframeAux);
+                fframeAux.getBoundingBox(layoutContext.getAT());
+            } catch (CloneNotSupportedException e) {
+                LOG.error("It is not possible clonate the object", e);
+            }
+
+        }
+        layoutContext.getFrameCommandsRecord().endComplex();
+        layoutContext.updateFFrames();
+        layoutContext.notifAllObservers();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CopyLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CopyLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CopyLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,74 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutKeyEvent;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Copia el FFrame seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class CopyLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "copypaste";
+    }
+
+    public int getGroupOrder() {
+        return 4;
+    }
+
+    public int getOrder() {
+        return 1;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "copy");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        try {
+            LayoutKeyEvent.copy(getLayout());
+        } catch (CloneNotSupportedException e) {
+            NotificationManager.addError(e);
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CutLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CutLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/CutLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,74 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutKeyEvent;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Corta el FFrame seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class CutLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "copypaste";
+    }
+
+    public int getGroupOrder() {
+        return 4;
+    }
+
+    public int getOrder() {
+        return 3;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "cut");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        try {
+            LayoutKeyEvent.cut(getLayout());
+        } catch (CloneNotSupportedException e) {
+            NotificationManager.addError(e);
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PasteLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PasteLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/PasteLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,74 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutKeyEvent;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Pega el FFrame ya copiado previamente.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class PasteLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "copypaste";
+    }
+
+    public int getGroupOrder() {
+        return 4;
+    }
+
+    public int getOrder() {
+        return 2;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "paste");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (LayoutKeyEvent.hasSelection()
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        try {
+            LayoutKeyEvent.paste(getLayout());
+        } catch (CloneNotSupportedException e) {
+            NotificationManager.addError(e);
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SimplifyLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SimplifyLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/SimplifyLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,82 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Realiza una simplificaci�n de una leyenda previamente seleccionada en
+ * s�mbolos y textos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class SimplifyLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "legend";
+    }
+
+    public int getGroupOrder() {
+        return 7;
+    }
+
+    public int getOrder() {
+        return 1;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "simplificar_leyenda");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        for (int i = 0; i < selectedFrames.length; i++) {
+            if (selectedFrames[i] instanceof FFrameLegend
+                && !(getLayout().getLayoutControl().getGeometryAdapter()
+                    .getPoints().length > 0)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        layoutContext.getFrameCommandsRecord().startComplex(
+            PluginServices.getText(this, "simplify"));
+        for (int i = selectedFrames.length - 1; i >= 0; i--) {
+            IFFrame fframe = selectedFrames[i];
+            if (fframe instanceof FFrameLegend) {
+                ((FFrameLegend) fframe).toFFrames(layoutContext);
+            }
+        }
+        layoutContext.getFrameCommandsRecord().endComplex();
+        layoutContext.notifAllObservers();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/RefreshLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/RefreshLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/RefreshLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,66 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Refresca todos los fframes del Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class RefreshLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "layout";
+    }
+
+    public int getGroupOrder() {
+        return 6;
+    }
+
+    public int getOrder() {
+        return 3;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "refrescar");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (!(getLayout().getLayoutControl().getGeometryAdapter().getPoints().length > 0))
+            return true;
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        layoutContext.fullRefresh();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BeforeLayoutMenuEntry.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BeforeLayoutMenuEntry.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui/BeforeLayoutMenuEntry.java	(revision 590)
@@ -0,0 +1,91 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.contextmenu.gui;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Coloca delante de todos los fframes el fframe seleccionado.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class BeforeLayoutMenuEntry extends AbstractLayoutContextMenuAction {
+
+    public String getGroup() {
+        return "position";
+    }
+
+    public int getGroupOrder() {
+        return 5;
+    }
+
+    public int getOrder() {
+        return 1;
+    }
+
+    public String getText() {
+        return PluginServices.getText(this, "colocar_delante");
+    }
+
+    public boolean isEnabled(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        return true;
+    }
+
+    public boolean isVisible(LayoutContext layoutContext,
+        IFFrame[] selectedFrames) {
+        if (selectedFrames.length == 1
+            && !(getLayout().getLayoutControl().getGeometryAdapter()
+                .getPoints().length > 0)) {
+            return true;
+        }
+        return false;
+    }
+
+    public void execute(LayoutContext layoutContext, IFFrame[] selectedFrames) {
+        layoutContext.getFrameCommandsRecord().startComplex(
+            PluginServices.getText(this, "change_before"));
+        for (int i = selectedFrames.length - 1; i >= 0; i--) {
+            IFFrame fframe = selectedFrames[i];
+            if (fframe instanceof FFrameGroup) {
+                ((FFrameGroup) fframe).setAt(layoutContext.getAT());
+            }
+
+            IFFrame fframeAux;
+            try {
+                fframeAux = (IFFrame) fframe.clone();
+                fframeAux.setLevel(layoutContext.getNumBefore());
+                layoutContext.getFrameCommandsRecord()
+                    .update(fframe, fframeAux);
+                fframeAux.getBoundingBox(layoutContext.getAT());
+            } catch (CloneNotSupportedException e) {
+                LOG.error("It is not possible clonate the object", e);
+            }
+        }
+        layoutContext.getFrameCommandsRecord().endComplex();
+        layoutContext.updateFFrames();
+        layoutContext.notifAllObservers();
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu/gui
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/contextmenu
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/CircleAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/CircleAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/CircleAdapter.java	(revision 590)
@@ -0,0 +1,138 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.Geometry.TYPES;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Circle;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+public class CircleAdapter extends GeometryAdapter {
+    public static final String PERSISTENCE_DEFINITION_NAME = "CircleAdapter";
+    private static final Logger logger = LoggerFactory
+        .getLogger(CircleAdapter.class);
+    private Point2D pointPosition = new Point2D.Double();
+    private AffineTransform identity = new AffineTransform();
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    public CircleAdapter() {
+        super();
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param g
+     *            DOCUMENT ME!
+     * @param at
+     *            DOCUMENT ME!
+     * @param andLastPoint
+     *            DOCUMENT ME!
+     */
+    public void paint(Graphics2D g, AffineTransform at, boolean andLastPoint) {
+        if (getPoints().length > 0) {
+            if (andLastPoint) {
+                obtainShape(pointPosition);
+            }
+
+            Geometry shapeAux = getGeometry(at);
+
+            ILineSymbol symbol =
+                (ILineSymbol) mapContextManager.getSymbolManager()
+                    .createSymbol(ILineSymbol.SYMBOL_NAME);
+            ILineSymbol redOutline =
+                (ILineSymbol) MapContextLocator.getSymbolManager()
+                    .createSymbol(ILineSymbol.SYMBOL_NAME);
+            redOutline.setLineColor(Color.red);
+            symbol.draw(g, identity, shapeAux, null, null);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param p
+     *            DOCUMENT ME!
+     */
+    public void pointPosition(Point2D p) {
+        pointPosition = p;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param p
+     *            DOCUMENT ME!
+     * @throws CreateGeometryException 
+     */
+    public void obtainShape(Point2D p) {
+        Point2D[] points = getPoints();
+
+        double x = (points[0]).getX(); 
+        double y = (points[0]).getY();
+        double r = p.distance(points[0]);
+              
+        try {
+            Circle circle = (Circle)geomManager.create(TYPES.CIRCLE, SUBTYPES.GEOM2D);
+            
+            double flatness = geomManager.getFlatness();
+            
+            geomManager.setFlatness(0.01);
+            circle.setPoints(geomManager.createPoint(x, y, SUBTYPES.GEOM2D), r) ;
+            geomManager.setFlatness(flatness);
+            
+            setGeometry(circle);
+        } catch (CreateGeometryException e) {
+            logger.error("Error creating the circle", e);
+        }            
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(CircleAdapter.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Circle Adapter persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(GeometryAdapter.PERSISTENCE_DEFINITION_NAME));
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/RectangleAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/RectangleAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/RectangleAdapter.java	(revision 590)
@@ -0,0 +1,88 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.geom.Point2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.Geometry.TYPES;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Surface;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class RectangleAdapter extends PolygonAdapter {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "RectangleAdapter";
+    private static final Logger logger = LoggerFactory.getLogger(RectangleAdapter.class);
+
+    public RectangleAdapter() {
+        super();
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     *            DOCUMENT ME!
+     */
+    public void obtainShape(Point2D p) {
+        Point2D[] points = getPoints();
+
+        try {
+            Surface surface = (Surface)geomManager.create(TYPES.SURFACE, SUBTYPES.GEOM2D);
+            if (points.length > 0) {
+                surface.addVertex(geomManager.createPoint(points[0].getX(), points[0].getY(), SUBTYPES.GEOM2D));
+                surface.addVertex(geomManager.createPoint(p.getX(), points[0].getY(), SUBTYPES.GEOM2D));
+                surface.addVertex(geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D));
+                surface.addVertex(geomManager.createPoint(points[0].getX(), p.getY(), SUBTYPES.GEOM2D));
+                surface.addVertex(geomManager.createPoint(points[0].getX(), points[0].getY(), SUBTYPES.GEOM2D));
+            }
+
+            setGeometry(surface);
+        } catch (CreateGeometryException e) {
+            logger.error("Error creating the circle", e);
+        }
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(RectangleAdapter.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Recangle Adapter persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(GeometryAdapter.PERSISTENCE_DEFINITION_NAME));
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolygonAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolygonAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolygonAdapter.java	(revision 590)
@@ -0,0 +1,92 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.geom.Point2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.Geometry.TYPES;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Surface;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class PolygonAdapter extends PolyLineAdapter {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "PolygonAdapter";
+    private static final Logger logger = LoggerFactory
+        .getLogger(PolygonAdapter.class);
+
+    public PolygonAdapter() {
+        super();
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     *            DOCUMENT ME!
+     */
+    public void obtainShape(Point2D p) {
+        Point2D[] points = getPoints();
+
+        try {
+            Surface surface = (Surface)geomManager.create(TYPES.SURFACE, SUBTYPES.GEOM2D);
+            if (points.length > 0) {
+                surface.addVertex(geomManager.createPoint(points[0].getX(), points[0].getY(), SUBTYPES.GEOM2D));
+            }
+            for (int i = 1; i < points.length; i++) {
+                surface.addVertex(geomManager.createPoint(points[i].getX(), points[i].getY(), SUBTYPES.GEOM2D));
+            }
+            if (points.length > 0) {
+                surface.addVertex(geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D));
+                surface.addVertex(geomManager.createPoint(points[0].getX(), points[0].getY(), SUBTYPES.GEOM2D));
+            }
+
+            setGeometry(surface);
+        } catch (CreateGeometryException e) {
+            logger.error("Error creating the circle", e);
+        }
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(PolygonAdapter.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Polygon Adapter persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(GeometryAdapter.PERSISTENCE_DEFINITION_NAME));
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PointAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PointAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PointAdapter.java	(revision 590)
@@ -0,0 +1,102 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class PointAdapter extends PolyLineAdapter {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "PointAdapter";
+    private static final Logger logger = LoggerFactory
+        .getLogger(PointAdapter.class);
+
+    public PointAdapter() {
+        super();
+    }
+
+    public void paint(Graphics2D g, AffineTransform at, boolean andLastPoint) {
+
+    }
+
+    public void obtainShape(Point2D p) {
+        try {
+            Point point = geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D);   
+            setGeometry(point);
+        } catch (CreateGeometryException e) {
+            logger.error("Error creating a point", e);
+        }       
+    }
+
+    public Rectangle2D getBounds2D() {
+        Rectangle2D r = getGeometry(new AffineTransform()).getBounds2D();
+        double w = r.getWidth();
+        double h = r.getHeight();
+        double x = r.getX();
+        double y = r.getY();
+        boolean modified = false;
+        if (r.getWidth() < 0.5) {
+            modified = true;
+            w = 1;
+            x = x - 0.25;
+        }
+        if (r.getHeight() < 0.5) {
+            modified = true;
+            h = 1;
+            // y=y-0.5;
+        }
+        if (modified) {
+            return new Rectangle2D.Double(x, y, w, h);
+        }
+        return r;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(PointAdapter.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Point Adapter persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(GeometryAdapter.PERSISTENCE_DEFINITION_NAME));
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/GeometryAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/GeometryAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/GeometryAdapter.java	(revision 590)
@@ -0,0 +1,298 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.Persistent;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * Abstract adaptor to relate the geometries with the fframes and to be able to
+ * integrate them in the Layout.
+ *
+ * @author Vicente Caballero Navarro
+ */
+public abstract class GeometryAdapter implements Persistent, Cloneable {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "GeometryAdapter";
+
+    private static final String POINTS_FIELD = "points";
+
+    protected static final GeometryManager geomManager = GeometryLocator.getGeometryManager();
+
+    private List<Point2D> points = new ArrayList<Point2D>();
+    private Geometry geometry;
+
+    public GeometryAdapter() {
+        super();
+    }
+
+    /**
+     * Add a point to de geometry.
+     *
+     * @param point Point that is added.
+     *
+     * @return Number of points that contains the geometry.
+     */
+    public int addPoint(Point2D point) {
+        points.add(point);
+
+        return points.size();
+    }
+
+    /**
+     * End the creation of the geometry with the last point added.
+     */
+    public void end() {
+        obtainShape((Point2D) points.get(points.size() - 1));
+    }
+
+    /**
+     * Adds the GeneralPathX with all the points of the geometry.
+     *
+     * @param gpx GeneralPathX
+     */
+    protected void setGeometry(Geometry geometry) {
+        this.geometry = geometry;
+    }
+
+    /**
+     * Obtains the geometry passing him as parameter the last point.
+     *
+     * @param p Last Point.
+     * @throws CreateGeometryException
+     */
+    public abstract void obtainShape(Point2D p);
+
+    /**
+     * Applies the transformation to all the points of the geometry.
+     *
+     * @param at AffineTransform
+     */
+    public void applyTransform(AffineTransform at) {
+        for (int i = 0; i < points.size(); i++) {
+            at.transform((Point2D) points.get(i), (Point2D) points.get(i));
+        }
+
+        geometry.transform(at);
+    }
+
+    /**
+     * It draws the geometry on the Graphics that is passed like parameter.
+     *
+     * @param g Graphics
+     * @param at AffineTransform
+     * @param symbol FSymbol
+     */
+    public void draw(Graphics2D g, AffineTransform at, ISymbol symbol) {
+        symbol.draw(g, at, geometry, null, null);
+    }
+
+    /**
+     * It print the geometry on the Graphics that is passed like parameter.
+     *
+     * @param g Graphics
+     * @param at AffineTransform
+     * @param symbol ISymbol
+     * @param properties
+     */
+    public void print(Graphics2D g, AffineTransform at,
+            ISymbol symbol, PrintAttributes properties) {
+        Geometry geom = getGeometry();
+        symbol.print(g, at, geom, properties);
+    }
+
+    /**
+     * Paints the geometry on the Graphics adding him the last point if the
+     * parameter andLastPoint is true.
+     *
+     * @param g Graphics
+     * @param at AffineTransform
+     * @param andLastPoint If true add last point.
+     */
+    public abstract void paint(Graphics2D g, AffineTransform at,
+            boolean andLastPoint);
+
+    /**
+     * Set the point of cursor.
+     *
+     * @param p Point of cursor.
+     */
+    public abstract void pointPosition(Point2D p);
+
+    /**
+     * Obtains the shape of the Geometry.
+     *
+     * @return Geometry.
+     * @deprecated
+     */
+    public Geometry getGeometry(AffineTransform at) {
+        Geometry clonedGeom = geometry.cloneGeometry();
+        clonedGeom.transform(at);
+        return clonedGeom;
+    }
+
+    /**
+     * Returns the geometry to draw
+     *
+     * @return the geometry
+     */
+    public Geometry getGeometry() {
+        return geometry;
+    }
+
+    /**
+     * Returns all the points of Geometry.
+     *
+     * @return Array of points.
+     */
+    public Point2D[] getPoints() {
+        return (Point2D[]) points.toArray(new Point2D[0]);
+    }
+
+    /**
+     * Draws a handler in each vertex of the Geometry.
+     *
+     * @param g Graphics
+     * @param at AffineTransform.
+     */
+    public void drawVertex(Graphics2D g, AffineTransform at) {
+        Point2D[] ps = getPoints();
+        Point2D[] pointRes = new Point2D[ps.length];
+        at.transform(ps, 0, pointRes, 0, ps.length);
+
+        int d = 3;
+
+        for (int i = 0; i < pointRes.length; i++) {
+            g.fillRect((int) pointRes[i].getX() - d, (int) pointRes[i].getY()
+                    - d, d * 2, d * 2);
+        }
+    }
+
+    /**
+     * Modifies a point of the Geometry from an index by the one that is passed
+     * like parameter.
+     *
+     * @param pos Index
+     * @param point Point
+     */
+    public void changePoint(int pos, Point2D point) {
+        this.points.set(pos, point);
+    }
+
+    /**
+     * Add all the points of Geometry.
+     *
+     * @param points All points.
+     */
+    public void setPoints(Point2D[] points) {
+        this.points.clear();
+
+        for (int i = 0; i < points.length; i++) {
+            this.points.add(points[i]);
+        }
+    }
+
+    /**
+     * Remove last point of Geometry.
+     */
+    public void delLastPoint() {
+        if (points.size() > 0) {
+            points.remove(points.size() - 1);
+        }
+    }
+
+    public Object clone() throws CloneNotSupportedException {
+        GeometryAdapter cloneAdapter = (GeometryAdapter) super.clone();
+        Collections.copy(cloneAdapter.points, this.points);
+        cloneAdapter.geometry = (Geometry) this.geometry.cloneGeometry();
+        return cloneAdapter;
+    }
+
+    public Rectangle2D getBounds2D() {
+        Rectangle2D r = geometry.getBounds2D();
+        double w = r.getWidth();
+        double h = r.getHeight();
+        double x = r.getX();
+        double y = r.getY();
+        boolean modified = false;
+        if (r.getWidth() < 0.5) {
+            modified = true;
+            w = 0.5;
+            x = x - 0.25;
+        }
+        if (r.getHeight() < 0.5) {
+            modified = true;
+            h = 0.5;
+            y = y - 0.25;
+        }
+        if (modified) {
+            return new Rectangle2D.Double(x, y, w, h);
+        }
+        return r;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition
+                    = manager.addDefinition(GeometryAdapter.class,
+                            PERSISTENCE_DEFINITION_NAME,
+                            "GeometryAdapter persistence definition", null, null);
+
+            definition.addDynFieldList(POINTS_FIELD)
+                    .setClassOfItems(Point2D.class).setMandatory(true);
+        }
+
+        CircleAdapter.registerPersistent();
+        PointAdapter.registerPersistent();
+        PolygonAdapter.registerPersistent();
+        PolyLineAdapter.registerPersistent();
+        RectangleAdapter.registerPersistent();
+    }
+
+    public void loadFromState(PersistentState state)
+            throws PersistenceException {
+        points = state.getList(POINTS_FIELD);
+        obtainShape((Point2D) points.get(points.size() - 1));
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(POINTS_FIELD, points);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolyLineAdapter.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolyLineAdapter.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters/PolyLineAdapter.java	(revision 590)
@@ -0,0 +1,139 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.geometryadapters;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.Geometry.TYPES;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Curve;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class PolyLineAdapter extends GeometryAdapter {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "PolyLineAdapter";
+    private static final Logger logger = LoggerFactory
+        .getLogger(PolyLineAdapter.class);
+    protected Point2D pointPosition = new Point2D.Double();
+    private AffineTransform identity = new AffineTransform();
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    public PolyLineAdapter() {
+        super();
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     *            DOCUMENT ME!
+     */
+    public void obtainShape(Point2D p) {
+        Point2D[] points = getPoints();
+
+        try {
+            Curve curve = (Curve)geomManager.create(TYPES.CURVE, SUBTYPES.GEOM2D);
+            if (points.length > 0) {
+                curve.addVertex(geomManager.createPoint(points[0].getX(), points[0].getY(), SUBTYPES.GEOM2D));
+            }
+            for (int i = 1; i < points.length; i++) {
+                curve.addVertex(geomManager.createPoint(points[i].getX(), points[i].getY(), SUBTYPES.GEOM2D));
+            }
+            if (points.length > 0) {
+                curve.addVertex(geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D));
+            }
+
+            setGeometry(curve);
+        } catch (CreateGeometryException e) {
+            logger.error("Error creating the circle", e);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param g
+     *            DOCUMENT ME!
+     * @param at
+     *            DOCUMENT ME!
+     * @param andLastPoint
+     *            DOCUMENT ME!
+     */
+    public void paint(Graphics2D g, AffineTransform at, boolean andLastPoint) {
+        if (andLastPoint) {
+            obtainShape(pointPosition);
+        }
+
+        Geometry shapeAux = getGeometry(at);
+        // ISymbol symbol = new FSymbol(FConstant.SYMBOL_TYPE_LINE, Color.red);
+        ILineSymbol symbol =
+            (ILineSymbol) mapContextManager.getSymbolManager().createSymbol(
+                ILineSymbol.SYMBOL_NAME);
+        symbol.setLineColor(Color.RED);
+        symbol.draw(g, identity, shapeAux, null, null);
+        // FGraphicUtilities.DrawShape(g, identity, shapeAux,
+        // new FSymbol(FConstant.SYMBOL_TYPE_LINE, Color.red));
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     *            DOCUMENT ME!
+     */
+    public void pointPosition(Point2D p) {
+        pointPosition = p;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(PolyLineAdapter.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "PolyLine Adapter persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(GeometryAdapter.PERSISTENCE_DEFINITION_NAME));
+        }
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/geometryadapters
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutDraw.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutDraw.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutDraw.java	(revision 590)
@@ -0,0 +1,714 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.print.Doc;
+import javax.print.DocFlavor;
+import javax.print.DocPrintJob;
+import javax.print.PrintException;
+import javax.print.SimpleDoc;
+import javax.print.StreamPrintService;
+import javax.print.StreamPrintServiceFactory;
+import javax.print.attribute.DocAttributeSet;
+import javax.print.attribute.HashDocAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.swing.JOptionPane;
+
+import com.lowagie.text.Document;
+import com.lowagie.text.DocumentException;
+import com.lowagie.text.PageSize;
+import com.lowagie.text.Rectangle;
+import com.lowagie.text.pdf.PdfContentByte;
+import com.lowagie.text.pdf.PdfWriter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Clase que implementa los m�todos del Layout que dibujan sobre el Graphics.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FLayoutDraw implements Observable, Printable{
+    private static final Logger LOG = 
+        LoggerFactory.getLogger(FLayoutDraw.class);
+    
+    private LayoutPanel layoutPanel;
+    private LayoutControl layoutControl;
+    private LayoutContext layoutContext;
+    private ObservableHelper observers;
+
+    /**
+     * Crea un nuevo FLayoutDraw.
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public FLayoutDraw(LayoutPanel layoutPanel) {
+        this.layoutPanel = layoutPanel;
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+    }
+
+    public void initialize(){
+        if ((layoutContext == null) || (layoutControl == null)){
+            this.layoutControl = layoutPanel.getLayoutControl();
+            this.layoutContext = layoutPanel.getLayoutContext();
+        }
+    }
+
+    /**
+     * M�todo para dibujar el Layout y modificar la matriz de transformaci�n a
+     * partir del tama�o en pixels que tenga rect y el formato de papel
+     * seleccionado.
+     * 
+     * @param g2
+     * @param imgBase
+     *            Si es null, est�s imprimiendo. Si no, la usas para el
+     *            c�digo de optimizaci�n.
+     * 
+     * @throws ReadDriverException
+     */
+    public void drawLayout(Graphics2D g2, BufferedImage imgBase)
+    throws ReadException {     
+        if (!initializeAffineTransform()) {
+        	return;
+        }
+
+        IFFrame[] fframes = layoutContext.getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame f = fframes[i];
+            f.draw(g2, layoutContext.getAT(), layoutControl.getComponent().getVisibleRect(),
+                imgBase);          
+
+            // Dibuja el s�mbolo de que contiene un tag.
+            if ((f.getTag() != null) && (layoutPanel.isShowIconTag())) {
+                f.drawSymbolTag(g2);
+            }
+        }
+
+        if (!(fframes.length == 0)) {
+            observers.notifyObservers(this, 
+                new DefaultLayoutNotification(LayoutNotification.LAYOUT_VALIDATED));           
+        } else {
+            observers.notifyObservers(this, 
+                new DefaultLayoutNotification(LayoutNotification.LAYOUT_INVALIDATED));           
+        }  
+    }
+
+    public boolean initializeAffineTransform(){
+        initialize();
+        AffineTransform at = layoutContext.getAT();
+        Rectangle2D rLayout = layoutControl.getRect();
+        if (rLayout.getHeight()<0) {
+        	// still not ready to be painted
+        	return false;
+        }
+        Attributes attributes = layoutContext.getAttributes();
+
+        layoutControl.setCancelDrawing(false);
+
+        double scale = 0;
+        scale = rLayout.getHeight() / attributes.getPaperSize().getHeight() * 1; // paper (paper units) to screen (pixels) scale
+        AffineTransform escalado = new AffineTransform();
+        AffineTransform translacion = new AffineTransform();
+        translacion.setToTranslation(rLayout.getMinX(), rLayout.getMinY());
+        escalado.setToScale(scale, scale);
+        at.setToIdentity();
+        at.concatenate(translacion);
+        at.concatenate(escalado);
+        attributes.calculateGridGapX(rLayout);
+        attributes.calculateGridGapY(rLayout);
+        return true;
+    }
+
+    /**
+     * Dibuja sobre un Graphics2D el rect�ngulo que representa al folio.
+     * 
+     * @param g
+     *            Graphics2D
+     */
+    public void drawRectangle(Graphics2D g) {
+        initialize();
+        Attributes attributes = layoutContext.getAttributes();
+        Rectangle2D rLayout = layoutControl.getRect();
+        AffineTransform at = layoutContext.getAT();
+
+        double unidadesX = attributes.getHGridGapCm();
+        double unidadesY = attributes.getVGridGapCm();
+
+        if ((unidadesX == 0) && (unidadesY == 0)) {
+            return;
+        }
+
+        g.setColor(Color.darkGray);
+
+        Rectangle2D.Double rectBig =
+            new Rectangle2D.Double(rLayout.getX(), rLayout.getY(),
+                rLayout.getWidth(), rLayout.getHeight());
+
+        g.fillRect((int) rectBig.x + 7, (int) rectBig.y + 7,
+            (int) rectBig.width, (int) rectBig.height);
+
+        Rectangle2D.Double r = new Rectangle2D.Double();
+
+        if (attributes.isMargin()) {
+
+            r =
+                new Rectangle2D.Double(
+                    (rLayout.getX() + FLayoutUtilities.fromSheetDistance(
+                        attributes.getAreaInsets()[2], at)),
+                        (rLayout.getY() + FLayoutUtilities.fromSheetDistance(
+                            attributes.getAreaInsets()[0], at)),
+                            (rLayout.getWidth() - FLayoutUtilities.fromSheetDistance(
+                                attributes.getAreaInsets()[2] + attributes.getAreaInsets()[3], at)),
+                                (rLayout.getHeight() - FLayoutUtilities.fromSheetDistance(
+                                    attributes.getAreaInsets()[0] + attributes.getAreaInsets()[1], at)));
+        } else {
+            r.setRect(rLayout);
+        }
+
+        g.setColor(Color.white);
+        g.fill(rLayout);
+
+        g.setColor(Color.darkGray);
+        g.drawRect((int) rLayout.getMinX(), (int) rLayout.getMinY(),
+            (int) rLayout.getWidth(), (int) rLayout.getHeight());
+
+        if (attributes.isMargin()) {
+            g.setColor(Color.black);
+
+            g.drawRect((int) r.x, (int) r.y, (int) r.width, (int) r.height);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param g
+     *            DOCUMENT ME!
+     */
+    public void drawGrid(Graphics2D g) {
+        int unidadesMin = 6;       
+        Attributes attributes = layoutContext.getAttributes();
+        Rectangle2D rLayout = layoutControl.getRect();
+        AffineTransform at = layoutContext.getAT();
+
+        double unidadesX = attributes.getHGridGapPx();
+        double unidadesY = attributes.getVGridGapPx();
+
+        Rectangle2D.Double r = new Rectangle2D.Double();
+
+        if (attributes.isMargin()) {
+            r =
+                new Rectangle2D.Double(
+                    (rLayout.getX() + FLayoutUtilities.fromSheetDistance(
+                        attributes.getAreaInsets()[2], at)),
+                        (rLayout.getY() + FLayoutUtilities.fromSheetDistance(
+                            attributes.getAreaInsets()[0], at)),
+                            (rLayout.getWidth() - FLayoutUtilities.fromSheetDistance(
+                                attributes.getAreaInsets()[2] + attributes.getAreaInsets()[3], at)),
+                                (rLayout.getHeight() - FLayoutUtilities.fromSheetDistance(
+                                    attributes.getAreaInsets()[0] + attributes.getAreaInsets()[1], at)));
+        } else {
+            r.setRect(rLayout);
+        }
+        if ((unidadesX == 0) && (unidadesY == 0)) {
+            return;
+        }
+        g.setColor(Color.darkGray);
+
+        if (((unidadesX > unidadesMin) || (unidadesY > unidadesMin))
+            && layoutContext.isGridVisible()) {
+            double ax = r.getMinX();
+            double ay;
+
+            while (ax < (r.getMaxX())) {
+                ay = (r.getMinY());
+
+                while (ay < (r.getMaxY())) {
+                    g.drawLine((int) ax, (int) ay, (int) ax, (int) ay);
+                    ay = ay + unidadesY;
+                }
+
+                ax = ax + unidadesX;
+            }
+        }
+    }
+
+    /**
+     * Dibuja sobre el graphics2d las reglas.
+     * 
+     * @param g
+     *            graphics2d sobre el que se dibuja.
+     * @param color
+     *            Color de la regla.
+     */
+    public void drawRuler(Graphics2D g, Color color) {     
+        Attributes attributes = layoutContext.getAttributes();
+        Rectangle2D rLayout = layoutControl.getRect();
+        AffineTransform at = layoutContext.getAT();
+
+        if (layoutContext.getRuler()) {
+            int ini = 10;
+            int w = 30;
+            int wi = 16;
+
+            g.setColor(new Color(250, 255, 250, 180));
+            g.fillRect(ini, w, wi, layoutControl.getComponent().getHeight() - w);
+            g.fillRect(w, ini, layoutControl.getWidth() - w, wi);
+
+            g.setColor(new Color(100, 155, 150, 180));
+            g.fillRect(w, ini, (int) rLayout.getX() - w, wi);
+            g.fillRect((int) rLayout.getMaxX(), ini, layoutControl.getWidth()
+                - (int) rLayout.getMaxX(), wi);
+
+            g.fillRect(ini, w, wi, (int) rLayout.getY() - w);
+            g.fillRect(ini, (int) rLayout.getMaxY(), wi,
+                layoutControl.getHeight() - (int) rLayout.getMaxY());
+
+            if (attributes.isMargin()) {
+                g.setColor(new Color(50, 55, 50, 180));
+                g.fillRect((int) rLayout.getX(), ini, (int) FLayoutUtilities
+                    .fromSheetDistance(attributes.getAreaInsets()[2], at), wi);
+                g.fillRect(
+                    (int) rLayout.getMaxX()
+                    - (int) FLayoutUtilities.fromSheetDistance(
+                        attributes.getAreaInsets()[3], at), ini,
+                        (int) FLayoutUtilities.fromSheetDistance(
+                            attributes.getAreaInsets()[3], at), wi);
+
+                g.fillRect(ini, (int) rLayout.getY(), wi,
+                    (int) FLayoutUtilities.fromSheetDistance(
+                        attributes.getAreaInsets()[0], at));
+                g.fillRect(
+                    ini,
+                    (int) rLayout.getMaxY()
+                    - (int) FLayoutUtilities.fromSheetDistance(
+                        attributes.getAreaInsets()[1], at), wi,
+                        (int) FLayoutUtilities.fromSheetDistance(
+                            attributes.getAreaInsets()[1], at));
+            }
+
+            g.setColor(color);
+            g.drawLine(w, wi + ini, layoutControl.getWidth(), wi + ini);
+            g.drawLine(w, ini, layoutControl.getWidth(), ini);
+            g.drawLine(ini, w, ini, layoutControl.getHeight());
+            g.drawLine(wi + ini, w, wi + ini, layoutControl.getHeight());
+
+            drawLineY(g, 5, 12, 22, rLayout.getY(), 0);
+            drawLineX(g, 5, 12, 22, rLayout.getX(), 0);
+
+            if (FLayoutUtilities.fromSheetDistance(1, at) > 15) {
+                drawLineY(g, 1, 12, 22, rLayout.getY(), 0);
+                drawLineX(g, 1, 12, 22, rLayout.getX(), 0);
+
+                if (FLayoutUtilities.fromSheetDistance(1, at) > 25) {
+                    drawLineY(g, 1, 18, 22, rLayout.getY(), 0.5);
+                    drawLineY(g, 0.1, 21, 22, rLayout.getY(), 0);
+                    drawLineX(g, 1, 18, 22, rLayout.getX(), 0.5);
+                    drawLineX(g, 0.1, 21, 22, rLayout.getX(), 0);
+                }
+            }
+        }
+    }
+
+    /**
+     * Dibuja sobre el graphics2d las l�neas verticales que representan a las
+     * unidades de medida.
+     * 
+     * @param g
+     *            Graphics2d sobre el que se dibuja.
+     * @param dist
+     *            distancia en cent�metros de una l�nea a otra.
+     * @param init
+     *            inicio de la l�nea.
+     * @param end
+     *            fin de la l�nea.
+     * @param y
+     *            rect�ngulo, dentro del cual se dibujan las l�neas.
+     * @param desp
+     *            Desplazamiento.
+     */
+    private void drawLineY(Graphics2D g, double dist, int init, int end,
+        double y, double desp) {
+        initialize();
+        AffineTransform at = layoutContext.getAT();
+
+        double distY = FLayoutUtilities.fromSheetDistance(dist, at);
+        double rota = Math.toRadians(90);
+
+        if (distY > 4) {
+            double despY = FLayoutUtilities.fromSheetDistance(desp, at);
+
+            double posUnitY = y + despY;
+            double posUnitYNeg = posUnitY;
+            int num = 0;
+            double iniY = 40;
+            Point2D.Double pfin =
+                FLayoutUtilities.fromSheetPoint(new Point2D.Double(
+                    layoutControl.getWidth(), layoutControl.getHeight()), at);
+
+            while (posUnitY < (pfin.y - 5)) {
+                posUnitYNeg -= distY;
+
+                if (distY > 16) {
+                    if (init == 12) {
+                        if (posUnitY > iniY) {
+                            g.rotate(-rota, 20, posUnitY - 12);
+                            g.drawString(String.valueOf(num), 10,
+                                (int) posUnitY - 12);
+                            g.rotate(rota, 20, posUnitY - 12);
+                        }
+
+                        if (dist == 5) {
+                            num = num + 5;
+                        } else {
+                            num++;
+                        }
+
+                        if (posUnitYNeg > iniY) {
+                            g.rotate(-rota, 20, posUnitYNeg - 12);
+                            g.drawString(String.valueOf(-num), 10,
+                                (int) posUnitYNeg - 12);
+                            g.rotate(rota, 20, posUnitYNeg - 12);
+                        }
+                    }
+                }
+
+                if (posUnitY > iniY) {
+                    g.drawLine(2 + init, (int) posUnitY, 2 + end,
+                        (int) posUnitY);
+                }
+
+                if (posUnitYNeg > iniY) {
+                    g.drawLine(2 + init, (int) posUnitYNeg, 2 + end,
+                        (int) posUnitYNeg);
+                }
+
+                posUnitY += distY;
+            }
+        }
+    }
+
+    /**
+     * Dibuja sobre el graphics2d las l�neas horizontales que representan a las
+     * unidades de medida.
+     * 
+     * @param g
+     *            Graphics2d sobre el que se dibuja.
+     * @param dist
+     *            distancia en cent�metros de una l�nea a otra.
+     * @param init
+     *            inicio de la l�nea.
+     * @param end
+     *            fin de la l�nea.
+     * @param x
+     *            rect�ngulo, dentro del cual se dibujan las l�neas.
+     * @param desp
+     *            Desplazamiento.
+     */
+    private void drawLineX(Graphics2D g, double dist, int init, int end,
+        double x, double desp) {
+        initialize();
+        AffineTransform at = layoutContext.getAT();
+
+        double distX = FLayoutUtilities.fromSheetDistance(dist, at);
+
+        if (distX > 4) {
+            double despX = FLayoutUtilities.fromSheetDistance(desp, at);
+            double posUnitX = x + despX;
+            double posUnitXNeg = posUnitX;
+            int num = 0;
+            double iniX = 40;
+            Point2D.Double pfin =
+                FLayoutUtilities.fromSheetPoint(new Point2D.Double(
+                    layoutControl.getWidth(), layoutControl.getHeight()), at);
+
+            while (posUnitX < (pfin.x - 5)) {
+                posUnitXNeg -= distX;
+
+                if (init == 12) {
+                    if (distX > 16) {
+                        if (posUnitX > iniX) {
+                            g.drawString(String.valueOf(num),
+                                (int) posUnitX + 3, 20);
+                        }
+
+                        if (dist == 5) {
+                            num = num + 5;
+                        } else {
+                            num++;
+                        }
+
+                        if (posUnitXNeg > iniX) {
+                            g.drawString(String.valueOf(-num),
+                                (int) posUnitXNeg + 3, 20);
+                        }
+                    }
+                }
+
+                if (posUnitX > iniX) {
+                    g.drawLine((int) posUnitX, 2 + init, (int) posUnitX,
+                        2 + end);
+                }
+
+                if (posUnitXNeg > iniX) {
+                    g.drawLine((int) posUnitXNeg, 2 + init, (int) posUnitXNeg,
+                        2 + end);
+                }
+
+                posUnitX += distX;
+            }
+        }
+    }
+
+    /**
+     * Dibuja los handlers sobre los fframes que esten seleccionados.
+     * 
+     * @param g
+     *            Graphics sobre el que se dibuja.
+     * @param color
+     *            Color de los Handlers.
+     */
+    public void drawHandlers(Graphics2D g, Color color) {
+        initialize();
+
+        g.setColor(color);
+        IFFrame[] fframes = layoutContext.getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                fframe.drawHandlers(g);
+            }
+        }
+    }
+
+    /**
+     * A partir de un fichero que se pasa como par�metro se crea un ps con el
+     * contenido del Layout.
+     * 
+     * @param ps
+     */
+    public void toPS(File ps) {
+        initialize();
+        Attributes attributes = layoutContext.getAttributes();
+
+        try {
+            // Prepare the output file to receive the postscript
+            OutputStream fos =
+                new BufferedOutputStream(new FileOutputStream(ps));
+
+            // Find a factory that can do the conversion
+            // DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
+            DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
+            StreamPrintServiceFactory[] factories =
+                StreamPrintServiceFactory.lookupStreamPrintServiceFactories(
+                    flavor, "application/postscript");
+
+            if (factories.length > 0) {
+                StreamPrintService service = factories[0].getPrintService(fos);
+
+                // Create the print job
+                DocPrintJob job = service.createPrintJob();
+                Doc doc = new SimpleDoc(this, flavor, null);
+                // Doc doc = new SimpleDoc(is, flavor, null);
+                // Monitor print job events; for the implementation of
+                // PrintJobWatcher,
+                // see e702 Determining When a Print Job Has Finished
+                // PrintJobWatcher pjDone = new PrintJobWatcher(job);
+                // Actualizar attributes
+                PrintRequestAttributeSet att =
+                    attributes.toPrintRequestAttributeSet();
+                // Print it
+                job.print(doc, att);
+
+                // Wait for the print job to be done
+                // pjDone.waitForDone();
+                // It is now safe to close the streams
+            }
+
+            // is.close();
+            fos.close();
+        } catch (PrintException e) {
+            LOG.error("Error printing the map", e);
+        } catch (IOException e) {
+            LOG.error("Error printing the map", e);
+        }
+        /*
+         * PrintService defaultPrintService =
+         * PrintServiceLookup.lookupDefaultPrintService();
+         * DocPrintJob printerJob = defaultPrintService.createPrintJob();
+         * 
+         * try {
+         * DocFlavor flavor=DocFlavor.URL.POSTSCRIPT;
+         * if (!defaultPrintService.isDocFlavorSupported(flavor)) {
+         * System.err.println(
+         * "The printer does not support the appropriate DocFlavor");
+         * }else {
+         * 
+         * SimpleDoc simpleDoc;
+         * simpleDoc = new SimpleDoc(ps.toURL(),flavor, null);
+         * printerJob.print(simpleDoc, null);
+         * }
+         * } catch (MalformedURLException e) {
+         * // TODO Auto-generated catch block
+         * e.printStackTrace();
+         * } catch (PrintException e) {
+         * // TODO Auto-generated catch block
+         * e.printStackTrace();
+         * }
+         */
+        layoutControl.fullRect();
+    }
+
+    /**
+     * A partir de un fichero que se pasa como par�metro se crea un pdf con el
+     * contenido del Layout.
+     * 
+     * @param pdf
+     */
+    public void toPDF(File pdf) {
+        Attributes attributes = layoutContext.getAttributes();
+
+        double w = ((attributes.getPaperSize().getWidth() * Attributes.DPISCREEN) / Attributes.PULGADA);
+        double h = ((attributes.getPaperSize().getHeight() * Attributes.DPISCREEN) / Attributes.PULGADA);
+        Rectangle pageSize = new com.lowagie.text.Rectangle((float) w, (float) h);
+        Document document = new Document(pageSize);
+
+        try {
+            FileOutputStream fos = new FileOutputStream(pdf);
+            PdfWriter writer = PdfWriter.getInstance(document, fos);
+            document.open();
+
+            PdfContentByte cb = writer.getDirectContent();
+            Graphics2D g2 = cb.createGraphicsShapes((float) w, (float) h);
+
+            try {
+            	print(g2, new PageFormat(), 0);
+            } catch (PrinterException e) {
+                LOG.error("Error printing the map", e);
+            }
+            g2.dispose();
+
+        } catch (DocumentException de) {
+            LOG.error("Error printing the map", de);
+        } catch (IOException ioe) {
+            JOptionPane.showMessageDialog(
+                (Component) PluginServices.getMainFrame(), ioe.getMessage());
+        }
+
+        document.close();
+
+        layoutControl.fullRect();
+    }
+
+    public int print(Graphics g, PageFormat format, int pi)
+    throws PrinterException {
+        initialize();
+        if (pi >= 1) {
+            return Printable.NO_SUCH_PAGE;
+        }
+
+        Graphics2D g2d = (Graphics2D) g;
+
+        AffineTransform at = g2d.getTransform();
+        g2d.translate(0, 0);
+        layoutPanel.obtainRect(true);
+
+        g2d.scale((double) 72 / (double) (Attributes.DPI), (double) 72
+            / (double) (Attributes.DPI));
+
+        if (layoutContext.getAttributes().isMargin()) {
+            g2d.setClip(
+                (int) (layoutControl.getRect().getMinX() + FLayoutUtilities.fromSheetDistance(
+                    layoutContext.getAttributes().getAreaInsets()[2], layoutControl.getAT())),
+                    (int) (layoutPanel.getLayoutControl().getRect().getMinY() + FLayoutUtilities.fromSheetDistance(
+                        layoutContext.getAttributes().getAreaInsets()[0], layoutControl.getAT())),
+                        (int) (layoutControl.getRect().getWidth() - FLayoutUtilities.fromSheetDistance(
+                            layoutContext.getAttributes().getAreaInsets()[2] + layoutContext.getAttributes().getAreaInsets()[3], layoutControl.getAT())),
+                            (int) (layoutPanel.getLayoutControl().getRect().getHeight() - FLayoutUtilities.fromSheetDistance(
+                                layoutContext.getAttributes().getAreaInsets()[0] + layoutContext.getAttributes().getAreaInsets()[1], layoutControl.getAT())));
+        }
+        drawShapes(g2d);
+        g2d.setTransform(at);
+        return Printable.PAGE_EXISTS;
+    }
+
+    /**
+     * Se dibuja sobre el graphics el Layout.
+     * 
+     * @param g2
+     *            graphics sobre el que se dibuja.
+     */
+    public void drawShapes(Graphics2D g2) {
+        initialize();
+        layoutPanel.setCursor(Cursor.getDefaultCursor());
+        if (!initializeAffineTransform()) {
+        	return;
+        }
+
+        IFFrame[] fframes = layoutContext.getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            fframes[i].print(g2, layoutControl.getAT(), null, layoutContext
+                .getAttributes().toPrintAttributes());
+        }
+    }
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+        observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+        observers.deleteObservers();        
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedImpl.java	(revision 590)
@@ -0,0 +1,22 @@
+package org.gvsig.app.project.documents.layout;
+
+import org.gvsig.fmap.mapcontext.MapContext;
+
+public class TocModelChangedImpl implements TocModelChangedNotification {
+	private MapContext mapContext = null;
+	private Type type = null;
+	
+	public TocModelChangedImpl(Type type, MapContext model) {
+		this.type = type;
+		this.mapContext = model;
+	}	
+
+	public MapContext getModel() {
+		return mapContext;
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutEvents.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutEvents.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutEvents.java	(revision 590)
@@ -0,0 +1,231 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import org.gvsig.app.project.documents.layout.gui.FPopupMenu;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.utils.exceptionHandling.ExceptionHandlingSupport;
+import org.gvsig.utils.exceptionHandling.ExceptionListener;
+
+/**
+ * Eventos que se realizan sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutEvents implements ActionListener, ComponentListener,
+    MouseMotionListener, MouseListener {
+
+    private LayoutPanel layout = null;
+    private ExceptionHandlingSupport exceptionHandlingSupport =
+        new ExceptionHandlingSupport();
+
+    /**
+     * Crea un nuevo EventsHandler.
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public LayoutEvents(LayoutPanel l) {
+        layout = l;
+    }
+
+    /**
+     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
+     */
+    public void componentHidden(ComponentEvent arg0) {
+    }
+
+    /**
+     * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)
+     */
+    public void componentMoved(ComponentEvent arg0) {
+    }
+
+    /**
+     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
+     */
+    public void componentResized(ComponentEvent arg0) {
+//        layout.getLayoutControl().fullRect();
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
+     */
+    public void componentShown(ComponentEvent arg0) {
+    }
+
+    /**
+     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+     */
+    public void actionPerformed(ActionEvent arg0) {
+        layout.repaint();
+    }
+
+    /**
+     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+     */
+    public void mouseDragged(MouseEvent e) {
+        if (e.getButton() != MouseEvent.BUTTON3) {
+            layout.getLayoutControl().setLastPoint();
+            layout.repaint();
+        }
+        try {
+            layout.getLayoutControl().getCurrentLayoutTool().mouseDragged(e);
+        } catch (BehaviorException t) {
+            throwException(t);
+        }
+        layout.getLayoutControl().setPosition(e.getPoint());
+    }
+
+    /**
+     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+     */
+    public void mouseMoved(MouseEvent e) {
+        layout.getLayoutControl().setPosition(e.getPoint());
+        try {
+            layout.getLayoutControl().getCurrentLayoutTool().mouseMoved(e);
+        } catch (BehaviorException t) {
+            throwException(t);
+        }       
+        layout.repaint();
+    }
+
+    /**
+     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+     */
+    public void mouseClicked(MouseEvent e) {
+        try {
+        	layout.getLayoutControl().getComponent().requestFocusInWindow();
+            layout.getLayoutControl().getCurrentLayoutTool().mouseClicked(e);
+        } catch (BehaviorException t) {
+            throwException(t);
+        }
+    }
+
+    /**
+     * A�ade un listener de tipo ExceptionListener.
+     * 
+     * @param o
+     *            ExceptionListener.
+     */
+    public void addExceptionListener(ExceptionListener o) {
+        exceptionHandlingSupport.addExceptionListener(o);
+    }
+
+    /**
+     * Borra la ExceptioListener que se pasa como par�metro.
+     * 
+     * @param o
+     *            ExceptionListener.
+     * 
+     * @return True si se borra correctamente.
+     */
+    public boolean removeExceptionListener(ExceptionListener o) {
+        return exceptionHandlingSupport.removeExceptionListener(o);
+    }
+
+    /**
+     * Lanza una Excepci�n.
+     * 
+     * @param t
+     *            Excepci�n.
+     */
+    protected void throwException(Throwable t) {
+        exceptionHandlingSupport.throwException(t);
+    }
+
+    /**
+     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
+     */
+    public void mouseEntered(MouseEvent e) {
+        layout.getLayoutControl().clearMouseImage();
+        try {
+            layout.getLayoutControl().getCurrentLayoutTool().mouseEntered(e);
+        } catch (BehaviorException t) {
+            throwException(t);
+        }
+    }
+
+    /**
+     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
+     */
+    public void mouseExited(MouseEvent e) {
+        try {
+            layout.getLayoutControl().getCurrentLayoutTool().mouseExited(e);
+        } catch (BehaviorException t) {
+            throwException(t);
+        }
+    }
+
+    /**
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) {
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            layout.getLayoutControl().setPointAnt();
+            layout.getLayoutControl().setFirstPoint();
+            try {
+                layout.getLayoutControl().getCurrentLayoutTool()
+                    .mousePressed(e);
+            } catch (BehaviorException t) {
+                throwException(t);
+            }
+        } else
+            if (e.getButton() == MouseEvent.BUTTON3) {
+                FPopupMenu popmenu = new FPopupMenu(layout);
+                layout.add(popmenu);
+                popmenu.show(e.getComponent(), e.getX(), e.getY());
+            }
+    }
+
+    /**
+     * @see java.awt.event.MouseListener#mouseReleassed(java.awt.event.MouseEvent)
+     */
+    public void mouseReleased(MouseEvent e) {
+        if (e.getButton() != MouseEvent.BUTTON3) {
+            layout.getLayoutControl().setLastPoint();
+        }
+
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            try {
+                layout.getLayoutControl().getCurrentLayoutTool()
+                    .mouseReleased(e);
+            } catch (BehaviorException t) {
+                throwException(t);
+            }
+            layout.getLayoutControl().setCancelDrawing(false);
+        } else
+            if (e.getButton() == MouseEvent.BUTTON3) {
+            }
+
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListWithoutOverViewModel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListWithoutOverViewModel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListWithoutOverViewModel.java	(revision 590)
@@ -0,0 +1,55 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Modelo de la Lista de vistas a seleccionar sin incluir los localizadores.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class ListWithoutOverViewModel extends ListViewModel {
+
+    private static final long serialVersionUID = -1517908986169830326L;
+
+    /**
+     * Add all fframeviews into a list.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public void addViews(LayoutPanel l) {
+        int num = 0;
+        l.getLayoutContext().updateFFrames();
+        IFFrame[] fframes = l.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame f = fframes[i];
+
+            if (f instanceof FFrameView && !(f instanceof FFrameOverView)) {
+                views.add(f);
+                ((FFrameView) f).setNum(num);
+                num++;
+            }
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTable.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTable.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTable.java	(revision 590)
@@ -0,0 +1,492 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameTable extends FFrameGroup implements IFFrameGroupSelectable {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameTable";
+
+    private static final String NUMCOLUMNS_FIELD = "numColumns";
+    private static final String NUMROWS_FIELD = "numRows";
+
+    private int numColumns = 2;
+    private int numRows = 2;
+    private static AffineTransform identity = new AffineTransform();
+    private boolean selectFFrameBasic = false;
+    private static Image iMove = null;
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param g
+     *            DOCUMENT ME!
+     * @param at
+     *            DOCUMENT ME!
+     * @param rv
+     *            DOCUMENT ME!
+     * @param imgBase
+     *            DOCUMENT ME!
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double r = getBoundingBox(at);
+        g.setColor(Color.black);
+        g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+        drawRectangles(g, at, rv, imgBase);
+        g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+        super.draw(g, at, rv, imgBase);
+    }
+
+    private void drawRectangles(Graphics2D g, AffineTransform at,
+        Rectangle2D rv, BufferedImage imgBase) {
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            FFrameBasic basic = (FFrameBasic) fframes[i];
+            basic.draw(g, at, rv, imgBase);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param r
+     *            DOCUMENT ME!
+     * @param g
+     *            DOCUMENT ME!
+     */
+    public void drawBox(Rectangle2D r, Graphics2D g) {
+        calculateTable(r);
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            FFrameBasic basic = (FFrameBasic) fframes[i];
+            basic.draw(g, identity, null, null);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param g
+     *            DOCUMENT ME!
+     * @param at
+     *            DOCUMENT ME!
+     * 
+     * @throws ReadDriverException
+     */
+    public void print(Graphics2D g, AffineTransform at) throws ReadException {
+        draw(g, at, null, null);
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "box") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public int getNumColumns() {
+        return numColumns;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param numColumns
+     *            DOCUMENT ME!
+     */
+    public void setNumColumns(int numColumns) {
+        this.numColumns = numColumns;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public int getNumRows() {
+        return numRows;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param numRows
+     *            DOCUMENT ME!
+     */
+    public void setNumRows(int numRows) {
+        this.numRows = numRows;
+    }
+
+    public void calculateTable(Rectangle2D r) {
+        double wC = r.getWidth() / numColumns;
+        double hR = r.getHeight() / numRows;
+        int rows = numRows;
+        clearFFrames();
+        for (int i = 0; i < numColumns; i++) {
+            for (int j = 0; j < rows; j++) {
+                double x = r.getX() + (wC * i);
+                double y = r.getY() + (hR * j);
+                double w = wC;
+                double h = hR;
+                Rectangle2D rBasic = new Rectangle2D.Double(x, y, w, h);
+                FFrameBasic basic =
+                    (FFrameBasic) layoutManager
+                        .createFrame(FFrameBasic.PERSISTENCE_DEFINITION_NAME);
+                basic.setRectangle(rBasic);
+                addFFrame(basic);
+            }
+        }
+    }
+
+    public void selectFFrame(boolean b) {
+        selectFFrameBasic = b;
+    }
+
+    public IFFrame joinFFrame() {
+        IFFrame[] fframes = this.getFFrames();
+        Rectangle2D r = null;
+
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            if (fframes[i].getSelected() != IFFrame.NOSELECT) {
+                if (r == null) {
+                    r = (Rectangle2D) fframes[i].getBoundBox().clone();
+                } else {
+                    r.add(fframes[i].getBoundBox());
+                }
+                this.removeFFrame(i);
+            }
+        }
+        if (r != null) {
+            // Layout
+            FFrameBasic basic =
+                (FFrameBasic) layoutManager
+                    .createFrame(FFrameBasic.PERSISTENCE_DEFINITION_NAME);
+            basic.setRectangle(r);
+            this.addFFrame(basic);
+            return this;
+        }
+
+        return null;
+    }
+
+    public void setSelected(Point2D p, MouseEvent e) {
+        if (!selectFFrameBasic) {
+            super.setSelected(p, e);
+        } else {
+            setSelectedGroup(p, e);
+        }
+    }
+
+    public boolean contains(Point2D p) {
+        if (!selectFFrameBasic) {
+            return super.contains(p);
+        }
+        return contains(p);
+    }
+
+    public void drawHandlers(Graphics2D g) {
+        if (!selectFFrameBasic) {
+            super.drawHandlers(g);
+        } else {
+            drawHandlersGroup(g);
+
+        }
+    }
+
+    public int getContains(Point2D p) {
+        if (!selectFFrameBasic) {
+            return super.getContains(p);
+        }
+        return getContainsGroup(p);
+    }
+
+    public Rectangle2D getMovieRect(int difx, int dify) {
+        // TODO Esto de momento lo dejo que no se pueda mover
+        // cuando se tiene seleccionada la herramienta de selecci�n de un
+        // FFrameBasic.
+        Rectangle2D r = super.getMovieRect(difx, dify);
+        if (!selectFFrameBasic) {
+            return r;
+        }
+        r = super.getMovieRect(0, 0);
+        return r;
+    }
+
+    public Rectangle2D getMovieRectGroup(int difX, int difY) {
+        Rectangle2D r = null;
+        IFFrame[] fframes = getFFrames();
+        List<IFFrame> selected = new ArrayList<IFFrame>();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                selected.add(fframe);
+            }
+        }
+
+        for (int i = 0; i < selected.size(); i++) {
+
+            if (i == 0) {
+                r = selected.get(i).getMovieRect(difX, difY);
+            } else {
+                r.add(selected.get(i).getMovieRect(difX, difY));
+            }
+        }
+        return r;
+    }
+
+    public int getContainsGroup(Point2D p) {
+        List<IFFrame> selected = new ArrayList<IFFrame>();
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            int contains = fframe.getContains(p);
+            if (contains != IFFrame.NOSELECT) {
+                if (contains == IFFrame.RECT) {
+                    selected.add(fframe);
+                } else {
+                    return contains;
+                }
+            }
+        }
+        if (selected.size() > 0) {
+            return selected.get(0).getContains(p);
+        }
+        return 0;
+    }
+
+    /**
+     * Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
+     * par�metro.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     */
+    public void drawHandlersGroup(Graphics2D g) {
+        int size = 8;
+        g.setColor(Color.gray);
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                Rectangle2D r = fframe.getBoundingBox(null);
+                Point2D p = new Point2D.Double();
+                g.rotate(Math.toRadians(getRotation()),
+                    r.getX() + (r.getWidth() / 2), r.getY()
+                        + (r.getHeight() / 2));
+
+                AffineTransform atRotate = new AffineTransform();
+                atRotate.rotate(Math.toRadians(getRotation()),
+                    r.getX() + (r.getWidth() / 2), r.getY()
+                        + (r.getHeight() / 2));
+
+                g.fillRect((int) r.getX() - size / 2,
+                    (int) r.getY() - size / 2, size, size);
+                atRotate
+                    .transform(new Point2D.Double(r.getX() - size / 2, r.getY()
+                        - size / 2), p);
+                no.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getMaxX() - size / 2, (int) r.getY() - size
+                    / 2, size, size);
+                atRotate.transform(
+                    new Point2D.Double(r.getMaxX() - size / 2, r.getY() - size
+                        / 2), p);
+                ne.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getX() - size / 2, (int) r.getMaxY() - size
+                    / 2, size, size);
+                atRotate.transform(
+                    new Point2D.Double(r.getX() - size / 2, r.getMaxY() - size
+                        / 2), p);
+                so.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getMaxX() - size / 2, (int) r.getMaxY()
+                    - size / 2, size, size);
+                atRotate.transform(
+                    new Point2D.Double(r.getMaxX() - size / 2, r.getMaxY()
+                        - size / 2), p);
+                se.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getY()
+                    - size / 2, size, size);
+                atRotate.transform(new Point2D.Double(r.getCenterX()
+                    - (size / 2), r.getY() - size / 2), p);
+                n.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getMaxY()
+                    - size / 2, size, size);
+                atRotate.transform(new Point2D.Double(r.getCenterX()
+                    - (size / 2), r.getMaxY() - size / 2), p);
+                s.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getX() - size / 2, (int) r.getCenterY()
+                    - (size / 2), size, size);
+                atRotate.transform(
+                    new Point2D.Double(r.getX() - size / 2, r.getCenterY()
+                        - (size / 2)), p);
+                o.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+                g.fillRect((int) r.getMaxX() - size / 2, (int) r.getCenterY()
+                    - (size / 2), size, size);
+                atRotate.transform(
+                    new Point2D.Double(r.getMaxX() - size / 2, r.getCenterY()
+                        - (size / 2)), p);
+                e.setRect((int) p.getX() - size / 2, (int) p.getY() - size / 2,
+                    size, size);
+                g.rotate(Math.toRadians(-getRotation()),
+                    r.getX() + (r.getWidth() / 2), r.getY()
+                        + (r.getHeight() / 2));
+            }
+        }
+
+    }
+
+    public boolean containsGroup(Point2D p) {
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            if (fframe.contains(p)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void setSelectedGroup(Point2D p, MouseEvent e) {
+        IFFrame[] fframes = getFFrames();
+        if (!e.isShiftDown()) {
+            for (int j = 0; j < fframes.length; j++) {
+                fframes[j].setSelected(false);
+            }
+            for (int i = 0; i < fframes.length; i++) {
+                IFFrame fframe = fframes[i];
+                fframe.setSelected(p, e);
+            }
+        } else {
+            for (int i = 0; i < fframes.length; i++) {
+                IFFrame fframe = fframes[i];
+                if (fframe.contains(p)) {
+                    if ((fframe.getSelected() == IFFrame.NOSELECT)) {
+                        fframe.setSelected(p, e);
+                    } else {
+                        fframe.setSelected(false);
+                    }
+                }
+            }
+        }
+    }
+
+    public int getSelectedGroup() {
+        return 0;
+    }
+
+    public Image getMapCursor(Point2D p) {
+        if (!selectFFrameBasic) {
+            return super.getMapCursor(p);
+        }
+        return getMapCursorGroup(p);
+    }
+
+    public Image getMapCursorGroup(Point2D p) {
+        int select = getContains(p);
+        switch (select) {
+        case (RECT):
+            return iMove;
+        }
+        return null;
+    }
+
+    /**
+     * Initilizes the static icons
+     */
+    public static void initializeIcons() {
+        iMove = PluginServices.getIconTheme().get("graphic-move-icon").getImage();
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameTable.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameTable persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrameGroup.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldInt(NUMCOLUMNS_FIELD).setMandatory(true);
+            definition.addDynFieldInt(NUMROWS_FIELD).setMandatory(true);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        numColumns = state.getInt(NUMCOLUMNS_FIELD);
+        numRows = state.getInt(NUMROWS_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(NUMCOLUMNS_FIELD, numColumns);
+        state.set(NUMROWS_FIELD, numRows);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphicsFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphicsFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphicsFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameGraphics.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGraphicsFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameGraphics graphics = new FFrameGraphics();
+        graphics.setFrameFactory(this);
+        return graphics;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameGraphics.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameGraphics");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrame.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrame.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrame.java	(revision 590)
@@ -0,0 +1,364 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutControl;
+import org.gvsig.fmap.mapcontext.rendering.symbols.IPrintable;
+import org.gvsig.tools.dispose.Disposable;
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * Interface representing a frame that can be added to a LayoutDocument.
+ * IFFrames are assumed to be rectangular objects that are able to draw themselves
+ * on a Graphics2D object. They handle selection status and can also be
+ * rotated. Specific implementations of this interface should be able to persist
+ * their status.
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izquierdo
+ */
+public interface IFFrame extends IPrintable, Persistent, Cloneable, Observable, Disposable {
+
+	//FIXME: ensure the following comments are correct!
+	/** FFrame has been selected by clicking on its North boundary */
+	public static final int N = 1;
+	/** FFrame has been selected by clicking on its North-East corner */
+    public static final int NE = 2;
+    /** FFrame has been selected by clicking on its East boundary */
+    public static final int E = 3;
+    /** FFrame has been selected by clicking on its South-East corner */
+    public static final int SE = 4;
+    /** FFrame has been selected by clicking on its South boundary */
+    public static final int S = 5;
+    /** FFrame has been selected by clicking on its South-West corner */
+    public static final int SO = 6;
+    /** FFrame has been selected by clicking on its West boundary */
+    public static final int O = 7;
+    /** FFrame has been selected by clicking on its North-West corner */
+    public static final int NO = 8;
+    /** FFrame has been selected by clicking within the frame rectangle */
+    public static final int RECT = 9;
+    /** FFrame is not selected */
+    public static final int NOSELECT = 0;
+
+    /**
+     * Returns the bounding box (in pixels) of this FFrame, based on the provided
+     * AffineTransform. If the AffineTransform is null, it returns the last
+     * calculated bounding box.
+     * 
+     * @param at Affine transform to apply to the sheet coordinates to get the
+     *  		bounding box in pixels.
+     * @return Rectangle representing the bounding box (in pixels) of this
+     * FFrame
+     */
+    public Rectangle2D.Double getBoundingBox(AffineTransform at);
+
+    /**
+     * Returns the bounding box in centimeters of this FFrame, using paper
+     * coordinates
+     * 
+     * @return The bounding box of this FFrame, measured in centimeters.
+     */
+    public Rectangle2D.Double getBoundBox();
+
+    /**
+     * Sets the bounding box in centimeters of this FFrame, using  paper
+     * coordinates.
+     * 
+     * @param r
+     *            Rectangle in centimeters
+     */
+    public void setBoundBox(Rectangle2D rect);
+
+    /**
+     * Este m�todo se implementa en cada una de las fframe, ya que cada una se
+     * dibuja de una forma diferente sobre el graphics. M�todo que dibuja
+     * sobre el graphics que se le pasa como par�metro, seg�n la transformada
+     * afin que se debe de aplicar y el rect�ngulo que se debe de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param r
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     * @throws ReadDriverException
+     *             TODO
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D r,
+        BufferedImage imgBase);
+
+    /**
+     * Devuelve el nombre que representa al fframe.
+     * 
+     * @return String nombre del FFrame.
+     */
+    public String getName();
+
+    /**
+     * Devuelve true, si el punto que se pasa como par�metro esta contenido
+     * dentro del boundingbox del fframe.
+     * 
+     * @param p
+     *            punto a comprobar.
+     * 
+     * @return true si el punto esta dentro del boundingbox.
+     */
+    public boolean contains(Point2D p);
+
+    /**
+     * Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
+     * par�metro.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     */
+    public void drawHandlers(Graphics2D g);
+
+    /**
+     * Sets the type of selection performed on the frame, based on the position
+     * of the provided Point compared with the boundaries of the FFrame.
+     * This method is usually called when the user clicks on the FFrame
+     * 
+     * @param p
+     *            Point which should be evaluated to establish if the FFrame must
+     *            be selected or not
+     * @param e   Mouse event that triggered this method call
+     * @see {@link #isSelected()}, {@link #getSelected()}
+     */
+    public void setSelected(Point2D b, MouseEvent e);
+
+    /**
+     * Sets the selected status of the frame.
+     * 
+     * @param selected
+     *            <code>true</code> to select the frame, <code>false</code> to
+     *            unselect it
+     * @see {@link #isSelected()}, {@link #getSelected()}
+     */
+    public void setSelected(boolean b);
+
+    /**
+     * Returns an integer representing the type of selection applied to the
+     * FFrame. Valid values are:
+     * {@link IFFrame#NOSELECT},
+     * {@link IFFrame#NO}, {@link IFFrame#N}, {@link IFFrame#NE},
+     * {@link IFFrame#O}, {@link IFFrame#RECT}, {@link IFFrame#E},
+     * {@link IFFrame#SO}, {@link IFFrame#S}, {@link IFFrame#SE}.
+     * 
+     * @see {@link #isSelected()}, {@link #setSelected(boolean)}
+     * @return The type of selection that has been applied
+     */
+    public int getSelected();
+    
+    /**
+     * Gets the selection status of the frame
+     * 
+     * @return <code>true</code> if the frame is selected,
+     *    <code>false</code> otherwise
+     * @see {@link #getSelected()}, {@link #setSelected(boolean)}
+     */
+    public boolean isSelected();
+
+    /**
+     * Checks whether the provided point is contained within the FFrame
+     * rectangle.
+     * 
+     * @param p
+     *            Point to compare
+     * 
+     * @return An integer representing the topologic relation of the point and
+     * the frame rectangle. It can be one of:
+     * {@link IFFrame#NOSELECT},
+     * {@link IFFrame#NO}, {@link IFFrame#N}, {@link IFFrame#NE},
+     * {@link IFFrame#O}, {@link IFFrame#RECT}, {@link IFFrame#E},
+     * {@link IFFrame#SO}, {@link IFFrame#S}, {@link IFFrame#SE}.
+     */
+    public int getContains(Point2D p);
+
+    /**
+     * Devuelve el Cursor adecuado seg�n como est� contenido el punto, si es
+     * para desplazamiento, o cambio de tama�o.
+     * 
+     * @param p
+     *            punto a comprobar.
+     * 
+     * @return Cursor adecuado a la posici�n.
+     */
+    public Image getMapCursor(Point2D p);
+
+    /**
+     * Devuelve el rect�ngulo a partir del desplazamiento en el eje x y el
+     * desplazamiento en el eje y.
+     * 
+     * @param difx
+     *            desplazamiento sobre el eje x.
+     * @param dify
+     *            desplazamiento sobre el eje y.
+     * 
+     * @return rect�ngulo modificado en funci�n del desplazamiento realizado.
+     */
+    public Rectangle2D getMovieRect(int difx, int dify);
+
+    /**
+     * Dibuja un rect�ngulo de color gris, con el nombre en el centro y
+     * escalado en forma de borrador.
+     * 
+     * @param g
+     *            Graphics sobre el que se dibuja.
+     */
+    public void drawDraft(Graphics2D g);
+
+    /**
+     * Actualiza el BoundBox del FFrame a partir de su rect�ngulo en pixels y
+     * la matriz de transformaci�n.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     * @param at
+     *            Matriz de transformaci�n.
+     */
+    public void updateRect(Rectangle2D r, AffineTransform at);
+
+    /**
+     * Devuelve true si el rect�ngulo primero es null o si es distinto de null
+     * e intersecta.
+     * 
+     * @param rv
+     *            Rect�ngulo
+     * @param r
+     *            Rect�ngulo
+     * 
+     * @return True si intersecta o es null.
+     */
+    public boolean intersects(Rectangle2D rv, Rectangle2D r);
+
+    /**
+     * Introduce el n�mero de FFrame en el que de que se trata.
+     * 
+     * @param i
+     *            n�mero de FFrame
+     */
+    public void setNum(int i);
+
+    /**
+     * Devuelve el nombre que representa al tipo de FFrame.
+     * 
+     * @return nombre del elemento.
+     */
+    public String getNameFFrame();
+
+    /**
+     * Rellena el tag.
+     * 
+     * @param s
+     *            valor del tag.
+     */
+    public void setTag(String s);
+
+    /**
+     * Devuelve el valor del tag.
+     * 
+     * @return String del valor del tag.
+     */
+    public String getTag();
+
+    /**
+     * Dibuja el s�mbolo que indica que el FFrame contiene un tag.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     */
+    public void drawSymbolTag(Graphics2D g);
+
+    /**
+     * Sets the rotation of the frame, measured in arc degrees
+     * 
+     * @param rotation
+     *            Rotation to apply to the frame
+     */
+    public void setRotation(double rotation);
+
+    /**
+     * Gets the rotation of the frame, measured in arc degrees
+     * 
+     * @return Rotation of the frame
+     */
+    public double getRotation();
+
+    /**
+     * Devuelve el nivel al que se encuentra el FFrame en el Layout.
+     * 
+     * @return nivel.
+     */
+    public int getLevel();
+
+    /**
+     * Inserta el nivel de dibujado del FFrame respecto del resto de fframes
+     * del Layout.
+     * 
+     * @param l
+     *            nivel.
+     */
+    public void setLevel(int l);
+
+    public Rectangle2D getLastMoveRect();
+
+    public void setFrameFactory(FrameFactory frameFactory);
+
+    public FrameFactory getFrameFactory();
+    
+	public Document getDocument();
+
+	public void setDocument(Document document);
+
+	public LayoutContext getLayoutContext();
+
+	public void setLayoutContext(LayoutContext layoutContext);
+	
+	/**
+	 * This method is called when the FFrame has been
+	 * removed from the Layout
+	 */
+	public void frameRemoved();
+	
+	/**
+	 * This method is called when the FFrame has been
+	 * added to the Layout
+	 */
+	public void frameAdded();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorth.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorth.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorth.java	(revision 590)
@@ -0,0 +1,126 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * Class that extends FFramePicture and implements IFFrameViewDependence to be
+ * able to maintain the same rotation that the view to which associate.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameNorth extends FFramePicture implements IFFrameViewDependence {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameNorth";
+
+    private static final String FFRAMEVIEWDEPENDENCE_FIELD =
+        "fframeViewDependence";
+
+    private FFrameView fframeViewDependence;
+
+    /**
+     * Inserts FFrameView to be able to relate this with the image.
+     * 
+     * @param fv
+     *            FFrameView
+     */
+    public void setFFrameDependence(IFFrame fv) {
+        fframeViewDependence = (FFrameView) fv;
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        if ((fframeViewDependence != null) && fframeViewDependence.equals(fant)) {
+            fframeViewDependence = (FFrameView) fnew;
+        }
+    }
+
+    /**
+     * Returns the FFrameView.
+     * 
+     * @return FFrameView
+     */
+    public IFFrame[] getFFrameDependence() {
+        return new IFFrame[] { fframeViewDependence };
+    }
+
+    /**
+     * Returns the rotation of de FFrameView.
+     * 
+     * @return Rotation.
+     */
+    public double getRotation() {
+        if (fframeViewDependence != null) {
+            
+            return fframeViewDependence.getRotation()
+                + fframeViewDependence.getMapRotation();
+        }
+
+        return super.getRotation();
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameNorth.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameNorth persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFramePicture.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldObject(FFRAMEVIEWDEPENDENCE_FIELD).
+                setClassOfValue(IFFrame.class);
+
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        if (state.hasValue(FFRAMEVIEWDEPENDENCE_FIELD)) {
+            fframeViewDependence =
+                (FFrameView) state.get(FFRAMEVIEWDEPENDENCE_FIELD);
+        }
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(FFRAMEVIEWDEPENDENCE_FIELD, fframeViewDependence);
+    }
+
+    public Object clone() throws CloneNotSupportedException {
+        IFFrame frame = (IFFrame) super.clone();
+        return frame;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroup.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroup.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroup.java	(revision 590)
@@ -0,0 +1,352 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.Project;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame que contiene a su vez un ArrayList de FFrames de cualquier tipo
+ * incluso de si mismo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGroup extends AbstractFFrameViewDependence implements
+    IFFrameUseProject, IFFrameViewDependence {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameGroup";
+
+    private static final String FFRAMES_FIELD = "fframes";
+
+    private List<IFFrame> m_fframes = new ArrayList<IFFrame>();
+    private Rectangle2D.Double rg = null;
+    private AffineTransform m_at;
+    private Project project;
+
+    /**
+     * Crea un nuevo FFrameGroup.
+     */
+    public FFrameGroup() {
+
+    }
+
+    /**
+     * A�ade al Arraylist un nuevo FFrame para formar parte del grupo.
+     * 
+     * @param fframe
+     *            FFrame a a�adir.
+     */
+    public void addFFrame(IFFrame fframe) {
+        m_fframes.add(fframe);
+    }
+
+    /**
+     * Devuelve una ArrayList que contiene todos los FFrames que forman parte
+     * del grupo.
+     * 
+     * @return Arraylist con los fframes.
+     */
+    public IFFrame[] getFFrames() {
+        return m_fframes.toArray(new IFFrame[0]);
+    }
+
+    /**
+     * Devuelve el rect�ngulo que contiene a todos los fframes seleccionados.
+     * 
+     * @param at
+     *            Matriz de transformaci�n
+     * 
+     * @return Rect�ngulo.
+     */
+    public Rectangle2D.Double getRectangle(AffineTransform at) {
+        boolean first = true;
+        Rectangle2D.Double rec = new Rectangle2D.Double();
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            Rectangle2D.Double rs = fframes[i].getBoundingBox(at);
+
+            if (first) {
+                rec.setRect(rs);
+                first = false;
+            }
+
+            rec.add(rs);
+        }
+
+        rg = new Rectangle2D.Double();
+        rg.setRect(FLayoutUtilities.toSheetRect(rec, m_at));
+
+        return rec;
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen utilizada para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double r = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+        m_at = at;
+
+        for (int i = 0; i < m_fframes.size(); i++) {
+            m_fframes.get(i).draw(g, at, rv, imgBase);
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+    }
+
+    /**
+     * Rellena la transformada que se esta utilizando en el Layout.
+     * 
+     * @param at
+     *            Matriz de transformaci�n.
+     */
+    public void setAt(AffineTransform at) {
+        m_at = at;
+    }
+
+    /**
+     * Reimplementaci�n del m�todo papa poder modificar los BoundBox de cada
+     * uno de los FFrames que contiene dentro este FFrameGroup.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     */
+    public void setBoundBox(Rectangle2D r) {
+        getBoundBox().setRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());
+
+        double dx = 1;
+        double dy = 1;
+        double dw = 1;
+        double dh = 1;
+
+        if (rg != null) {
+            Rectangle2D.Double raux1 =
+                new Rectangle2D.Double(rg.x, rg.y, rg.width, rg.height);
+            dx = r.getX() - raux1.x;
+            dy = r.getY() - raux1.y;
+            dw = r.getWidth() / raux1.width;
+            dh = r.getHeight() / raux1.height;
+            IFFrame[] fframes = getFFrames();
+            for (int i = 0; i < fframes.length; i++) {
+                IFFrame fframe = fframes[i];
+                Rectangle2D.Double raux = new Rectangle2D.Double();
+                raux.setRect(fframe.getBoundBox());
+
+                AffineTransform escalado = new AffineTransform();
+
+                escalado.setToScale(dw, dh);
+                escalado.translate(dx - r.getX(), dy - r.getY());
+
+                Point2D.Double pd = new Point2D.Double();
+                escalado.transform(new Point2D.Double(raux.x, raux.y), pd);
+
+                raux.x = pd.x + r.getX();
+                raux.y = pd.y + r.getY();
+                raux.width = raux.width * dw;
+                raux.height = raux.height * dh;
+
+                fframe.setBoundBox(raux);
+            }
+        } else {
+            rg = new Rectangle2D.Double();
+            rg.setRect(r);
+        }
+
+        rg.setRect(r);
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "grupo") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#print(java.awt.Graphics2D,
+     *      java.awt.geom.AffineTransform)
+     */
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes printingProperties) {
+        Rectangle2D.Double r = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+        IFFrame[] fframes = m_fframes.toArray(new IFFrame[0]);
+        for (int i = 0; i < fframes.length; i++) {
+            fframes[i].print(g, at, geom, printingProperties);
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+    }
+
+    /**
+     * Inserta una referencia al proyecto nesecario.
+     * 
+     * @param project
+     *            DOCUMENT ME!
+     */
+    public void setProject(Project project) {
+        this.project = project;
+    }
+
+    public void initialize() {
+
+    }
+
+    public void clearFFrames() {
+        m_fframes.clear();
+    }
+
+    public IFFrame removeFFrame(int i) {
+        return m_fframes.remove(i);
+    }
+
+    public void removeFFrame(IFFrame fframe) {
+        m_fframes.remove(fframe);
+    }
+
+    public IFFrame clone() throws CloneNotSupportedException {
+        FFrameGroup frame = (FFrameGroup) super.clone();
+        frame.setSelected(this.getSelected() != IFFrame.NOSELECT);
+        frame.m_fframes = new ArrayList<IFFrame>();
+
+        for (int i = 0; i < m_fframes.size(); i++) {
+            frame.addFFrame((IFFrame) m_fframes.get(i).clone());
+        }
+        return frame;
+    }
+
+    public void setFFrameDependence(IFFrame f) {
+        IFFrame[] frames = getFFrames();
+        for (int i = 0; i < frames.length; i++) {
+            if (frames[i] instanceof IFFrameViewDependence) {
+                ((IFFrameViewDependence) frames[i]).setFFrameDependence(f);
+            }
+        }
+    }
+
+    public IFFrame[] getFFrameDependence() {
+        IFFrame[] frames = getFFrames();
+        ArrayList<IFFrame> dependences = new ArrayList<IFFrame>();
+        for (int i = 0; i < frames.length; i++) {
+            if (frames[i] instanceof IFFrameViewDependence) {
+                IFFrame[] framesAux =
+                    ((IFFrameViewDependence) frames[i]).getFFrameDependence();
+                for (int j = 0; j < framesAux.length; j++) {
+                    dependences.add(framesAux[i]);
+                }
+            }
+        }
+        return dependences.toArray(new IFFrame[0]);
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        IFFrame[] frames = getFFrames();
+        for (int i = 0; i < frames.length; i++) {
+
+            if (fnew instanceof FFrameGroup) {
+                IFFrame[] framesGroupNew = ((FFrameGroup) fnew).getFFrames();
+                for (int j = 0; j < framesGroupNew.length; j++) {
+                    if (fant instanceof FFrameGroup) {
+                        IFFrame[] framesGroupAnt =
+                            ((FFrameGroup) fant).getFFrames();
+                        for (int k = 0; k < framesGroupAnt.length; k++) {
+                            if (framesGroupAnt[k] instanceof IFFrameViewDependence) {
+                                refreshDependence(framesGroupAnt[k],
+                                    framesGroupNew[j]);
+                            }
+                        }
+                    }
+                }
+            } else
+                if (frames[i] instanceof IFFrameViewDependence) {
+                    ((IFFrameViewDependence) frames[i]).refreshDependence(fant,
+                        fnew);
+                }
+        }
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameGroup.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameGroup persistence definition", null, null);
+
+            definition
+                .extend(manager
+                    .getDefinition(AbstractFFrameViewDependence.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldList(FFRAMES_FIELD)
+                .setClassOfItems(IFFrame.class).setMandatory(true);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        m_fframes = (List<IFFrame>) state.getList(FFRAMES_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(FFRAMES_FIELD, m_fframes);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbolFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbolFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbolFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameSymbol.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameSymbolFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameSymbol symbol = new FFrameSymbol();
+        symbol.setFrameFactory(this);
+        return symbol;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameSymbol.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameSymbol");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverViewFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverViewFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverViewFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameOverView.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameOverViewFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameOverView view = new FFrameOverView();
+        view.setFrameFactory(this);
+        return view;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameOverView.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameOverView");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphics.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphics.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGraphics.java	(revision 590)
@@ -0,0 +1,566 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.BitSet;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.CircleAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.type.GeometryType;
+import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
+import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para contener un gr�fico.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGraphics extends FFrame implements IFFrameEditableVertex {
+    private static final GeometryManager GEOMETRY_MANAGER =
+        GeometryLocator.getGeometryManager();
+    
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameGraphics";
+
+    private static final String TYPE_FIELD = "type";
+    private static final String SYMBOL_FIELD = "symbol";
+    private static final String GEOMETRYADAPTER_FIELD = "geometryAdapter";
+
+    private static double TOL = 0.2;
+   
+    protected GeometryType geometryType = null;
+    private ISymbol symbol = null;
+    private Color color = null;
+    private GeometryAdapter geometryAdapter;
+    private GeometryAdapter geometryEdit;
+    private boolean editing = false;
+    private double size = 0.5;
+    private BitSet index = new BitSet();
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    /**
+     * Crea un nuevo FFrameGraphics.
+     */
+    public FFrameGraphics() {
+       
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param geom
+     *            DOCUMENT ME!
+     */
+    public void setGeometryAdapter(GeometryAdapter geom) {
+        geometryAdapter = geom;
+    }
+
+    /**
+     * Rellena el color que se utlizar� para dibujar el s�mbolo.
+     * 
+     * @param color
+     */
+    public void setColor(Color color) {
+        this.color = color;
+    }
+
+    /**
+     * Actualiza el Fsymbol a partir del tipo de Gr�fico que se pase como
+     * par�metro.
+     * 
+     * @param type
+     *            tipo de gr�fico.
+     * @param at
+     *            Transformada.
+     */
+    public void update(int type, AffineTransform at) {
+        setType(type);
+        
+        if (color == null) {
+            color = Color.black;
+        }
+
+        symbol = mapContextManager.getSymbolManager().createSymbol(type);
+        if (symbol instanceof IMarkerSymbol) {
+            symbol.setColor(Color.BLACK);
+        }
+        if (symbol instanceof IFillSymbol) {
+            ((IFillSymbol) symbol).setHasFill(false);
+        }
+    }
+
+    /**
+     * Devuelve el FSymbol que se representa.
+     * 
+     * @return DOCUMENT ME!
+     */
+    public ISymbol getFSymbol() {
+        return symbol;
+    }
+
+    /**
+     * Rellena el FSymbol que se representara al dibujar.
+     * 
+     * @param fs2d
+     */
+    public void setSymbol(ISymbol symbol) {
+        this.symbol = symbol;
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            DOCUMENT ME!
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double rect = getBoundingBox(at);
+        
+        g.rotate(Math.toRadians(getRotation()), rect.getCenterX(), rect.getCenterY());
+        
+        if (intersects(rv, rect)) {
+            g.setColor(Color.black);
+
+            /*
+             * Do not force point size to match square
+            if (geometryType.isTypeOf(Geometry.TYPES.POINT)) {
+                ((IMarkerSymbol) symbol)
+                .setSize((int) (rect.getWidth() * 0.7));
+            }
+             */
+            
+            geometryAdapter.draw(g, at, symbol);
+
+            if (editing) {
+                g.setColor(Color.red);
+                geometryAdapter.drawVertex(g, at);
+            }
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), rect.getCenterX(), rect.getCenterY());
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#updateNum()
+     */
+    public void updateNum() {
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNum()
+     */
+    public int getNum() {
+        return 0;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "Graficos") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Inserta el tama�o del punto.
+     * 
+     * @param size
+     *            entero que representa el tama�o del punto.
+     */
+    public void setSize(double size) {
+        this.size = size;
+        Rectangle2D r = geometryAdapter.getBounds2D();
+        super.setBoundBox(new Rectangle2D.Double(r.getX() - size, r.getY()
+            - size, size * 2, size * 2));
+    }
+
+    /**
+     * Devuelve el tipo de gr�fico que contiene el fframe.
+     * 
+     * @return tipo de
+     */
+    public GeometryType getType(){
+        return geometryType;
+    }
+
+    public void setType(int type) {
+        try {
+            geometryType = GEOMETRY_MANAGER.getGeometryType(type, SUBTYPES.GEOM2D);
+        } catch (GeometryTypeNotSupportedException e) {
+            LOG.error("Error setting the geometry type", e);
+        } catch (GeometryTypeNotValidException e) {
+            LOG.error("Error setting the geometry type", e);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param r
+     *            DOCUMENT ME!
+     */
+    public void setBoundBox(Rectangle2D r) {      
+        AffineTransform aT = new AffineTransform();
+
+        if (getBoundBox().getWidth() != 0) {
+            double w = r.getWidth() / getBoundBox().getWidth();
+            double h = r.getHeight() / getBoundBox().getHeight();
+
+            AffineTransform trans2 =
+                AffineTransform.getTranslateInstance(r.getX(), r.getY());
+            aT.concatenate(trans2);
+
+            AffineTransform scale1 = AffineTransform.getScaleInstance(w, h);
+            aT.concatenate(scale1);
+
+            AffineTransform trans1 =
+                AffineTransform.getTranslateInstance(-getBoundBox().getX(),
+                    -getBoundBox().getY());
+            aT.concatenate(trans1);
+            geometryAdapter.applyTransform(aT);
+
+            size = aT.getScaleX() * size;
+        }
+
+        super.setBoundBox(r);
+    }
+
+    /**
+     * DOCUMENT ME!
+     */
+    public void startEditing() {
+        editing = true;
+    }
+
+    /**
+     * DOCUMENT ME!
+     */
+    public void stopEditing() {
+        editing = false;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public boolean isEditing() {
+        return editing;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param point
+     *            DOCUMENT ME!
+     * @param geom
+     *            DOCUMENT ME!
+     */
+    public void pointReleased(Point2D point, GeometryAdapter geom) {
+        index.clear();
+        geometryAdapter = geom;
+
+        Rectangle2D r = geometryAdapter.getBounds2D();
+        super.setBoundBox(r);
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param point
+     *            DOCUMENT ME!
+     */
+    public void pointPressed(Point2D point) {
+        Rectangle2D.Double rect = getBoundBox();
+        Point2D[] points = geometryAdapter.getPoints();
+        try {
+            geometryEdit = (GeometryAdapter) geometryAdapter.clone();
+        } catch (CloneNotSupportedException e) {
+            LOG.error("Error clonning the geometry", e);
+        }
+
+        Point2D pAux1 = new Point2D.Double();
+        index.clear();
+        for (int i = 0; i < points.length; i++) {
+            if (getRotation() != 0) {
+                AffineTransform af =
+                    AffineTransform.getRotateInstance(
+                        Math.toRadians(-getRotation()), rect.x
+                            + (rect.width / 2), rect.y + (rect.height / 2));
+                af.transform(point, pAux1);
+
+                if (points[i].distance(pAux1) <= TOL) {
+                    index.set(i);
+                }
+            } else {
+                if (points[i].distance(point) <= TOL) {
+                    index.set(i);
+                }
+            }
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param point
+     *            DOCUMENT ME!
+     */
+    public void pointDragged(Point2D point) {
+        // Point2D[] points = geometry.getPoints();
+
+        for (int j = index.nextSetBit(0); j >= 0; j = index.nextSetBit(j + 1)) {
+            if (getRotation() != 0) {
+                Rectangle2D.Double rect = getBoundBox();
+                AffineTransform af =
+                    AffineTransform.getRotateInstance(
+                        Math.toRadians(-getRotation()), rect.x
+                            + (rect.width / 2), rect.y + (rect.height / 2));
+                af.transform(point, point);
+            }
+
+            geometryEdit.changePoint(j, point);
+        }
+        geometryEdit.end();
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param g
+     *            DOCUMENT ME!
+     * @param at
+     *            DOCUMENT ME!
+     */
+    public void paint(Graphics2D g, AffineTransform at) {
+        if (geometryEdit != null) {
+            Rectangle2D.Double rect = getBoundingBox(at);
+            if (getRotation() != 0) {
+                g.rotate(Math.toRadians(getRotation()), rect.x
+                    + (rect.width / 2), rect.y + (rect.height / 2));
+                geometryEdit.paint(g, at, false);
+                g.rotate(Math.toRadians(-getRotation()), rect.x
+                    + (rect.width / 2), rect.y + (rect.height / 2));
+            } else {
+                geometryEdit.paint(g, at, false);
+            }
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public GeometryAdapter getGeometry() {
+        return geometryEdit;
+    }
+
+    public void initialize() {
+
+    }
+
+    /**
+     * Devuelve un entero que representa donde esta contenido el punto que se
+     * pasa como par�metro.
+     * 
+     * @param p
+     *            punto a comparar.
+     * 
+     * @return entero que representa como esta contenido el punto.
+     */
+    public int getContains(Point2D p) {
+        if (geometryAdapter instanceof CircleAdapter) {
+            if (ne.contains(p.getX(), p.getY())) {
+                return NE;
+            } else
+                if (se.contains(p.getX(), p.getY())) {
+                    return SE;
+                } else
+                    if (so.contains(p.getX(), p.getY())) {
+                        return SO;
+                    } else
+                        if (no.contains(p.getX(), p.getY())) {
+                            return NO;
+                        } else
+                            if (getBoundingBox(null).contains(p.getX(),
+                                p.getY())) {
+                                return RECT;
+                            }
+            return NOSELECT;
+        }
+        return super.getContains(p);
+    }
+
+    /**
+     * Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
+     * par�metro.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     */
+    public void drawHandlers(Graphics2D g) {
+        if (geometryAdapter instanceof CircleAdapter) {
+            int size = 10;
+            Rectangle2D r = getBoundingBox(null);
+            Point2D p = new Point2D.Double();
+            g.rotate(Math.toRadians(getRotation()), r.getX()
+                + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
+
+            AffineTransform atRotate = new AffineTransform();
+            atRotate.rotate(Math.toRadians(getRotation()),
+                r.getX() + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
+
+            g.fillRect((int) r.getX() - size, (int) r.getY() - size, size, size);
+            atRotate.transform(new Point2D.Double(r.getX() - size, r.getY()
+                - size), p);
+            no.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+            g.fillRect((int) r.getMaxX(), (int) r.getY() - size, size, size);
+            atRotate.transform(
+                new Point2D.Double(r.getMaxX(), r.getY() - size), p);
+            ne.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+            g.fillRect((int) r.getX() - size, (int) r.getMaxY(), size, size);
+            atRotate.transform(
+                new Point2D.Double(r.getX() - size, r.getMaxY()), p);
+            so.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+            g.fillRect((int) r.getMaxX(), (int) r.getMaxY(), size, size);
+            atRotate.transform(new Point2D.Double(r.getMaxX(), r.getMaxY()), p);
+            se.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+            g.rotate(Math.toRadians(-getRotation()), r.getX()
+                + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
+        } else {
+            super.drawHandlers(g);
+        }
+    }
+
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes printingProperties) {
+        Rectangle2D.Double rect = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), rect.x + (rect.width / 2),
+            rect.y + (rect.height / 2));
+        g.setColor(Color.black);
+
+        geometryAdapter.print(g, at, symbol, printingProperties);
+
+        if (editing) {
+            g.setColor(Color.red);
+            geometryAdapter.drawVertex(g, at);
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), rect.x + (rect.width / 2),
+            rect.y + (rect.height / 2));
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameGraphics.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameGraphics persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldInt(TYPE_FIELD).setMandatory(true);
+            definition.addDynFieldObject(SYMBOL_FIELD).setMandatory(true)
+                .setClassOfValue(ISymbol.class);
+            definition.addDynFieldObject(GEOMETRYADAPTER_FIELD)
+                .setClassOfValue(GeometryAdapter.class);
+        }
+
+        GeometryAdapter.registerPersistent();
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        try {
+            geometryType =  GEOMETRY_MANAGER.getGeometryType(state.getInt(TYPE_FIELD), SUBTYPES.GEOM2D);
+        } catch (GeometryTypeNotSupportedException e) {
+            LOG.error("Error loading the geometry type", e);
+        } catch (GeometryTypeNotValidException e) {
+            LOG.error("Error loading the geometry type", e);
+        }
+        symbol = (ISymbol) state.get(SYMBOL_FIELD);
+        geometryAdapter = (GeometryAdapter) state.get(GEOMETRYADAPTER_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(TYPE_FIELD, geometryType.getType());
+        state.set(SYMBOL_FIELD, symbol);
+        state.set(GEOMETRYADAPTER_FIELD, geometryAdapter);
+    }
+    
+    public Object clone() throws CloneNotSupportedException {
+        FFrameGraphics resp = (FFrameGraphics) super.clone();
+        
+        GeometryAdapter nga = null;
+        if (geometryAdapter != null) {
+            nga = (GeometryAdapter) geometryAdapter.clone();
+        }
+        resp.setGeometryAdapter(nga);
+        return resp;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePictureFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePictureFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePictureFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFramePicture.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFramePictureFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFramePicture picture = new FFramePicture();
+        picture.setFrameFactory(this);
+        return picture;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFramePicture.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFramePicture");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverView.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverView.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverView.java	(revision 590)
@@ -0,0 +1,290 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Line2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import javax.swing.JOptionPane;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.MapContextException;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir el localizador de una vista en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameOverView extends FFrameView implements IFFrameViewDependence {
+
+    private static final Logger logger = LoggerFactory
+        .getLogger(FFrameOverView.class);
+    
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameOverView";
+
+    private static final String FFRAMEVIEWDEPENDENCE_FIELD =
+        "fframeViewDependence";
+
+    private MapContext assoc_map;
+    private Envelope extent;
+    private FFrameView fframeViewDependence;
+
+    protected void createImage(AffineTransform affineTransform,
+    		int width, int height, Point mapOrigin) throws ReadException, MapContextException {
+    	// FIXME: we create the image on every redraw instead of implementing some optimizations
+    	// The overview should not be heavy to paint, but we could optimize the process by setting
+    	// the listeners to the right mapcontext, the image would be automaticall invalidated when
+    	// needed.
+    	m_image = null;
+    	
+    	super.createImage(affineTransform, width, height, mapOrigin);
+    	Graphics2D g = (Graphics2D) m_image.createGraphics();
+    	Dimension size = getMapContext().getViewPort().getImageSize();
+    	Rectangle2D r = new Rectangle2D.Double(0, 0, size.getWidth(), size.getHeight());
+    	drawAreaOfInterestBox(g, affineTransform, r, null);
+    	g.dispose();
+    }
+
+    protected void drawAreaOfInterestBox(
+    		Graphics2D g,
+    		AffineTransform at,
+    		Rectangle2D clip,
+    		PrintAttributes printAttributes) {
+
+    	if ((assoc_map != null)
+    			&& (assoc_map.getViewPort().getEnvelope() != null)
+    			&& (getMapContext().getViewPort().getEnvelope() != null)) {
+
+    		ViewPort vp = getMapContext().getViewPort();
+    		ViewPort vpOrig = assoc_map.getViewPort();
+
+    		if (extent == null) {
+    			extent = vpOrig.getAdjustedEnvelope();
+    		}
+    		
+    		Image ov_img = new BufferedImage(
+    				vp.getImageWidth(),
+    				vp.getImageHeight(),
+    				BufferedImage.TYPE_INT_ARGB);
+    		Graphics ov_img_gra = ov_img.getGraphics();
+
+    		/*
+    		 * Fill with transparent color
+    		 */
+    		 ov_img_gra.setColor(new Color(0, 0, 0, 0));
+    		ov_img_gra.fillRect(0, 0,
+    				vp.getImageWidth(), vp.getImageHeight());
+
+    		/*
+    		 * Area of interest in pixels, inside ov_img image
+    		 */
+
+    		Rectangle2D aux =
+    				new Rectangle2D.Double(extent.getMinimum(0),
+    						extent.getMinimum(1), extent.getLength(0),
+    						extent.getLength(1));
+    		Rectangle2D extentPixels = vp.fromMapRectangle(aux);
+
+    		/*
+    		 * Fill (gray) and perimeter (red)
+    		 */
+    		ov_img_gra.setColor(new Color(100, 100, 100, 100));
+    		ov_img_gra.fillRect((int) extentPixels.getMinX(),
+    				(int) extentPixels.getMinY(),
+    				(int) extentPixels.getWidth(),
+    				(int) extentPixels.getHeight());
+    		ov_img_gra.setColor(Color.red);
+    		ov_img_gra.drawRect((int) extentPixels.getMinX(),
+    				(int) extentPixels.getMinY(),
+    				(int) extentPixels.getWidth(),
+    				(int) extentPixels.getHeight());
+
+    		int aoi_top = (int) extentPixels.getMinY();
+    		int aoi_bottom = (int) extentPixels.getMaxY();
+    		int aoi_left = (int) extentPixels.getMinX();
+    		int aoi_right = (int) extentPixels.getMaxX();
+    		/*
+    		 * Draw vertical, horizontal lines
+    		 */
+    		ov_img_gra.setColor(Color.darkGray);
+    		int cx = (int) extentPixels.getCenterX(); 
+    		int cy = (int) extentPixels.getCenterY();
+    		int maxx = vp.getImageWidth();
+    		int maxy = vp.getImageHeight();
+
+    		// vertical
+    		ov_img_gra.drawLine(cx, 0, cx, aoi_top);
+    		ov_img_gra.drawLine(cx, aoi_bottom, cx, maxy);
+    		// horiz
+    		ov_img_gra.drawLine(0, cy, aoi_left, cy);
+    		ov_img_gra.drawLine(aoi_right, cy, maxx, cy);
+
+    		/*
+    		 * Semi-transparent image is ready
+    		 */
+
+    		/*
+    		 * Save clip area
+    		 */
+    		Rectangle2D origClip = g.getClipBounds();
+    		g.setClip((int) clip.getX(), (int) clip.getY(),
+    				(int) clip.getWidth(), (int) clip.getHeight());
+
+    		/*
+    		 * Draw image
+    		 */
+    		g.drawImage(ov_img, (int)clip.getX(), (int)clip.getY(), null);
+    		ov_img_gra.dispose();
+
+    		/*
+    		 * Restore clip area
+    		 */
+    		if (origClip!=null) {
+    		g.setClip((int) origClip.getX(), (int) origClip.getY(),
+    				(int) origClip.getWidth(), (int) origClip.getHeight());
+    		}
+    		else {
+    			g.setClip(null);
+    		}
+    		extent = null;
+    	}
+    }
+    
+    protected void print(Graphics2D g, AffineTransform at, PrintAttributes printAttributes) {        
+        super.print(g, at, printAttributes);
+		Rectangle2D r = getBoundingBox(at);
+		if (getMapContext()!=null && getMapContext().getViewPort()!=null) {
+			ViewPort vp = getMapContext().getViewPort();
+			Dimension oldSize = vp.getImageSize();
+			vp.setImageSize(new Dimension((int)r.getWidth(), (int) r.getHeight()));
+			drawAreaOfInterestBox(g, at, r, printAttributes);
+			vp.setImageSize(oldSize);
+		}
+    }
+    
+    public void setView(ViewDocument v) {
+    	this.viewDocument = v;
+        if (fframeViewDependence == null)
+            return;
+        assoc_map = fframeViewDependence.getMapContext();
+        if (v!=null) {
+        	setViewMapContext(v.getMapOverViewContext());
+        }
+    }
+    
+    protected void setListeners() {
+    	// we don't need any listener for FFrameOverview
+    }
+
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "Localizador") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    public IFFrame clone() throws CloneNotSupportedException {
+        FFrameOverView frame = (FFrameOverView) super.clone();
+        frame.setSelected(this.isSelected());
+        cloneActions(frame);
+        return frame;
+    }
+
+    public void setFFrameDependence(IFFrame f) {
+        fframeViewDependence = (FFrameView) f;
+    }
+
+    public IFFrame[] getFFrameDependence() {
+        return new IFFrame[] { fframeViewDependence };
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        if ((fframeViewDependence != null) && fframeViewDependence.equals(fant)
+        		&& fnew instanceof FFrameView) {
+        	FFrameView newFFView = (FFrameView) fnew;
+        	setView(newFFView.getView());
+        }
+    }
+ 
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameOverView.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameOverView persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrameView.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldObject(FFRAMEVIEWDEPENDENCE_FIELD)
+                .setClassOfValue(FFrameView.class);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        fframeViewDependence =
+            (FFrameView) state.get(FFRAMEVIEWDEPENDENCE_FIELD);
+        
+        /*
+         * force refreshment of other fields
+         */
+        this.setView(viewDocument);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(FFRAMEVIEWDEPENDENCE_FIELD, fframeViewDependence);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/AbstractFFrameViewDependence.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/AbstractFFrameViewDependence.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/AbstractFFrameViewDependence.java	(revision 590)
@@ -0,0 +1,97 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ * 
+ */
+public abstract class AbstractFFrameViewDependence extends FFrame implements
+    IFFrameViewDependence {
+
+    public static final String PERSISTENCE_DEFINITION_NAME =
+        "AbstractFFrameViewDependence";
+    private static final String FFRAMEVIEWDEPENDENCE_FIELD =
+        "fframeViewDependence";
+
+    protected FFrameView fframeViewDependence = null;
+
+    @Override
+    public IFFrame clone() throws CloneNotSupportedException {
+        IFFrame frame = (IFFrame) super.clone();
+        // ((IFFrameViewDependence)
+        // frame).initDependence(layout.getLayoutContext().getAllFFrames());
+        return frame;
+    }
+
+    public void setFFrameDependence(IFFrame f) {
+        fframeViewDependence = (FFrameView) f;
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        if ((fframeViewDependence != null) && fframeViewDependence.equals(fant)) {
+            fframeViewDependence = (FFrameView) fnew;
+        }
+    }
+
+    public IFFrame[] getFFrameDependence() {
+        return new IFFrame[] { fframeViewDependence };
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(AbstractFFrameViewDependence.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "AbstractFFrameViewDependence persistence definition",
+                    null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldObject(FFRAMEVIEWDEPENDENCE_FIELD)
+                .setClassOfValue(FFrameView.class);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        fframeViewDependence =
+            (FFrameView) state.get(FFRAMEVIEWDEPENDENCE_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(FFRAMEVIEWDEPENDENCE_FIELD, fframeViewDependence);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTextFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTextFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTextFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameText.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameTextFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameText text = new FFrameText();
+        text.setFrameFactory(this);
+        return text;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameText.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameText");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrame.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrame.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrame.java	(revision 590)
@@ -0,0 +1,937 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Area;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindowListener;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.layout.Attributes;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Class implementing the IFFrame interface, that will be extended by all the
+ * FFrames. It provides default methods useful for all fframes and abstract
+ * methods to be implemented by them.
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izquierdo
+ */
+public abstract class FFrame implements IFFrame {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrame";
+
+    private static final String BOUNDINGBOX_FIELD = "boundingBox";
+    private static final String SELECTED_FIELD = "selected";
+    private static final String TAG_FIELD = "tag";
+    private static final String ROTATION_FIELD = "rotation";
+    private static final String LEVEL_FIELD = "level";
+    private static final String NUM_FIELD = "num";
+	private static final String DOCUMENT_FIELD = "layoutDocument";
+	private static final String LAYOUT_CONTEXT_FIELD = "layoutContext";
+
+    protected static final Logger LOG = LoggerFactory.getLogger(FFrame.class);
+
+    protected Rectangle2D.Double m_BoundBox = new Rectangle2D.Double();
+    // initially identity
+    protected AffineTransform lastAT = new AffineTransform();
+    
+    protected int m_Selected = 0;
+    protected Rectangle n = new Rectangle();
+    protected Rectangle ne = new Rectangle();
+    protected Rectangle e = new Rectangle();
+    protected Rectangle se = new Rectangle();
+    protected Rectangle s = new Rectangle();
+    protected Rectangle so = new Rectangle();
+    protected Rectangle o = new Rectangle();
+    protected Rectangle no = new Rectangle();
+    private String tag = null;
+    protected int num = 0;
+    private double m_rotation = 0;
+    private int level = -1;
+    private Rectangle2D lastMoveRect;
+    protected FrameFactory frameFactory;
+
+    private static Image iNEResize = null;
+    private static Image iEResize = null;
+    private static Image iNResize = null;
+    private static Image iMove = null;
+    private static Image iSEResize = null;
+
+    protected LayoutManager layoutManager = null;
+    // user getters to access these variables:
+    private LayoutContext layoutContext = null;
+    private Document document = null;
+	
+    protected ObservableHelper observers;
+    
+    public FFrame() {
+        super();
+        layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+        observers = new ObservableHelper();
+    }
+
+    /**
+     * Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
+     * par�metro.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     */
+    public void drawHandlers(Graphics2D g) {
+        int size = 10;
+        Rectangle2D r = getBoundingBox(null);
+        Point2D p = new Point2D.Double();
+        g.rotate(Math.toRadians(getRotation()), r.getX() + (r.getWidth() / 2),
+            r.getY() + (r.getHeight() / 2));
+
+        AffineTransform atRotate = new AffineTransform();
+        atRotate.rotate(Math.toRadians(getRotation()), r.getX()
+            + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
+
+        g.fillRect((int) r.getX() - size, (int) r.getY() - size, size, size);
+        atRotate.transform(
+            new Point2D.Double(r.getX() - size, r.getY() - size), p);
+        no.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getMaxX(), (int) r.getY() - size, size, size);
+        atRotate.transform(new Point2D.Double(r.getMaxX(), r.getY() - size), p);
+        ne.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getX() - size, (int) r.getMaxY(), size, size);
+        atRotate.transform(new Point2D.Double(r.getX() - size, r.getMaxY()), p);
+        so.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getMaxX(), (int) r.getMaxY(), size, size);
+        atRotate.transform(new Point2D.Double(r.getMaxX(), r.getMaxY()), p);
+        se.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getY() - size,
+            size, size);
+        atRotate
+            .transform(new Point2D.Double(r.getCenterX() - (size / 2), r.getY()
+                - size), p);
+        n.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getMaxY(), size,
+            size);
+        atRotate.transform(
+            new Point2D.Double(r.getCenterX() - (size / 2), r.getMaxY()), p);
+        s.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getX() - size, (int) r.getCenterY() - (size / 2),
+            size, size);
+        atRotate.transform(new Point2D.Double(r.getX() - size, r.getCenterY()
+            - (size / 2)), p);
+        o.setRect((int) p.getX(), (int) p.getY(), size, size);
+
+        g.fillRect((int) r.getMaxX(), (int) r.getCenterY() - (size / 2), size,
+            size);
+        atRotate.transform(new Point2D.Double(r.getMaxX(), r.getCenterY()
+            - (size / 2)), p);
+        e.setRect((int) p.getX(), (int) p.getY(), size, size);
+        g.rotate(Math.toRadians(-getRotation()), r.getX() + (r.getWidth() / 2),
+            r.getY() + (r.getHeight() / 2));
+    }
+
+    /**
+     * Sets the type of selection performed on the frame, based on the position
+     * of the provided Point compared with the boundaries of the FFrame.
+     * This method is usually called when the user clicks on the FFrame
+     * 
+     * @param p
+     *            Point which should be evaluated to establish if the FFrame must
+     *            be selected or not
+     * @param e   Mouse event that triggered this method call
+     * @see {@link #isSelected()}, {@link #getSelected()}
+     */
+    public void setSelected(Point2D p, MouseEvent e) {
+        doSetSelected(getContains(p));
+    }
+
+    /**
+     * Actualiza el BoundBox del FFrame a partir de su rect�ngulo en pixels y
+     * la matriz de transformaci�n.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     * @param at
+     *            Matriz de transformaci�n.
+     */
+    public void updateRect(Rectangle2D r, AffineTransform at) {
+        Rectangle2D.Double rec = FLayoutUtilities.toSheetRect(r, at);
+        rec.setRect((int) rec.getMinX(), (int) rec.getMinY(),
+            (int) rec.getWidth(), (int) rec.getHeight());
+        setBoundBox(rec);
+    }
+
+    /**
+     * Devuelve el rect�ngulo a partir del desplazamiento en el eje x y el
+     * desplazamiento en el eje y.
+     * 
+     * @param difx
+     *            desplazamiento sobre el eje x.
+     * @param dify
+     *            desplazamiento sobre el eje y.
+     * 
+     * @return rect�ngulo modificado en funci�n del desplazamiento
+     *         realizado.
+     */
+    public Rectangle2D getMovieRect(int difx, int dify) {
+        double x = 0;
+        double y = 0;
+        double w = 0;
+        double h = 0;
+
+        lastMoveRect =
+            new Rectangle2D.Double(this.getBoundingBox(null).x,
+                this.getBoundingBox(null).y, this.getBoundingBox(null).width,
+                this.getBoundingBox(null).height);
+        Rectangle2D.Double rec = this.getBoundingBox(null);
+        int difn = 0;
+        difn = difx;
+        x = lastMoveRect.getX();
+        y = lastMoveRect.getY();
+        w = lastMoveRect.getWidth();
+        h = lastMoveRect.getHeight();
+
+        switch (this.getSelected()) {
+        case (RECT):
+            lastMoveRect.setRect((x + difx), (y + dify), w, h);
+
+            break;
+
+        case (N):
+
+            if ((y + dify) > rec.getMaxY()) {
+                y = rec.getMaxY();
+            } else {
+                y = y + dify;
+            }
+
+            lastMoveRect.setRect(x, y, w, Math.abs(h - dify));
+
+            break;
+
+        case (O):
+
+            if ((x + difx) > rec.getMaxX()) {
+                x = rec.getMaxX();
+            } else {
+                x = x + difx;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w - difx), h);
+
+            break;
+
+        case (S):
+
+            if (y > (rec.getMaxY() + dify)) {
+                y = rec.getMaxY() + dify;
+            }
+
+            lastMoveRect.setRect(x, y, w, Math.abs(h + dify));
+
+            break;
+
+        case (E):
+
+            if (x > (rec.getMaxX() + difx)) {
+                x = rec.getMaxX() + difx;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w + difx), h);
+
+            break;
+
+        case (NE):
+
+            if ((y - difn) > rec.getMaxY()) {
+                y = rec.getMaxY();
+                x = rec.getMaxX() + difn;
+            } else {
+                y = y - difn;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w + difn), Math.abs(h + difn));
+
+            break;
+
+        case (NO):
+
+            if ((y + difn) > rec.getMaxY()) {
+                y = rec.getMaxY();
+                x = rec.getMaxX();
+            } else {
+                x = x + difn;
+                y = y + difn;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w - difn), Math.abs(h - difn));
+
+            break;
+
+        case (SE):
+
+            if (y > (rec.getMaxY() + difn)) {
+                y = rec.getMaxY() + difn;
+                x = rec.getMaxX() + difn;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w + difn), Math.abs(h + difn));
+
+            break;
+
+        case (SO):
+
+            if ((x + difn) > rec.getMaxX()) {
+                x = rec.getMaxX();
+                y = rec.getMaxY() - difn;
+            } else {
+                x = x + difn;
+            }
+
+            lastMoveRect.setRect(x, y, Math.abs(w - difn), Math.abs(h - difn));
+
+            break;
+
+        default:
+            lastMoveRect.setRect((x), (y), w, h);
+        }
+
+        return lastMoveRect;
+    }
+
+    /**
+     * Devuelve el rect�ngulo que representa el �ltimo generado al desplazar
+     * o modificar el tama�o del fframe.
+     * 
+     * @return Rectangle2D
+     * 
+     */
+    public Rectangle2D getLastMoveRect() {
+        return lastMoveRect;
+    }
+
+    /**
+     * Returns an integer representing the type of selection applied to the
+     * FFrame. Valid values are:
+     * {@link IFFrame#NOSELECT},
+     * {@link IFFrame#NO}, {@link IFFrame#N}, {@link IFFrame#NE},
+     * {@link IFFrame#O}, {@link IFFrame#RECT}, {@link IFFrame#E},
+     * {@link IFFrame#SO}, {@link IFFrame#S}, {@link IFFrame#SE}.
+     * 
+     * @see {@link #isSelected()}, {@link #setSelected(boolean)}
+     * @return The type of selection that has been applied
+     */
+    public int getSelected() {
+        return m_Selected;
+    }
+    
+    /**
+     * Gets the selection status of the frame
+     * 
+     * @return <code>true</code> if the frame is selected,
+     *    <code>false</code> otherwise
+     * @see {@link #getSelected()}, {@link #setSelected(boolean)}
+     */
+    public boolean isSelected() {
+    	return getSelected()!=IFFrame.NOSELECT;
+    }
+
+    /**
+     * Devuelve true, si el punto que se pasa como par�metro esta contenido
+     * dentro del boundingbox del fframe.
+     * 
+     * @param p
+     *            punto a comprobar.
+     * 
+     * @return true si el punto esta dentro del boundingbox.
+     */
+    public boolean contains(Point2D p) {
+        return getBoundingBox(null).contains(p.getX(), p.getY());
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getContains(Point2D)
+     */
+    public int getContains(Point2D p) {
+    	Point2D point = new Point2D.Double();
+    	AffineTransform rotationAT = getRotationAT();
+    	if (rotationAT!=null) {
+    		// if the frame is rotated, we need to inversely rotate the point in order
+    		// to decide whether it is contained or not in the non-rotated frame
+    		try {
+				rotationAT.createInverse().transform(p, point);
+			} catch (NoninvertibleTransformException e1) {}
+    	}
+    	else {
+    		point = p;
+    	}
+        if (n.contains(point.getX(), point.getY())) {
+            return N;
+        } else
+            if (ne.contains(point.getX(), point.getY())) {
+                return NE;
+            } else
+                if (e.contains(point.getX(), point.getY())) {
+                    return E;
+                } else
+                    if (se.contains(point.getX(), point.getY())) {
+                        return SE;
+                    } else
+                        if (s.contains(point.getX(), point.getY())) {
+                            return S;
+                        } else
+                            if (so.contains(point.getX(), point.getY())) {
+                                return SO;
+                            } else
+                                if (o.contains(point.getX(), point.getY())) {
+                                    return O;
+                                } else
+                                    if (no.contains(point.getX(), point.getY())) {
+                                        return NO;
+                                    } else
+                                        if (getBoundingBox(null).contains(
+                                            point.getX(), point.getY())) {
+                                            return RECT;
+                                        }
+
+        return NOSELECT;
+    }
+
+    /**
+     * Devuelve el Cursor adecuado seg�n como est� contenido el punto, si es
+     * para desplazamiento, o cambio de tama�o.
+     * 
+     * @param p
+     *            punto a comprobar.
+     * 
+     * @return Cursor adecuado a la posici�n.
+     */
+    public Image getMapCursor(Point2D p) {
+        int select = getContains(p);
+
+        switch (select) {
+        case (N):
+            return iNResize;
+
+        case (NE):
+            return iNEResize;
+
+        case (E):
+            return iEResize;
+
+        case (SE):
+            return iSEResize;
+
+        case (S):
+            return iNResize;
+
+        case (SO):
+            return iNEResize;
+
+        case (O):
+            return iEResize;
+
+        case (NO):
+            return iSEResize;
+
+        case (RECT):
+            return iMove;
+        }
+
+        return null;
+    }
+
+    /**
+     * Draws the FFrame on the provided Graphics, according to the
+     * provided affine transform and the visible rectangle. It has to
+     * to be implemented by each FFrame, as each of them usually draws
+     * diffently.
+     * 
+     * @param g Graphics2D
+     * @param at Affine transform to translate sheet coordinates (in cm)
+     * 				to screen coordinates (in pixels)
+     * @param visibleLayoutDocRect visible rectangle
+     * @param imgBase Image used to speed up the drawing process
+     */
+    public abstract void draw(Graphics2D g, AffineTransform at, Rectangle2D r,
+        BufferedImage imgBase);
+
+    /**
+     * Returns the bounding box (in pixels) of this FFrame, based on the provided
+     * AffineTransform. If the AffineTransform is null, it returns the last
+     * calculated bounding box.
+     * 
+     * @param at Affine transform to apply to the sheet coordinates to get the
+     *  		bounding box in pixels.
+     * @return Rectangle representing the bounding box (in pixels) of this
+     * FFrame
+     */
+    public Rectangle2D.Double getBoundingBox(AffineTransform at) {
+        if (at != null) {
+            lastAT = (AffineTransform) at.clone();
+        }
+        return FLayoutUtilities.fromSheetRect(m_BoundBox, lastAT);
+    }
+
+    /**
+     * Sets the bounding box in centimeters of this FFrame, using  paper
+     * coordinates.
+     * 
+     * @param r
+     *            Rectangle in centimeters
+     */
+    public void setBoundBox(Rectangle2D r) {
+        if (r == null) {
+            LOG.info("Warning: BBOX set to NULL in FFrame!");
+            m_BoundBox = null;
+        } else {
+            m_BoundBox = new Rectangle2D.Double(r.getX(), r.getY(),
+                r.getWidth(), r.getHeight());
+        }
+    }
+
+    /**
+     * Returns the bounding box in centimeters of this FFrame, using paper
+     * coordinates
+     * 
+     * @return The bounding box of this FFrame, measured in centimeters.
+     */
+    public Rectangle2D.Double getBoundBox() {
+        return m_BoundBox;
+    }
+
+    /**
+     * Sets the selected status of the frame.
+     * 
+     * @param selected
+     *            <code>true</code> to select the frame, <code>false</code> to
+     *            unselect it
+     * @see {@link #isSelected()}, {@link #getSelected()}
+     */
+    public void setSelected(boolean selected) {
+        if (selected) {
+        	doSetSelected(IFFrame.RECT);
+        } else {
+        	doSetSelected(IFFrame.NOSELECT);
+        }
+    }
+    
+    protected void doSetSelected(int selectedStatus) {
+    	m_Selected = selectedStatus;
+    }
+
+    /**
+     * Dibuja sobre el graphics el rect�ngulo del fframe en modo borrador.
+     * 
+     * @param g
+     *            Graphics so bre el que dibujar.
+     */
+    public void drawDraft(Graphics2D g) {
+        Rectangle2D r = getBoundingBox(null);
+
+        g.setColor(Color.lightGray);
+        g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.black);
+        g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth() - 1,
+            (int) r.getHeight() - 1);
+        int scale = (int) (r.getWidth() / 12);
+        Font f = new Font("SansSerif", Font.PLAIN, scale);
+        g.setFont(f);
+        g.drawString(getName(),
+            (int) (r.getCenterX() - ((getName().length() * scale) / 4)),
+            (int) (r.getCenterY()));
+    }
+
+    /**
+     * Rellena con el n�mero de FFrame.
+     * 
+     * @param i
+     *            n�mero
+     */
+    public void setNum(int i) {
+        num = i;
+    }
+
+    /**
+     * Draws the FFrame rectangle on the provided Graphics2D, only showing the
+     * FFrame name on an empty rectangle.
+     * 
+     * @param g The graphics to draw on
+     */
+    public void drawEmpty(Graphics2D g) {
+        Rectangle2D r = getBoundingBox(null);
+        g.setColor(Color.lightGray);
+        g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.darkGray);
+        g.setStroke(new BasicStroke(2));
+        g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.black);
+
+        int scale = (int) (r.getWidth() / 12);
+        Font f = new Font("SansSerif", Font.PLAIN, scale);
+        g.setFont(f);
+
+        String s =
+            this.getNameFFrame() + " " + PluginServices.getText(this, "vacia");
+
+        g.drawString(s, (int) (r.getCenterX() - ((s.length() * scale) / 4)),
+            (int) (r.getCenterY()));
+    }
+
+    /**
+     * Devuelve true si el rect�ngulo primero es null o si es distinto de null
+     * e intersecta.
+     * 
+     * @param rv
+     *            Rect�ngulo
+     * @param r
+     *            Rect�ngulo
+     * 
+     * @return True si intersecta o es null.
+     */
+    public boolean intersects(Rectangle2D rv, Rectangle2D r) {
+        return (((rv != null) && rv.intersects(r)) || (rv == null));
+    }
+
+    /**
+     * Rellena el tag del FFrame.
+     * 
+     * @param s
+     *            String que representa el valor a guardar en el tag.
+     */
+    public void setTag(String s) {
+        tag = s;
+    }
+
+    /**
+     * Devuelve el tag.
+     * 
+     * @return tag.
+     */
+    public String getTag() {
+        return tag;
+    }
+
+    /**
+     * Dibuja sobre el graphics que se pasa como par�metro el icono que
+     * representa que contiene un tag.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar el icono.
+     */
+    public void drawSymbolTag(Graphics2D g) {
+        Rectangle2D rec = getBoundingBox(null);
+        g.rotate(Math.toRadians(getRotation()), rec.getX()
+            + (rec.getWidth() / 2), rec.getY() + (rec.getHeight() / 2));
+
+        try {
+            Image image =
+                PluginServices.getIconTheme().get("symboltag-icon").getImage();
+            g.drawImage(image, (int) rec.getX(), (int) rec.getCenterY(), 30,
+                30, null);
+        } catch (NullPointerException npe) {
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), rec.getX()
+            + (rec.getWidth() / 2), rec.getY() + (rec.getHeight() / 2));
+    }
+
+    /**
+     * Sets the rotation of the frame, measured in arc degrees
+     * 
+     * @param rotation
+     *            Rotation to apply to the frame
+     */
+    public void setRotation(double rotation) {
+        m_rotation = rotation;
+    }
+    
+    /**
+     * Gets the affine transform used to rotate the graphics when rotation is not 0
+     * 
+     * @return
+     */
+    protected AffineTransform getRotationAT() {
+    	// it has to be calculated each time as the frameRect may change, for instance
+    	// because a zoom in/out to paper has been performed
+    	double rotation = getRotation();
+    	if (getLayoutContext()!=null && getLayoutContext().getAT()!=null && Math.abs(rotation)>0.00001) {
+    		AffineTransform rotationAT = new AffineTransform();
+        	Rectangle2D.Double frameRect = getBoundingBox(getLayoutContext().getAT());
+        	rotationAT.rotate(Math.toRadians(getRotation()), frameRect.getCenterX(), frameRect.getCenterY());
+        	return rotationAT;
+    	}
+    	return null;
+    }
+
+    /**
+     * Gets the rotation of the frame, measured in arc degrees
+     * 
+     * @return Rotation of the frame
+     */
+    public double getRotation() {
+        return m_rotation;
+    }
+
+    /**
+     * Devuelve el nivel en el que se encuentra el FFrame.
+     * 
+     * @return nivel
+     */
+    public int getLevel() {
+        return level;
+    }
+
+    /**
+     * Inserta el nivel al que se encuentra el FFrame.
+     * 
+     * @param l
+     *            entero que refleja el nivel del FFrame.
+     */
+    public void setLevel(int l) {
+        level = l;
+    }
+
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+        IFFrame frame = (IFFrame) super.clone();
+        frame.setBoundBox(this.getBoundBox());
+        return frame;
+    }
+
+    public void setFrameFactory(FrameFactory flf) {
+        frameFactory = flf;
+    }
+
+    public FrameFactory getFrameFactory() {
+        return frameFactory;
+    }
+
+    /**
+     * Initilizes the static icons
+     */
+    public static void initializeIcons() {
+        iNEResize =
+            PluginServices.getIconTheme().get("neresize-icon").getImage();
+        iEResize = PluginServices.getIconTheme().get("eresize-icon").getImage();
+        iNResize = PluginServices.getIconTheme().get("nresize-icon").getImage();
+        iMove = PluginServices.getIconTheme().get("graphic-move-icon").getImage();
+        iSEResize =
+            PluginServices.getIconTheme().get("sereresize-icon").getImage();
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrame.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrame persistence definition", null, null);
+
+            definition.addDynFieldObject(BOUNDINGBOX_FIELD)
+                .setClassOfValue(Rectangle2D.class).setMandatory(true);
+            definition.addDynFieldInt(SELECTED_FIELD).setMandatory(true);
+            definition.addDynFieldString(TAG_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(ROTATION_FIELD).setMandatory(true);
+            definition.addDynFieldInt(LEVEL_FIELD).setMandatory(true);
+            definition.addDynFieldInt(NUM_FIELD).setMandatory(true);
+            definition.addDynFieldObject(DOCUMENT_FIELD).setClassOfValue(LayoutDocument.class).setMandatory(false);
+            definition.addDynFieldObject(LAYOUT_CONTEXT_FIELD).setClassOfValue(LayoutContext.class).setMandatory(false);
+        }
+
+        Attributes.registerPersistent();
+        AbstractFFrameViewDependence.registerPersistent();
+        FFrameBasic.registerPersistent();
+        FFrameGraphics.registerPersistent();
+        FFrameSymbol.registerPersistent();
+        FFrameGrid.registerPersistent();
+        FFrameGroup.registerPersistent();
+        FFrameTable.registerPersistent();
+        FFrameLegend.registerPersistent();
+        FFramePicture.registerPersistent();
+        FFrameNorth.registerPersistent();
+        FFrameScaleBar.registerPersistent();
+        FFrameText.registerPersistent();
+        FFrameView.registerPersistent();
+        FFrameOverView.registerPersistent();
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        m_BoundBox = (Rectangle2D.Double) state.get(BOUNDINGBOX_FIELD);
+        m_Selected = state.getInt(SELECTED_FIELD);
+        tag = state.getString(TAG_FIELD);
+        m_rotation = state.getDouble(ROTATION_FIELD);
+        level = state.getInt(LEVEL_FIELD);
+        num = state.getInt(NUM_FIELD);
+        if (state.hasValue(DOCUMENT_FIELD)) {
+        	setDocument((LayoutDocument)state.get(DOCUMENT_FIELD ));
+        }
+        if (state.hasValue(LAYOUT_CONTEXT_FIELD)) {
+        	setLayoutContext((LayoutContext) state.get(LAYOUT_CONTEXT_FIELD));
+        }
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(BOUNDINGBOX_FIELD, getBoundBox());
+        state.set(SELECTED_FIELD, m_Selected);
+        state.set(TAG_FIELD, getTag());
+        state.set(ROTATION_FIELD, getRotation());
+        state.set(LEVEL_FIELD, getLevel());
+        state.set(NUM_FIELD, num);
+        state.set(DOCUMENT_FIELD, getDocument());
+        state.set(LAYOUT_CONTEXT_FIELD, getLayoutContext());
+    }
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.tools.dispose.Disposable#dispose()
+     */
+	public void dispose() {
+		
+	}
+	
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#frameRemoved()
+     */
+	public void frameRemoved() {}
+	
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#frameAdded()
+     */
+	public void frameAdded() {}
+	
+	public LayoutContext getLayoutContext() {
+		return layoutContext;
+	}
+
+	public void setLayoutContext(LayoutContext layoutContext) {
+		this.layoutContext = layoutContext;
+	}
+
+	public Document getDocument() {
+		return document;
+	}
+
+	public void setDocument(Document document) {
+		this.document = document;
+	}
+	
+    /**
+     * Gets the visible rectangle of the frame, taking rotation into
+     * consideration. The result of this method is the rectangular area
+     * of the unrotated frame that will be visible when the frame gets
+     * rotated.
+     * 
+     * @param visibleLayoutDocRect
+     * 			The visible area of the layout document
+     * @param frame
+     * 			The bounding box of this frame
+     * @return
+     * 			the rectangular area of the unrotated frame that will be
+     * visible when the frame gets rotated, measured in screen coordinates  
+     */
+    protected Rectangle2D getVisibleRect(Rectangle2D visibleLayoutDocRect, Rectangle2D frame) {
+    	if (Math.abs(getRotation())>0.00001d) { // non-zero rotation
+    		Area area = new Area(frame);
+    		AffineTransform at = new AffineTransform();
+    		at.rotate(Math.toRadians(getRotation()), frame.getCenterX(), frame.getCenterY());
+    		Area rotatedArea = area.createTransformedArea(at);
+    		Area visibleArea = new Area(visibleLayoutDocRect);
+    		// this is the visible rectangle of the rotated fframeview in layout coordinates
+    		visibleArea.intersect(rotatedArea);
+    		if (visibleArea.isEmpty()) {
+    			return null;
+    		}
+    		// now we need to calculate the corresponding visible area of the fframeview before rotating,
+    		// in order to know which area of the non-rotated fframeview must be drawn
+    		try {
+	    		Area nonRotatedVisibleArea = visibleArea.createTransformedArea(at.createInverse());
+	    		Rectangle2D nonRotatedVisibleBounds = nonRotatedVisibleArea.getBounds2D();
+	    		return nonRotatedVisibleBounds;
+			} catch (NoninvertibleTransformException e) {
+				LoggerFactory.getLogger(FFrame.class).error(e.getMessage(), e);
+				return null;
+			}
+    	}
+    	else {
+    		Rectangle2D.Double visibleArea = new Rectangle2D.Double();
+    		Rectangle2D.intersect(visibleLayoutDocRect, frame, visibleArea);
+    		if (visibleArea.isEmpty()) {
+    			return null;
+    		}
+    		return visibleArea;
+    	}
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTableFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTableFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameTableFactory.java	(revision 590)
@@ -0,0 +1,62 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameTable.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameTableFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameTable table = new FFrameTable();
+        table.setFrameFactory(this);
+        return table;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameTable.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameTable");
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameEditableVertex.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameEditableVertex.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameEditableVertex.java	(revision 590)
@@ -0,0 +1,47 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+
+public interface IFFrameEditableVertex {
+
+    void startEditing();
+
+    void stopEditing();
+
+    boolean isEditing();
+
+    void pointPressed(Point2D point);
+
+    void pointReleased(Point2D point, GeometryAdapter geom);
+
+    void pointDragged(Point2D point);
+
+    void paint(Graphics2D g, AffineTransform at);
+
+    GeometryAdapter getGeometry();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasic.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasic.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasic.java	(revision 590)
@@ -0,0 +1,291 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Point2D.Double;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.PolygonAdapter;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.symbology.SymbologyLocator;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ISimpleLineSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame b�sica que contiene una FFrame de cualquier tipo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameBasic extends FFrame {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameBasic";
+
+    private static final String FFRAMEGRAPHICS_FIELD = "fframeGraphics";
+    private static final String FFRAME_FIELD = "fframe";
+
+    private FFrameGraphics fframeGraphics;
+    private IFFrame fframe;
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    public void setRectangle(Rectangle2D r) {
+        FFrameGraphics graphics =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+        PolygonAdapter pa = new PolygonAdapter();
+        pa.addPoint(new Point2D.Double(r.getX(), r.getY()));
+        pa.addPoint(new Point2D.Double(r.getMaxX(), r.getY()));
+        pa.addPoint(new Point2D.Double(r.getMaxX(), r.getMaxY()));
+        pa.addPoint(new Point2D.Double(r.getX(), r.getMaxY()));
+        pa.addPoint(new Point2D.Double(r.getX(), r.getY()));
+        pa.end();
+        graphics.setGeometryAdapter(pa);
+        graphics.setBoundBox(r);
+
+        IFillSymbol symbol =
+            (IFillSymbol) mapContextManager.getSymbolManager().createSymbol(
+                IFillSymbol.SYMBOL_NAME);
+        symbol.setFillColor(new Color(255, 255, 255, 0));
+        ISimpleLineSymbol blackOutline =
+            SymbologyLocator.getSymbologyManager().createSimpleLineSymbol();
+        blackOutline.setLineColor(Color.BLACK);
+        symbol.setOutline(blackOutline);
+        graphics.setSymbol(symbol);
+        graphics.setType(Geometry.TYPES.CURVE);
+        setFframeGraphics(graphics);
+    }
+
+    public FFrameBasic() {
+
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        fframeGraphics.draw(g, at, rv, imgBase);
+        if (fframe != null) {
+            fframe.draw(g, at, rv, imgBase);
+        }
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "base") + num;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#print(java.awt.Graphics2D,
+     *      java.awt.geom.AffineTransform)
+     */
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes printingProperties) {
+        fframeGraphics.print(g, at, geom, printingProperties);
+        if (fframe != null) {
+            fframe.print(g, at, geom, printingProperties);
+        }
+    }
+
+    public IFFrame getFframe() {
+        return fframe;
+    }
+
+    public void setFframe(IFFrame fframe) {
+        this.fframe = fframe;
+    }
+
+    public FFrameGraphics getFframeGraphics() {
+        return fframeGraphics;
+    }
+
+    public void setFframeGraphics(FFrameGraphics fframeGraphics) {
+        this.fframeGraphics = fframeGraphics;
+    }
+
+    public void drawHandlers(Graphics2D g) {
+        fframeGraphics.drawHandlers(g);
+    }
+
+    public IFFrame clone() throws CloneNotSupportedException {
+        FFrameBasic basic = new FFrameBasic();
+        basic.setFframeGraphics((FFrameGraphics) fframeGraphics.clone());
+        if (fframe != null) {
+            basic.setFframe((IFFrame) fframe.clone());
+        }
+        return basic;
+    }
+
+    public boolean contains(Double p) {
+        return getFframeGraphics().contains(p);
+    }
+
+    public void drawDraft(Graphics2D g) {
+        super.drawDraft(g);
+    }
+
+    public void drawEmpty(Graphics2D g) {
+        super.drawEmpty(g);
+    }
+
+    public void drawSymbolTag(Graphics2D g) {
+        super.drawSymbolTag(g);
+    }
+
+    public java.awt.geom.Rectangle2D.Double getBoundBox() {
+        return getFframeGraphics().getBoundBox();
+    }
+
+    public java.awt.geom.Rectangle2D.Double getBoundingBox(AffineTransform at) {
+        return getFframeGraphics().getBoundingBox(at);
+    }
+
+    public int getContains(Double p) {
+        return getFframeGraphics().getContains(p);
+    }
+
+    public int getLevel() {
+        return super.getLevel();
+    }
+
+    public Rectangle2D getMovieRect(int difx, int dify) {
+        return fframeGraphics.getMovieRect(difx, dify);
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    public double getRotation() {
+        return super.getRotation();
+    }
+
+    public int getSelected() {
+        return fframeGraphics.getSelected();
+    }
+
+    public String getTag() {
+        return super.getTag();
+    }
+
+    public boolean intersects(Rectangle2D rv, Rectangle2D r) {
+        return super.intersects(rv, r);
+    }
+
+    public void setBoundBox(Rectangle2D r) {
+        if (getFframeGraphics() != null) {
+            getFframeGraphics().setBoundBox(r);
+        }
+        if (getFframe() != null) {
+            getFframe().setBoundBox(r);
+        }
+    }
+
+    public void setLevel(int l) {
+        super.setLevel(l);
+    }
+
+    public void setNum(int i) {
+        super.setNum(i);
+    }
+
+    public void setRotation(double rotation) {
+        super.setRotation(rotation);
+    }
+
+    public void setSelected(boolean b) {
+        fframeGraphics.setSelected(b);
+    }
+
+    public void setSelected(Point2D p, MouseEvent e) {
+        fframeGraphics.setSelected(p, e);
+    }
+
+    public void setTag(String s) {
+        super.setTag(s);
+    }
+
+    public void updateRect(Rectangle2D r, AffineTransform at) {
+        getFframeGraphics().updateRect(r, at);
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameBasic.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameBasic persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldObject(FFRAMEGRAPHICS_FIELD)
+                .setClassOfValue(FFrameGraphics.class).setMandatory(true);
+            definition.addDynFieldDouble(FFRAME_FIELD);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        fframeGraphics = (FFrameGraphics) state.get(FFRAMEGRAPHICS_FIELD);
+        fframe = (IFFrame) state.get(FFRAME_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(FFRAMEGRAPHICS_FIELD, fframeGraphics);
+        state.set(FFRAME_FIELD, fframe);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameText.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameText.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameText.java	(revision 590)
@@ -0,0 +1,793 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir un texto en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameText extends FFrame {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameText";
+
+    private static final String TEXT_FIELD = "text";
+    private static final String S_FIELD = "s";
+    private static final String ISFIXED_FIELD = "isFixed";
+    private static final String FONT_FIELD = "font";
+    private static final String POS_FIELD = "pos";
+    private static final String TEXTCOLOR_FIELD = "textColor";
+    private static final String TRANSITIONPIXELSMILIMETERS_FIELD =
+        "transicionPixelsMilimetros";
+    private static final String CELLPADDING_FIELD = "cellPadding";
+    private static final String FONTSIZE_FIELD = "fontSize";
+    private static final String FIXEDFONTSIZE_FIELD = "fixedFontSize";
+    private static final String SURROUNDED_FIELD = "surrounded";
+    private static final String HASTITLE_FIELD = "hasTitle";
+    private static final String TITLE_FIELD = "title";
+    private static final String TITLESIZE_FIELD = "titleSize";
+    private static final String FRAMEBORDERSIZE_FIELD = "frameBorderSize";
+    private static final String FRAMECOLOR_FIELD = "frameColor";
+    private static final String TITLECOLOR_FIELD = "titleColor";
+
+    /** Localizaci�n del texto. */
+    public static final int LEFT = 0;
+    public static final int CENTER = 1;
+    public static final int RIGTH = 2;
+    private ArrayList m_text = new ArrayList();
+    private boolean m_isFixed = false;
+    private int m_pos = LEFT;
+    private Color textColor = Color.BLACK;
+
+    // jaume
+    private boolean surrounded = false; // The text field is surrounded by a
+                                        // rectangle
+    private double cellPadding = 0; // The gap between the the text field and
+                                    // the surrounding rectangle
+    private boolean fixedFontSize = false; // The text field font size is
+                                           // constant fixed to the folio's size
+    private int fontSize; // Text field's font size
+    private boolean hasTitle; // The text field has title
+    private String title; // The text for the title
+    private int titleSize; // The title's font size
+    private double frameBorderSize = 0; // The surrounding rectangle's border
+                                        // size
+    private Color frameColor = Color.BLACK; // The surrounding rectangle's color
+    private Color titleColor = Color.BLACK; // The title's color
+    private Font m_f = null;
+    private boolean transicionPixelsMilimetros = true;
+
+    /**
+     * Crea un nuevo FFrameText.
+     */
+    public FFrameText() {
+        m_f = new Font("SansSerif", Font.PLAIN, 9);
+    }
+
+    /**
+     * Inserta la fuente del texto.
+     * 
+     * @param f
+     *            Fuente del texto.
+     */
+    public void setFont(Font f) {
+        m_f = f;
+    }
+
+    /**
+     * Devuelve el color del texto del FFrameText.
+     * 
+     * @return Color del texto.
+     */
+    public Color getTextColor() {
+        return textColor;
+    }
+
+    /**
+     * Obtiene el fixedFontSize
+     * 
+     * @return boolean
+     */
+    public boolean isFontSizeFixed() {
+        return fixedFontSize;
+    }
+
+    /**
+     * Establece fixedFontSize
+     * 
+     * @param fixedFontSize
+     */
+    public void setFixedFontSize(boolean fixedFontSize) {
+        this.fixedFontSize = fixedFontSize;
+    }
+
+    /**
+     * Obtiene el fontSize
+     * 
+     * @return int
+     */
+    public int getFontSize() {
+        return fontSize;
+    }
+
+    /**
+     * Establece fontSize
+     * 
+     * @param fontSize
+     */
+    public void setFontSize(int fontSize) {
+        this.fontSize = fontSize;
+    }
+
+    /**
+     * Obtiene el cellPadding
+     * 
+     * @return int
+     */
+    public double getCellPadding() {
+        return cellPadding;
+    }
+
+    /**
+     * Inserta el color del texto a escribir.
+     * 
+     * @param color
+     *            Color del texto.
+     */
+    public void setTextColor(Color color) {
+        textColor = color;
+    }
+
+    /**
+     * Devuelve la fuente del texto.
+     * 
+     * @return Fuente del texto.
+     */
+    public Font getFont() {
+        return new Font(m_f.getFontName(), m_f.getStyle(), 9);
+    }
+
+    /**
+     * Devuelve la posici�n izquierda, centro o derecha del texto.
+     * 
+     * @return Posici�n del texto.
+     */
+    public int getPos() {
+        return m_pos;
+    }
+
+    /**
+     * Pone la posici�n izquierda, centro o derecha del texto.
+     * 
+     * @param p
+     *            0=LEFT,1=CENTER,2=RIGTH.
+     */
+    public void setPos(int p) {
+        m_pos = p;
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada af�n.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        g.setColor(Color.BLACK);
+
+        Rectangle2D.Double rec = getBoundingBox(at);
+        Rectangle2D.Double raux = (Rectangle2D.Double) rec.clone();
+        g.rotate(Math.toRadians(getRotation()), raux.x + (raux.width / 2),
+            raux.y + (raux.height / 2));
+
+        int longmax = 1;
+
+        if (intersects(rv, raux)) { // comprueba que no cae fuera de la pantalla
+
+            if (m_text.isEmpty()) {
+                drawEmpty(g);
+            } else {
+                for (int i = 0; i < m_text.size(); i++) {
+                    if (m_text.get(i) == null) {
+                        m_text.set(i, "<NULL>");
+                    }
+                    String text = (String) m_text.get(i);
+                    if (text.length() > longmax) {
+                        longmax = text.length();
+                    }
+                }
+
+                FontRenderContext frc = g.getFontRenderContext();
+                int scaledFontSize;
+
+                // TODO myScale es la escala sobre la que se extraen todos los
+                // escalados. Esto
+                // funciona bien tal cual est� si la ratio de aspecto
+                // (alto/ancho) del folio es constante
+                // porque se toma como medidas el ancho del folio real y el
+                // ancho del folio en pantalla.
+                // No se que pasar� si la ratio cambia, por ejemplo si se usan
+                // USLetter en lugar de DIN A4
+                double myScale = at.getScaleX() * 0.0234; // FLayoutUtilities.fromSheetDistance(folio.getAncho(),at)/rv.getWidth();
+
+                // Distinguish when the font has fixed size or not
+                if (isFontSizeFixed()) {
+                    scaledFontSize = (int) (myScale * fontSize);
+                } else {
+                    scaledFontSize = ((int) (raux.width)) / longmax;
+
+                    if (scaledFontSize > (int) ((raux.height) / m_text.size())) {
+                        scaledFontSize = (int) ((raux.height) / m_text.size());
+                    }
+                }
+
+                if (m_f != null) {
+                    // Aqu� se ajusta a partir de las caracter�sticas de la
+                    // fuente, una nueva fuente con el tama�o ajustado.
+                    m_f =
+                        new Font(m_f.getFontName(), m_f.getStyle(),
+                            scaledFontSize);
+                } else {
+                    // Aqu� pasa cuando se abre el di�logo para seleccionar un
+                    // tipo de fuente y se cierra sin haber seleccionado
+                    // ninguna.
+                    m_f = new Font("SansSerif", Font.PLAIN, scaledFontSize);
+                }
+
+                // Draw the text title if it exists
+                if (hasTitle()) {
+                    int scaledTitleFontSize = (int) (myScale * titleSize);
+                    int gap = 3;
+
+                    if (isSurrounded()) {
+                        // Para evitar que el marco se pinte sobre el t�tulo
+                        gap +=
+                            (int) (FLayoutUtilities.fromSheetDistance(
+                                frameBorderSize, at) * myScale);
+                    }
+
+                    g.setColor(titleColor);
+
+                    Font titleFont =
+                        new Font(m_f.getFontName(), m_f.getStyle(),
+                            scaledTitleFontSize);
+
+                    if (!getTitle().equals("")) {
+                        TextLayout titleTextLayout =
+                            new TextLayout(getTitle(), titleFont, frc);
+                        titleTextLayout.draw(g, (float) raux.getX(),
+                            (float) (raux.getY() - (gap * myScale)));
+                    }
+                }
+
+                // Draw the frame involving the text if it exists
+                if (isSurrounded()) {
+                    g.setColor(frameColor);
+                    // g.drawRect((int) raux.x, (int) raux.y, (int) raux.width,
+                    // (int) raux.height);
+
+                    double scaledCellPadding =
+                        FLayoutUtilities.fromSheetDistance(cellPadding, at);
+                    double sizeBorder =
+                        FLayoutUtilities.fromSheetDistance(frameBorderSize, at);
+
+                    // if (sizeBorder > 1) {
+                    int bordermm = (int) (sizeBorder * 10);
+                    int scaledCellPaddingmm = (int) (scaledCellPadding * 10);
+                    // System.out.println("borderSize = " + bordermm);
+                    g.setStroke(new BasicStroke(bordermm));
+                    // int scaledBorderSize = (int) (sizeBorder * myScale);
+
+                    // for (int i = scaledBorderSize - 1; i > 0; i--)
+                    // g.drawRect((int) raux.x - i, (int) raux.y - i,
+                    // (int) raux.width + (2 * i),
+                    // (int) raux.height + (2 * i));
+                    g.drawRect((int) (raux.x + bordermm / 2 - 1), (int) (raux.y
+                        + bordermm / 2 - 1), (int) (raux.width - bordermm + 2),
+                        (int) (raux.height - bordermm + 2));
+                    g.setStroke(new BasicStroke(0));
+                    // }
+
+                    // Recalibro el rectangulo para establecer el �rea donde se
+                    // dibujan las fuentes
+                    // al �rea marcada con el rat�n menos la distancia al marco
+                    // especificada
+                    raux.setRect(raux.getX() + scaledCellPaddingmm + bordermm,
+                        raux.getY() + scaledCellPaddingmm + bordermm,
+                        raux.getWidth() - (scaledCellPaddingmm * 2) - bordermm
+                            * 2, raux.getHeight() - (scaledCellPaddingmm * 2)
+                            - bordermm * 2);
+
+                    if (raux.getWidth() <= 0 || raux.getHeight() <= 0) {
+                        // JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),PluginServices.getText(this,"too_large_border")+": "+bordermm+
+                        // " + "+scaledCellPaddingmm);
+                        g.setColor(Color.red);
+                        drawError(getBoundingBox(at), 15, g,
+                            PluginServices.getText(this, "too_large_border")
+                                + ": " + frameBorderSize + "cm + "
+                                + cellPadding + "cm");
+                        // g.rotate(Math.toRadians(-getRotation()),
+                        // raux.x + (raux.width / 2), raux.y + (raux.height /
+                        // 2));
+                        return;
+                    }
+                }
+
+                g.setColor(textColor);
+
+                drawText(raux, scaledFontSize, g);
+                g.rotate(Math.toRadians(-getRotation()), raux.x
+                    + (raux.width / 2), raux.y + (raux.height / 2));
+            }
+        }
+
+        raux = null;
+    }
+
+    private void drawError(Rectangle2D r, int sfs, Graphics2D g, String error) {
+        FontRenderContext frc = g.getFontRenderContext();
+        TextLayout textLayout = null;
+        m_f = new Font(m_f.getFontName(), m_f.getStyle(), sfs);
+        textLayout = new TextLayout(error, m_f, frc);
+        textLayout.draw(g, (float) r.getCenterX(), (float) (r.getCenterY()));
+
+    }
+
+    /**
+     * Dibuja el texto sobre el graphics con el tama�o adecuado.
+     * 
+     * @param r
+     *            Rect�ngulo sobre el que dibujar.
+     * @param sfs
+     *            Tama�o aproximado del texto.
+     * @param g
+     *            Graphics sobre el que dibujar el texto.
+     */
+    private void drawText(Rectangle2D r, int sfs, Graphics2D g) {
+        int minSFS = Integer.MAX_VALUE;
+        FontRenderContext frc = g.getFontRenderContext();
+        int ht = (int) (r.getHeight() / m_text.size());
+
+        if (isFontSizeFixed()) {
+            minSFS = sfs;
+        } else {
+            for (int i = 0; i < m_text.size(); i++) {
+                if (!((String) m_text.get(i)).equals("")
+                    && !((String) m_text.get(i)).equals("\n")) {
+                    TextLayout textaux =
+                        new TextLayout((String) m_text.get(i), m_f, frc);
+                    Rectangle2D txtBound = textaux.getBounds();
+                    double difW = txtBound.getWidth() / r.getWidth();
+                    double difH =
+                        (txtBound.getHeight() * m_text.size())
+                            / (r.getHeight());
+
+                    if (difW > difH) {
+                        if (minSFS > sfs) {
+                            minSFS = (int) (sfs / difW);
+                        }
+                    } else {
+                        if (minSFS > sfs) {
+                            minSFS = (int) (sfs / difH);
+                        }
+                    }
+                }
+            }
+        }
+
+        TextLayout textLayout = null;
+
+        for (int i = 0; i < m_text.size(); i++) {
+            if (!((String) m_text.get(i)).equals("")) {
+                m_f = new Font(m_f.getFontName(), m_f.getStyle(), minSFS);
+
+                textLayout = new TextLayout((String) m_text.get(i), m_f, frc);
+
+                Rectangle2D txtBound = textLayout.getBounds();
+                float difW = (float) (r.getWidth() - txtBound.getWidth());
+
+                switch (m_pos) {
+                case (LEFT):
+                    textLayout.draw(g, (float) r.getX(),
+                        (float) (r.getY() + (ht * (i + 0.8))));
+
+                    break;
+
+                case (CENTER):
+                    textLayout.draw(g, (float) r.getX() + (difW / 2),
+                        (float) (r.getY() + (ht * (i + 0.8))));
+
+                    break;
+
+                case (RIGTH):
+                    textLayout.draw(g, (float) r.getX() + difW,
+                        (float) (r.getY() + (ht * (i + 0.8)))); // - (ht /
+                                                                // 2))));
+
+                    break;
+                }
+            }
+        }
+    }
+
+    /*
+     * @see
+     * com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame#print(java
+     * .awt.Graphics2D,
+     * java.awt.geom.AffineTransform)
+     */
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes properties) {
+        draw(g, at, null, null);
+    }
+
+    /**
+     * Rellenar el texto que se quiere a�adir al Layout.
+     * 
+     * @param s
+     *            String a a�adir.
+     */
+    public void addText(String s) {
+        m_text.add(s);
+    }
+
+    /**
+     * Devuelve el ArrayList que contiene las l�neas de texto.
+     * 
+     * @return ArrayList.
+     */
+    public ArrayList getText() {
+        return m_text;
+    }
+
+    /**
+     * Seleccionar si se quiere un tama�o fijo o adecuado a la escala.
+     * 
+     * @param b
+     *            true si se quiere tama�o fijo.
+     */
+    public void setSizeFixed(boolean b) {
+        m_isFixed = b;
+    }
+
+    /**
+     * Devuelve si est� fijado el tama�o.
+     * 
+     * @return True si est� fijado el tama�o.
+     */
+    public boolean isSizeFixed() {
+        return m_isFixed;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "texto") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Sets FFrameText to draw an involving rectangle
+     * 
+     * @param b
+     */
+    public void setSurrounded(boolean b) {
+        surrounded = b;
+    }
+
+    /**
+     * True if the FFrameText is set to draw an involving rectangle, or false
+     * if not.
+     * 
+     * @return boolean
+     */
+    public boolean isSurrounded() {
+        return surrounded;
+    }
+
+    /**
+     * Sets the gap between the involving rectangle and the text
+     * 
+     * @param i
+     */
+    public void setCellPadding(double i) {
+        cellPadding = i;
+    }
+
+    /**
+     * Devuelve true si tiene un t�tulo.
+     * 
+     * @return
+     */
+    public boolean hasTitle() {
+        return hasTitle;
+    }
+
+    /**
+     * Devuelve un string con el t�tulo.
+     * 
+     * @return
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * Inserta true si tiene t�tulo
+     * 
+     * @param b
+     */
+    public void setHasTitle(boolean b) {
+        hasTitle = b;
+    }
+
+    /**
+     * Inserta un string con el t�tulo.
+     * 
+     * @param text
+     */
+    public void setTitle(String text) {
+        title = text;
+    }
+
+    /**
+     * Devuelve el tama�o del t�tulo.
+     * 
+     * @return
+     */
+    public int getTitleSize() {
+        return titleSize;
+    }
+
+    /**
+     * Inserta el tama�o del t�tulo.
+     * 
+     * @param size
+     *            DOCUMENT ME!
+     */
+    public void setTitleSize(int size) {
+        titleSize = size;
+    }
+
+    /**
+     * Inserta el tama�o del borde.
+     * 
+     * @param size
+     */
+    public void setFrameBorderSize(double size) {
+        frameBorderSize = size;
+    }
+
+    /**
+     * Devuelve el tama�o del borde.
+     * 
+     * @return
+     */
+    public double getFrameBorderSize() {
+        return frameBorderSize;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param frameColor
+     */
+    public void setFrameColor(Color frameColor) {
+        this.frameColor = frameColor;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param titleColor
+     *            DOCUMENT ME!
+     */
+    public void setTitleColor(Color titleColor) {
+        this.titleColor = titleColor;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public Color getFrameColor() {
+        return frameColor;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public Color getTitleColor() {
+        return titleColor;
+    }
+
+    /**
+     * Use this method if you want the text in the FFrameText to be removed.
+     */
+    public void clearText() {
+        m_text.clear();
+    }
+
+    public void initialize() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameText.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameText persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+
+            /*
+             * field 's' is Rectangle but stored as Rectangle2D
+             */
+            definition.addDynFieldObject(S_FIELD)
+                .setClassOfValue(Rectangle2D.class).setMandatory(true);
+            definition.addDynFieldList(TEXT_FIELD)
+                  .setClassOfItems(String.class).setMandatory(true);
+            definition.addDynFieldBoolean(ISFIXED_FIELD).setMandatory(true);
+            definition.addDynFieldObject(FONT_FIELD)
+                .setClassOfValue(Font.class).setMandatory(true);
+            definition.addDynFieldInt(POS_FIELD).setMandatory(true);
+            definition.addDynFieldObject(TEXTCOLOR_FIELD)
+                .setClassOfValue(Color.class).setMandatory(false);
+            definition.addDynFieldBoolean(TRANSITIONPIXELSMILIMETERS_FIELD)
+                .setMandatory(true);
+            definition.addDynFieldDouble(CELLPADDING_FIELD).setMandatory(false);
+            definition.addDynFieldInt(FONTSIZE_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(FIXEDFONTSIZE_FIELD).setMandatory(
+                false);
+            definition.addDynFieldBoolean(SURROUNDED_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(HASTITLE_FIELD).setMandatory(false);
+            definition.addDynFieldString(TITLE_FIELD).setMandatory(false);
+            definition.addDynFieldInt(TITLESIZE_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(FRAMEBORDERSIZE_FIELD).setMandatory(
+                false);
+            definition.addDynFieldObject(FRAMECOLOR_FIELD)
+                .setClassOfValue(Color.class).setMandatory(false);
+            definition.addDynFieldObject(TITLECOLOR_FIELD)
+                .setClassOfValue(Color.class).setMandatory(false);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        
+        /*
+         * field 's' is Rectangle but stored as Rectangle2D
+         */
+        Rectangle2D s_2d = (Rectangle2D) state.get(S_FIELD);
+        s = new Rectangle(
+            (int) s_2d.getX(),
+            (int) s_2d.getY(),
+            (int) s_2d.getWidth(),
+            (int) s_2d.getHeight());
+        
+        /*
+         * the text is an arraylist of strings
+         */
+        List text_list = state.getList(TEXT_FIELD);
+        for (int i=0; i<text_list.size(); i++) {
+            m_text.add((String) text_list.get(i));
+        }
+
+        m_isFixed = state.getBoolean(ISFIXED_FIELD);
+        m_f = (Font) state.get(FONT_FIELD);
+        m_pos = state.getInt(POS_FIELD);
+        textColor = (Color) state.get(TEXTCOLOR_FIELD);
+        transicionPixelsMilimetros =
+            state.getBoolean(TRANSITIONPIXELSMILIMETERS_FIELD);
+        cellPadding = state.getDouble(CELLPADDING_FIELD);
+        fontSize = state.getInt(FONTSIZE_FIELD);
+        fixedFontSize = state.getBoolean(FIXEDFONTSIZE_FIELD);
+        surrounded = state.getBoolean(SURROUNDED_FIELD);
+        hasTitle = state.getBoolean(HASTITLE_FIELD);
+        title = state.getString(TITLE_FIELD);
+        titleSize = state.getInt(TITLESIZE_FIELD);
+        frameBorderSize = state.getDouble(FRAMEBORDERSIZE_FIELD);
+        frameColor = (Color) state.get(FRAMECOLOR_FIELD);
+        titleColor = (Color) state.get(TITLECOLOR_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+
+        /*
+         * field 's' is Rectangle but stored as Rectangle2D
+         */
+        Rectangle2D s_2d = new Rectangle2D.Double(
+            s.x, s.y, s.width, s.height);
+        state.set(S_FIELD, s_2d);
+        
+        state.set(TEXT_FIELD, m_text);
+        state.set(ISFIXED_FIELD, m_isFixed);
+        state.set(FONT_FIELD, m_f);
+        state.set(POS_FIELD, m_pos);
+        state.set(TEXTCOLOR_FIELD, textColor);
+        state.set(TRANSITIONPIXELSMILIMETERS_FIELD, transicionPixelsMilimetros);
+        state.set(CELLPADDING_FIELD, cellPadding);
+        state.set(FONTSIZE_FIELD, fontSize);
+        state.set(FIXEDFONTSIZE_FIELD, fixedFontSize);
+        state.set(SURROUNDED_FIELD, surrounded);
+        state.set(HASTITLE_FIELD, hasTitle);
+        state.set(TITLE_FIELD, title);
+        state.set(TITLESIZE_FIELD, titleSize);
+        state.set(FRAMEBORDERSIZE_FIELD, frameBorderSize);
+        state.set(FRAMECOLOR_FIELD, frameColor);
+        state.set(TITLECOLOR_FIELD, titleColor);
+    }
+    
+    @Override
+    public Object clone() throws CloneNotSupportedException {
+    	FFrameText frame = (FFrameText) super.clone();
+    	m_text = (ArrayList) m_text.clone();
+    	return frame;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGrid.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGrid.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGrid.java	(revision 590)
@@ -0,0 +1,863 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.font.TextLayout;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.Geometry.TYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateGeometryException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.geom.primitive.Line;
+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.SymbolManager;
+import org.gvsig.gui.awt.text.RotatedTextUtils;
+import org.gvsig.math.intervals.IntervalUtils;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol;
+import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.locator.LocatorException;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir una cuadr�cula sobre una vista en el Layout.
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGrid extends AbstractFFrameViewDependence implements
+    IFFrameViewDependence {
+    private static final GeometryManager GEOMETRY_MANAGER = GeometryLocator.getGeometryManager();
+
+    private static final int OFFSET_IN_PIXELS = 5;
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameGrid";
+
+    private static final String SYMBOLLINE_FIELD = "symbolLine";
+    private static final String SYMBOLPOINT_FIELD = "symbolPoint";
+    private static final String FONT_FIELD = "font";
+    private static final String INTERVALX_FIELD = "intervalX";
+    private static final String INTERVALY_FIELD = "intervalY";
+    private static final String ISLINE_FIELD = "isLine";
+    private static final String FONTSYZE_FIELD = "fontsize";
+    private static final String TEXTCOLOR_FIELD = "textColor";
+    private static final String USE_NUM_DIVISIONS_FIELD = "useNumDivisions";
+    private static final String NUM_DIV_HORIZ_FIELD = "numDivHoriz";
+    private static final String NUM_DIV_VERT_FIELD = "numDivVret";
+    private static final String LABEL_FORMAT_FIELD = "labelFormat";
+    private static final String HORIZ_LABEL_ROTATION_FIELD = "horizLabelRotation";
+    private static final String VERT_LABEL_ROTATION_FIELD = "vertLabelRotation";
+    private static final String LABEL_ANCHOR = "LabelAnchor";
+
+
+    /**
+     * Use a fixed distance (intervalX and intervalY)
+     * to calculate the position of grid lines
+     */
+    public static final int FIXED_DISTANCE_MODE = 0;
+    /**
+     * Use a specific number of horizontal divisions in order
+     * to calculate the position of grid lines
+     */
+    public static final int NUM_DIVISIONS_HORIZ_MODE = 1;
+    /**
+     * Use a specific number of vertical divisions in order to calculate
+     * the position of grid lines
+     */
+    public static final int NUM_DIVISIONS_VERT_MODE = 2;
+
+    private double defaultInterval = 100000;
+    private Double intervalX = null;
+    private Double intervalY = null;
+
+    private Color textColor = Color.black;
+    private boolean isLine;
+    private int sizeFont = 8;
+	private int useNumDivisions = FIXED_DISTANCE_MODE;
+	private int numDivHoriz = 4;
+	private int numDivVert = 4;
+	private DecimalFormat labelFormat = new DecimalFormat("#0.00", DecimalFormatSymbols.getInstance());
+	private double horizLabelRotation = 0.0;
+	private double vertLabelRotation = 0.0;
+	/**
+	 * {@link RotatedTextUtils.ANCHOR_CENTER} or {@link RotatedTextUtils.ANCHOR_CORNER}
+	 */
+	private int labelAnchor = RotatedTextUtils.ANCHOR_CORNER;
+
+    // private boolean print=false;
+    private SymbolManager symbolManager = MapContextLocator.getSymbolManager();
+    private ILineSymbol symbolLine = (ILineSymbol) symbolManager
+        .createSymbol(ILineSymbol.SYMBOL_NAME);
+    private IMarkerSymbol symbolPoint = (IMarkerSymbol) symbolManager
+        .createSymbol(IMarkerSymbol.SYMBOL_NAME);
+    private Font font = new Font("Arial", Font.PLAIN, sizeFont);
+
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+    	try {
+    		Rectangle2D.Double r = getBoundingBox(at);
+    		Rectangle2D rView = fframeViewDependence.getBoundingBox(at);
+    		if (r==null || rView==null) {
+    			//extent may be null, for instance if no layer has been loaded on the view
+    			return;
+    		}
+    		ViewPort vp = (ViewPort) fframeViewDependence.getMapContext().getViewPort().clone();
+
+    		vp.setOffset(new Point2D.Double(rView.getMinX(), rView.getMinY()));
+    		vp.setImageSize(new Dimension((int)Math.round(rView.getWidth()), (int)Math.round(rView.getHeight())));
+    		vp.refreshExtent();
+
+    		Envelope envelope = vp.getAdjustedEnvelope();
+    		AffineTransform mapTransform = vp.getAffineTransform();
+    		updateIntervals(envelope);
+    		double intervalX = getIntervalX();
+    		double intervalY = getIntervalY();
+
+    		g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y + (r.height / 2));
+
+    		double minX = envelope.getMinimum(0);
+    		double minY = envelope.getMinimum(1);
+    		double maxX = envelope.getMaximum(0);
+    		double maxY = envelope.getMaximum(1);
+
+    		// init point, in map coordinates
+    		double initPointGridWCX = Math.ceil(minX / intervalX)*intervalX;
+    		double initPointGridWCY = Math.ceil(minY / intervalY)*intervalY;
+
+    		ISymbol symbolForMargins = null;
+    		if (isLine){
+    			symbolForMargins = symbolLine;
+    		}else{
+    			try {
+    				symbolForMargins = (ISymbol)symbolLine.clone();
+    				symbolForMargins.setColor(symbolPoint.getColor());
+    			} catch (CloneNotSupportedException e) {
+    				LOG.error("Symbol desn't support the clone method", e);
+    			}
+    		}
+
+    		//Draw the box
+    		drawBox(rView, g, symbolForMargins);
+
+    		//Draw the margins
+    		double myScale = at.getScaleX() * 0.0234; // FIXME: 0.0234?? Should this depend on output resolution?
+    		int scaledFontSize = (int) (myScale * sizeFont);
+    		Font font = new Font(
+    				this.font.getFamily(),
+    				this.font.getStyle(),
+    				scaledFontSize);
+
+    		drawLabels(rView,
+    				initPointGridWCX,
+    				initPointGridWCY,
+    				maxX,
+    				maxY,
+    				intervalX,
+    				intervalY,
+    				mapTransform,
+    				g,
+    				font,
+    				symbolForMargins);
+
+    		//Draw the lines or the points
+    		if (isLine) {
+    			drawLines(rView,
+        				initPointGridWCX,
+        				initPointGridWCY,
+        				maxX,
+        				maxY,
+        				intervalX,
+        				intervalY,
+        				mapTransform,
+        				g);
+    		} else {
+    			drawPoints(initPointGridWCX,
+				initPointGridWCY,
+				maxX,
+				maxY,
+				intervalX,
+				intervalY,
+				mapTransform,
+				g);
+    		}
+
+    		g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+    				+ (r.height / 2));
+    	} catch (CloneNotSupportedException e1) {}
+    }
+
+    /**
+     * Draw the grid as point symbols
+     *
+     * @param minGridX The starting grid point on the x axis, in map coordinates
+     * @param minGridY The starting grid point on the y axis, in map coordinates
+     * @param maxGridX The maximum map point on the x axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param maxGridY The maximum map point on the y axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param intervalGridX The grid interval on the x axis, in map coordinates
+     * @param intervalGridY The grid interval on the y axis, in map coordinates
+     * @param mapTransform Transforms map coordinates to screen coordinates
+     * @param g The graphics object to draw on
+     */
+    private void drawPoints(
+    		double minGridX,
+    		double minGridY,
+    		double maxGridX,
+    		double maxGridY,
+    		double intervalGridX,
+    		double intervalGridY,
+			AffineTransform mapTransform,
+    		Graphics2D g) {
+
+        Point2D currentPoint = new Point2D.Double(minGridX, minGridY);
+        Point2D screenPoint = new Point2D.Double();
+        while (currentPoint.getX() < maxGridX) {
+        	while (currentPoint.getY() < maxGridY) {
+        		mapTransform.transform(currentPoint, screenPoint);
+                drawPoint(g, screenPoint);
+            	currentPoint.setLocation(currentPoint.getX(), currentPoint.getY()+intervalGridY);
+        	}
+        	currentPoint.setLocation(currentPoint.getX()+intervalGridX, minGridY);
+        }
+    }
+
+    /**
+     * Draw the grid as line symbols
+     *
+     * @param rView The rectangle of the view, on screen coordinates
+     * @param minGridX The starting grid point on the x axis, in map coordinates
+     * @param minGridY The starting grid point on the y axis, in map coordinates
+     * @param maxGridX The maximum map point on the x axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param maxGridY The maximum map point on the y axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param intervalGridX The grid interval on the x axis, in map coordinates
+     * @param intervalGridY The grid interval on the y axis, in map coordinates
+     * @param mapTransform Transforms map coordinates to screen coordinates
+     * @param g The graphics object to draw on
+     */
+    private void drawLines(Rectangle2D rView,
+    		double minMapX,
+    		double minMapY,
+    		double maxMapX,
+    		double maxMapY,
+    		double intervalMapX,
+    		double intervalMapY,
+			AffineTransform mapTransform,
+    		Graphics2D g) {
+        double minX = rView.getMinX();
+        double maxX = rView.getMaxX();
+        double minY = rView.getMinY();
+        double maxY = rView.getMaxY();
+        double xMap = minMapX;
+        double yMap = minMapY;
+
+        // transform to screen coordinates
+        Point2D currentPoint = new Point2D.Double(minMapX, minMapY);
+    	// transform from map coordinates to screen (pixels) coordinates
+        mapTransform.transform(currentPoint, currentPoint);
+
+        //Draw the vertical lines
+        while (xMap < maxMapX) {
+                drawLine(currentPoint.getX(), minY, currentPoint.getX(), maxY, g, symbolLine);
+        	xMap = xMap + intervalMapX;
+        	currentPoint.setLocation(xMap, minMapY);
+        	// from map coordinates to screen (pixels)
+        	mapTransform.transform(currentPoint, currentPoint);
+        }
+        //Draw the horizontal lines
+        while (yMap < maxMapY) {
+        	drawLine(minX, currentPoint.getY(), maxX , currentPoint.getY(), g, symbolLine);
+        	yMap = yMap + intervalMapY;
+        	currentPoint.setLocation(minMapX, yMap);
+        	// from map coordinates to screen (pixels)
+        	mapTransform.transform(currentPoint, currentPoint);
+        }
+    }
+
+    /**
+     * Draws the labels and the tick marks of labels
+     *
+     * @param rView The rectangle of the view, on screen coordinates
+     * @param minGridX The starting grid point on the x axis, in map coordinates
+     * @param minGridY The starting grid point on the y axis, in map coordinates
+     * @param maxGridX The maximum map point on the x axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param maxGridY The maximum map point on the y axis, in map coordinates.
+     * It may be bigger than the maximum grid point
+     * @param intervalGridX The grid interval on the x axis, in map coordinates
+     * @param intervalGridY The grid interval on the y axis, in map coordinates
+     * @param mapTransform Transforms map coordinates to screen coordinates
+     * @param g The graphics object to draw on
+     * @param font
+     * @param symbolForMargins
+     */
+    private void drawLabels(Rectangle2D rView,
+    		double minGridX,
+    		double minGridY,
+    		double maxGridX,
+    		double maxGridY,
+    		double intervalGridX,
+    		double intervalGridY,
+    		AffineTransform mapTransform,
+    		Graphics2D g,
+    		Font font,
+    		ISymbol
+    		symbolForMargins) {
+    	AffineTransform defaultAt = g.getTransform();
+
+    	double minX = rView.getMinX();
+    	double maxX = rView.getMaxX();
+    	double minY = rView.getMinY();
+    	double maxY = rView.getMaxY();
+    	double xMap = minGridX;
+    	double yMap = minGridY;
+
+    	// transform to screen coordinates
+    	Point2D initGridPx = new Point2D.Double(minGridX, minGridY);
+    	mapTransform.transform(initGridPx, initGridPx);
+
+    	double xPx = initGridPx.getX();
+
+    	double angle = RotatedTextUtils.normalizeAngle(Math.toRadians(getVertLabelRotation()));
+    	int anchor = getLabelAnchor();
+    	// Draw vertical ticks and labels
+    	while (xMap < maxGridX) {
+    		// bottom tick
+    		drawLine(xPx, maxY + OFFSET_IN_PIXELS, xPx , maxY, g, symbolForMargins);
+    		// top tick
+    		drawLine(xPx, minY, xPx, minY - OFFSET_IN_PIXELS, g, symbolForMargins);
+
+    		g.rotate(angle);
+    		g.setColor(textColor);
+
+    		// bottom label
+    		Point2D p1 = new Point2D.Double(xPx, maxY+OFFSET_IN_PIXELS); // bottom
+    		TextLayout textaux = new TextLayout(this.labelFormat.format(xMap), font, g.getFontRenderContext());
+    		Point2D rotatedP1 = RotatedTextUtils.getPosition(p1, textaux, angle, RotatedTextUtils.PLACEMENT_BOTTOM, anchor);
+    		textaux.draw(g, (int) (rotatedP1.getX()), (int) rotatedP1.getY());
+
+    		// top label
+    		Point2D p2 = new Point2D.Double(xPx, minY-OFFSET_IN_PIXELS);
+    		Point2D rotatedP2 = RotatedTextUtils.getPosition(p2, textaux, angle, RotatedTextUtils.PLACEMENT_TOP, anchor);
+    		textaux.draw(g, (int) (rotatedP2.getX()),(int) rotatedP2.getY());
+    		g.setTransform(defaultAt);
+
+
+    		xMap = xMap + intervalGridX;
+
+    		initGridPx.setLocation(xMap, minGridY);
+    		mapTransform.transform(initGridPx, initGridPx);
+    		xPx = initGridPx.getX();
+    	}
+    	double yPx = initGridPx.getY();
+    	angle = RotatedTextUtils.normalizeAngle(Math.toRadians(getHorizLabelRotation()));
+    	// horizontal ticks and labels
+    	while (yMap < maxGridY) {
+
+    		// left tick
+    		drawLine(minX - OFFSET_IN_PIXELS, yPx, minX , yPx, g, symbolForMargins);
+    		// right tick
+    		drawLine(maxX, yPx, maxX + OFFSET_IN_PIXELS, yPx, g, symbolForMargins);
+
+    		g.rotate(angle);
+    		g.setColor(textColor);
+    		TextLayout textaux = new TextLayout(this.labelFormat.format(yMap), font, g.getFontRenderContext());
+
+    		// left label
+    		Point2D p1 = new Point2D.Double(minX-OFFSET_IN_PIXELS, yPx);
+    		Point2D rotatedP1 = RotatedTextUtils.getPosition(p1, textaux, angle, RotatedTextUtils.PLACEMENT_LEFT, anchor);
+    		textaux.draw(g, (int) (rotatedP1.getX()), (int) rotatedP1.getY());
+    		// right label
+    		Point2D p2 = new Point2D.Double(maxX+OFFSET_IN_PIXELS, yPx);
+    		Point2D rotatedP2 = RotatedTextUtils.getPosition(p2, textaux, angle, RotatedTextUtils.PLACEMENT_RIGHT, anchor);
+    		textaux.draw(g, (int) (rotatedP2.getX()),(int) rotatedP2.getY());
+    		g.setTransform(defaultAt);
+    		yMap = yMap + intervalGridY;
+
+    		initGridPx.setLocation(minGridX, yMap);
+    		mapTransform.transform(initGridPx, initGridPx);
+    		yPx = initGridPx.getY();
+    	}
+    }
+
+    private void drawBox(Rectangle2D mapRectangle, Graphics2D g, ISymbol symbol){
+        try {
+        	// FIXME: We are adding 1 extra pixel for correct adjustment when exporting to PDF.
+        	// However, this creates 1 blank pixel on the right side when drawing on screen.
+        	// Probably this is caused by some rounding.
+        	// Separating the implementation of print and draw methods should help, too.
+            Line line = (Line) GEOMETRY_MANAGER.create(TYPES.LINE, SUBTYPES.GEOM2D);
+            line.addVertex(GEOMETRY_MANAGER.createPoint(mapRectangle.getMinX()-1, mapRectangle.getMinY()-1, SUBTYPES.GEOM2D));
+            line.addVertex(GEOMETRY_MANAGER.createPoint(mapRectangle.getMinX()-1, mapRectangle.getMaxY()+1, SUBTYPES.GEOM2D));
+            line.addVertex(GEOMETRY_MANAGER.createPoint(mapRectangle.getMaxX()+1, mapRectangle.getMaxY()+1, SUBTYPES.GEOM2D));
+            line.addVertex(GEOMETRY_MANAGER.createPoint(mapRectangle.getMaxX()+1, mapRectangle.getMinY()-1, SUBTYPES.GEOM2D));
+            line.addVertex(GEOMETRY_MANAGER.createPoint(mapRectangle.getMinX()-1, mapRectangle.getMinY()-1, SUBTYPES.GEOM2D));
+            symbol.draw(g, null, line, null, null);
+        } catch (CreateGeometryException e) {
+            LOG.error("Error drawing the box", e);
+        }
+    }
+
+    /**
+     * Draws a point using the configured symbol
+     *
+     * @param g The graphics object to draw on
+     * @param point Point to draw, in map coordinates
+     * @param mapTransform Transforms from map coordinates to screen coordinates
+     */
+    private void drawPoint(Graphics2D g, Point2D point){
+        try {
+            Geometry geom =
+                createPoint((int) point.getX(), (int) point.getY());
+            symbolPoint.draw(g, null, geom, null, null);
+        }  catch (LocatorException e) {
+            LOG.error("Error drawing the grid", e);
+        } catch (CreateGeometryException e) {
+            LOG.error("Error drawing the grid", e);
+        }
+    }
+
+    private void drawLine(double startX, double startY, double endX, double endY, Graphics2D g, ISymbol symbolLine){
+        try {
+            Geometry geom =
+                createLine((int) startX, (int)startY, (int) endX, (int) endY);
+            symbolLine.draw(g, null, geom, null, null);
+        } catch (LocatorException e) {
+            LOG.error("Error drawing the grid", e);
+        } catch (CreateGeometryException e) {
+            LOG.error("Error drawing the grid", e);
+        }
+    }
+
+    private Geometry createLine(int i, int j, int k, int l)
+        throws LocatorException, CreateGeometryException {
+        Line curve = (Line)GEOMETRY_MANAGER.create(Geometry.TYPES.LINE, SUBTYPES.GEOM2D);
+        curve.addVertex(GEOMETRY_MANAGER.createPoint(i, j, SUBTYPES.GEOM2D));
+        curve.addVertex(GEOMETRY_MANAGER.createPoint(k, l, SUBTYPES.GEOM2D));
+        return curve;
+    }
+
+    private Geometry createPoint(int i, int j) throws LocatorException,
+        CreateGeometryException {
+        return GeometryLocator.getGeometryManager().createPoint(i, j,
+            SUBTYPES.GEOM2D);
+    }
+
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "cuadricula") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    public void setFFrameDependence(IFFrame f) {
+        super.setFFrameDependence(f);
+        fframeViewDependence.refresh();
+    }
+
+    public void setIntervalX(double d) {
+        intervalX = d;
+    }
+
+    public void setIntervalY(double d) {
+        intervalY = d;
+    }
+
+    public double getIntervalX() {
+    	if (intervalX!=null) {
+    		return intervalX;
+    	}
+    	intervalX = intervalY = getReasonableInterval();
+    	return intervalX;
+    }
+
+    private double getReasonableInterval() {
+    	if (fframeViewDependence!=null
+    			&& fframeViewDependence.getMapContext()!=null
+    			&& fframeViewDependence.getMapContext().getViewPort().getAdjustedEnvelope()!=null) {
+    		Envelope env = fframeViewDependence.getMapContext().getViewPort().getAdjustedEnvelope();
+    		return IntervalUtils.roundIntervalDivision(env.getLength(0), 5);
+    	}
+    	return defaultInterval;
+    }
+
+
+    public double getIntervalY() {
+    	if (intervalX!=null) {
+    		return intervalX;
+    	}
+    	intervalX = intervalY = new Double(getReasonableInterval());
+    	return intervalY;
+    }
+
+    public void setTextColor(Color textcolor) {
+        textColor = textcolor;
+    }
+
+    public void setIsLine(boolean b) {
+        isLine = b;
+    }
+
+    public boolean isLine() {
+        return isLine;
+    }
+
+    public Color getFontColor() {
+        return textColor;
+    }
+
+    public int getSizeFont() {
+        return sizeFont;
+    }
+
+    public void setSizeFont(int sizeFont) {
+        this.sizeFont = sizeFont;
+    }
+
+    public Rectangle2D.Double getBoundingBox(AffineTransform at) {
+        if ((fframeViewDependence == null) ||  (fframeViewDependence.getMapContext() == null)){
+            return super.getBoundingBox(at);
+        }
+        Rectangle2D.Double r = fframeViewDependence.getBoundingBox(at);
+        Envelope extent =
+            fframeViewDependence.getMapContext().getViewPort()
+                .getAdjustedEnvelope();
+        if (extent==null) {
+        	//extent may be null, for instance if no layer has been loaded on the view
+        	return null;
+        }
+        double extentX = extent.getMaximum(0);
+        double extentY = extent.getMaximum(1);
+        int lengthX = String.valueOf((long) extentX).length();
+        double myScale = at.getScaleX() * 0.0234;
+        int scaledFontSize = (int) (myScale * sizeFont);
+        int pixelsX = (int) (lengthX * scaledFontSize * 0.7);
+        int lengthY = String.valueOf((long) extentY).length();
+        int pixelsY = (lengthY * scaledFontSize);
+        return new Rectangle2D.Double(r.getMinX() - pixelsX, r.getMinY() - pixelsY,
+                r.getWidth() + pixelsX * 2, r.getHeight() + pixelsY * 2);
+    }
+
+    public Rectangle2D getMovieRect(int difx, int dify) {
+        return this.getBoundingBox(null);
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        if (fframeViewDependence.equals(fant)) {
+            fframeViewDependence = (FFrameView) fnew;
+            fframeViewDependence.refresh();
+        }
+    }
+
+    public void drawHandlers(Graphics2D g) {
+        g.setColor(Color.gray);
+        super.drawHandlers(g);
+        g.setColor(Color.black);
+    }
+
+    public Rectangle2D getLastMoveRect() {
+        return getBoundBox();
+    }
+
+    public ISymbol getSymbolLine() {
+        return symbolLine;
+    }
+
+    public void setSymbolLine(ISymbol symbolLine) {
+        this.symbolLine = (ILineSymbol) symbolLine;
+    }
+
+    public ISymbol getSymbolPoint() {
+        return symbolPoint;
+    }
+
+    public void setSymbolPoint(ISymbol symbolPoint) {
+        this.symbolPoint = (IMarkerSymbol) symbolPoint;
+    }
+
+    public Font getFont() {
+        return font;
+    }
+
+    public void setFont(Font m_font) {
+        this.font = m_font;
+    }
+
+    public int getFontSize() {
+        return font.getSize();
+    }
+
+    /**
+     * Defines whether a number of divisions is used to calculate the
+     * location of grid lines,
+     * or a distance (intervalX and intervalY) is used to
+     * calculate them.
+     *
+     * @param useNumDivisions One of {@link #FIXED_DISTANCE_MODE},
+     * {@link #NUM_DIVISIONS_HORIZ_MODE} or {@link #NUM_DIVISIONS_HORIZ_MODE}.
+     * @return
+     */
+    public void setUseNumDivisions(int mode) {
+    	this.useNumDivisions  = mode;
+    }
+
+    protected void updateIntervals() {
+    	if (fframeViewDependence.getMapContext()!=null
+    			&& fframeViewDependence.getMapContext().getViewPort()!=null) {
+    		Envelope env = fframeViewDependence.getMapContext().getViewPort().getAdjustedEnvelope();
+    		updateIntervals(env);
+    	}
+    }
+
+    protected void updateIntervals(Envelope env) {
+    	if (useNumDivisions==NUM_DIVISIONS_HORIZ_MODE) {
+    		double division = IntervalUtils.roundIntervalDivision(env.getLength(0), numDivHoriz);
+    		intervalX = division;
+    		intervalY = division;
+    	}
+    	else if (useNumDivisions==NUM_DIVISIONS_VERT_MODE) {
+    		double division = IntervalUtils.roundIntervalDivision(env.getLength(1), numDivVert);
+    		intervalX = division;
+    		intervalY = division;
+    	}
+    }
+
+    /**
+     * Returns true if a number of divisions is used to calculate the
+     * location of grid lines,
+     * or false if a distance (intervalX and intervalY) is used to
+     * calculate them.
+     *
+     * @return  One of {@link #FIXED_DISTANCE_MODE},
+     * {@link #NUM_DIVISIONS_HORIZ_MODE} or {@link #NUM_DIVISIONS_VERT_MODE}.
+     */
+    public int getUseNumDivisions() {
+    	return this.useNumDivisions;
+    }
+
+    public void setNumDivisionsHoriz(int nx) {
+    	this.numDivHoriz = nx;
+    }
+
+    public void setNumDivisionsVert(int ny) {
+    	this.numDivVert = ny;
+    }
+
+    public int getNumDivisionsHoriz() {
+    	return this.numDivHoriz;
+    }
+
+    public int getNumDivisionsVert() {
+    	return this.numDivVert;
+    }
+
+    public void setLabelFormat(DecimalFormat f) {
+    	this.labelFormat  = f;
+    }
+
+    public DecimalFormat  getLabelFormat() {
+    	return this.labelFormat;
+    }
+
+    /**
+     * Sets the rotation of the labels corresponding to horizontal lines
+     *
+     * @param labelRotation Label rotation, measured in arc degrees
+     */
+    public void setHorizLabelRotation(double labelRotation) {
+    	this.horizLabelRotation  = labelRotation;
+    }
+
+    /**
+     * Sets the rotation of the labels corresponding to vertical lines
+     *
+     * @param labelRotation Label rotation, measured in arc degrees
+     */
+    public void setVertLabelRotation(double labelRotation) {
+    	this.vertLabelRotation  = labelRotation;
+    }
+
+    /**
+     * Gets the rotation of the labels corresponding to horizontal lines
+     *
+     * @param labelRotation Label rotation, measured in arc degrees
+     */
+    public double getHorizLabelRotation() {
+    	return this.horizLabelRotation;
+    }
+
+    /**
+     * Defines the alignment of the grid label compared with the
+     * associated grid tick
+     *
+     * @param anchor {@link RotatedTextUtils.ANCHOR_CORNER} or
+     *   {@link RotatedTextUtils.ANCHOR_CENTER}
+     */
+    public int getLabelAnchor() {
+    	return this.labelAnchor;
+    }
+
+    /**
+     * Gets the alignment of the grid labels. ANCHOR_CORNER aligns
+     * the corner of the label with the grid tick, while ANCHOR_CENTER
+     * aligns the label center with the grid tick.
+     *
+     * @param anchor {@link RotatedTextUtils.ANCHOR_CORNER} or
+     *   {@link RotatedTextUtils.ANCHOR_CENTER}
+     */
+    public void setLabelAnchor(int anchor) {
+    	// ensure a coherent value
+    	if (anchor==RotatedTextUtils.ANCHOR_CENTER) {
+    		this.labelAnchor = anchor;
+    	}
+    	else {
+    		this.labelAnchor = RotatedTextUtils.ANCHOR_CORNER;
+    	}
+    }
+
+    /**
+     * Gets the rotation of the labels corresponding to vertical lines
+     *
+     * @param labelRotation Label rotation, measured in arc degrees
+     */
+    public double getVertLabelRotation() {
+    	return this.vertLabelRotation;
+    }
+
+    public void print(Graphics2D g, AffineTransform at, Geometry shape,
+        PrintAttributes properties) {
+        draw(g, at, null, null);
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameGrid.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameGrid persistence definition", null, null);
+
+            definition
+                .extend(manager
+                    .getDefinition(AbstractFFrameViewDependence.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldObject(SYMBOLLINE_FIELD)
+                .setClassOfValue(ILineSymbol.class).setMandatory(true);
+            definition.addDynFieldObject(SYMBOLPOINT_FIELD)
+                .setClassOfValue(IMarkerSymbol.class).setMandatory(true);
+            definition.addDynFieldObject(FONT_FIELD)
+                .setClassOfValue(Font.class).setMandatory(true);
+            definition.addDynFieldDouble(INTERVALX_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(INTERVALY_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(ISLINE_FIELD).setMandatory(true);
+            definition.addDynFieldInt(FONTSYZE_FIELD).setMandatory(true);
+            definition.addDynFieldObject(TEXTCOLOR_FIELD)
+                .setClassOfValue(Color.class).setMandatory(true);
+            definition.addDynFieldInt(USE_NUM_DIVISIONS_FIELD).setMandatory(false);
+            definition.addDynFieldInt(NUM_DIV_HORIZ_FIELD).setMandatory(false);
+            definition.addDynFieldInt(NUM_DIV_VERT_FIELD).setMandatory(false);
+            definition.addDynFieldObject(LABEL_FORMAT_FIELD)
+            .setClassOfValue(DecimalFormat.class).setMandatory(false);
+            definition.addDynFieldDouble(VERT_LABEL_ROTATION_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(HORIZ_LABEL_ROTATION_FIELD).setMandatory(false);
+            definition.addDynFieldInt(LABEL_ANCHOR).setMandatory(false);
+        }
+    }
+
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        symbolLine = (ILineSymbol) state.get(SYMBOLLINE_FIELD);
+        symbolPoint = (IMarkerSymbol) state.get(SYMBOLPOINT_FIELD);
+        font = (Font) state.get(FONT_FIELD);
+        intervalX = (Double) state.get(INTERVALX_FIELD);
+        intervalY = (Double) state.get(INTERVALY_FIELD);
+        isLine = state.getBoolean(ISLINE_FIELD);
+        sizeFont = state.getInt(FONTSYZE_FIELD);
+        textColor = (Color) state.get(TEXTCOLOR_FIELD);
+        if (state.hasValue(USE_NUM_DIVISIONS_FIELD)) {
+        	useNumDivisions = state.getInt(USE_NUM_DIVISIONS_FIELD);
+        }
+        if (state.hasValue(NUM_DIV_HORIZ_FIELD)) {
+        	numDivHoriz = state.getInt(NUM_DIV_HORIZ_FIELD);
+        }
+        if (state.hasValue(NUM_DIV_VERT_FIELD)) {
+        	numDivVert = state.getInt(NUM_DIV_VERT_FIELD);
+        }
+        if (state.hasValue(LABEL_FORMAT_FIELD)) {
+        	labelFormat = (DecimalFormat) state.get(LABEL_FORMAT_FIELD);
+        }
+        if (state.hasValue(VERT_LABEL_ROTATION_FIELD)) {
+        	vertLabelRotation = state.getDouble(VERT_LABEL_ROTATION_FIELD);
+        }
+        if (state.hasValue(HORIZ_LABEL_ROTATION_FIELD)) {
+        	horizLabelRotation = state.getDouble(HORIZ_LABEL_ROTATION_FIELD);
+        }
+        if (state.hasValue(LABEL_ANCHOR)) {
+        	labelAnchor = state.getInt(LABEL_ANCHOR);
+        }
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(SYMBOLLINE_FIELD, symbolLine);
+        state.set(SYMBOLPOINT_FIELD, symbolPoint);
+        state.set(FONT_FIELD, font);
+        state.set(INTERVALX_FIELD, intervalX);
+        state.set(INTERVALY_FIELD, intervalY);
+        state.set(ISLINE_FIELD, isLine);
+        state.set(FONTSYZE_FIELD, sizeFont);
+        state.set(TEXTCOLOR_FIELD, textColor);
+        state.set(USE_NUM_DIVISIONS_FIELD, useNumDivisions);
+        state.set(NUM_DIV_HORIZ_FIELD, numDivHoriz);
+        state.set(NUM_DIV_VERT_FIELD, numDivVert);
+        state.set(LABEL_FORMAT_FIELD, labelFormat);
+        state.set(VERT_LABEL_ROTATION_FIELD, vertLabelRotation);
+        state.set(HORIZ_LABEL_ROTATION_FIELD, horizLabelRotation);
+        state.set(LABEL_ANCHOR, labelAnchor);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegendFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegendFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegendFactory.java	(revision 590)
@@ -0,0 +1,62 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameLegend.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameLegendFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameLegend legend = new FFrameLegend();
+        legend.setFrameFactory(this);
+        return legend;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameLegend.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameLegend");
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameGroupSelectable.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameGroupSelectable.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameGroupSelectable.java	(revision 590)
@@ -0,0 +1,49 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+public interface IFFrameGroupSelectable {
+
+    public Rectangle2D getMovieRectGroup(int difX, int difY);
+
+    public int getContainsGroup(Point2D p);
+
+    public void drawHandlersGroup(Graphics2D g);
+
+    public boolean containsGroup(Point2D p);
+
+    public void setSelectedGroup(Point2D p, MouseEvent e);
+
+    public int getSelectedGroup();
+
+    public void selectFFrame(boolean b);
+
+    public IFFrame joinFFrame();
+
+    public Image getMapCursorGroup(Point2D p);
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseProject.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseProject.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseProject.java	(revision 590)
@@ -0,0 +1,41 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.app.project.Project;
+
+/**
+ * Interfaz que da soporte a los fframes que necesiten conocer al proyecto al
+ * que pertenecen.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface IFFrameUseProject {
+
+    /**
+     * Inserta el Project.
+     * 
+     * @param project
+     *            Project.
+     */
+    public void setProject(Project project);
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegend.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegend.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameLegend.java	(revision 590)
@@ -0,0 +1,802 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.fmap.mapcontext.layers.operations.Classifiable;
+import org.gvsig.fmap.mapcontext.layers.operations.IHasImageLegend;
+import org.gvsig.fmap.mapcontext.rendering.legend.IClassifiedLegend;
+import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ITextSymbol;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolDrawingException;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir una leyenda en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameLegend extends AbstractFFrameViewDependence implements
+    IFFrameViewDependence {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameLegend";
+
+    private static final String NUMLAYERS_FIELD = "numLayers";
+    private static final String MAX_FIELD = "max";
+    private static final String QUALITY_FIELD = "quality";
+    private static final String VIEWING_FIELD = "viewing";
+    private static final String FONT_FIELD = "font";
+    private static final String NAMELAYERS_FIELD = "nameLayers";
+    private static final String AREVISIBLE_FIELD = "areVisible";
+
+    private static final int PRESENTACION = 0;
+    private static final int BORRADOR = 1;
+    private int m_quality = 0;
+    private int m_viewing = 0;
+    private Font m_font = new Font("SansSerif", Font.PLAIN, 9);
+    private int m_max;
+    private int m_numLayers;
+    private FLayers layers = null;
+    private List<String> nameLayers = new ArrayList<String>();
+    private List<Boolean> areVisible = new ArrayList<Boolean>();
+    private PrintAttributes properties;
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    public FFrameLegend() {
+
+    }
+
+    /**
+     * Rellena la calidad que se quiere aplicar.
+     * 
+     * @param q
+     *            entero que representa la calidad a aplicar.
+     */
+    public void setQuality(int q) {
+        m_quality = q;
+    }
+
+    /**
+     * Devuelve un entero que representa la calidad que est� seleccionada.
+     * 
+     * @return tipo de calidad selccionada.
+     */
+    public int getQuality() {
+        return m_quality;
+    }
+
+    /**
+     * Devuelve un entero que representa la forma en que se actualiza la vista.
+     * 
+     * @return forma que se actualiza la vista.
+     */
+    public int getViewing() {
+        return m_viewing;
+    }
+
+    /**
+     * Rellena la forma de actualizar la vista.
+     * 
+     * @param v
+     *            entero que representa la forma de actualizar la vista.
+     */
+    public void setViewing(int v) {
+        m_viewing = v;
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double re = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), re.x + (re.width / 2), re.y
+            + (re.height / 2));
+
+        if ((fframeViewDependence != null)
+            && (fframeViewDependence.getMapContext() != null)) {
+            layers = fframeViewDependence.getMapContext().getLayers();
+        }
+
+        m_max = 0;
+        m_numLayers = 0;
+
+        if (intersects(rv, re)) {
+            if (layers == null) { // Si no se ha seleccionado ninguna vista para
+                                  // crear la leyenda.
+                drawEmpty(g);
+            } else
+                if ((rv == null) || (getQuality() == PRESENTACION)) {
+                    m_numLayers = getSizeNum(layers);
+
+                    double h = re.getHeight() / m_numLayers;
+                    int[] n = new int[1];
+                    n[0] = 0;
+                    drawLegendOrToFFrame(g, re, h, layers, n, null);
+                } else
+                    if (getQuality() == BORRADOR) { // Si se selecciona la
+                                                    // calidad BORRADOR.
+                        drawDraft(g);
+                    }
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), re.x + (re.width / 2), re.y
+            + (re.height / 2));
+    }
+
+    /**
+     * Dibuja el nombre u s�mbolo de la capa que se pasa como par�metro.
+     * 
+     * @param g
+     *            Graphics2D sobre el que se dibuja.
+     * @param re
+     *            Rectangle a rellenar.
+     * @param h
+     *            Altura en pixels.
+     * @param layers
+     *            Capa a representar.
+     * @param n
+     *            �ndice de la capa a dibujar.
+     * @throws ReadDriverException
+     *             TODO
+     */
+    private void drawLegendOrToFFrame(Graphics2D g, Rectangle2D re, double h,
+        FLayers layers, int[] n, LayoutContext layoutContext) {
+        float sizefont = 0;
+
+        if ((re.getHeight() / m_numLayers) < (re.getWidth() / (m_max * 0.7))) {
+            sizefont = (float) (re.getHeight() / m_numLayers);
+        } else {
+            sizefont = (float) (re.getWidth() / (m_max * 0.7));
+        }
+
+        int l = 0;
+        // ////Se recorren los layers dibujando el s�mbolo y su nombre sobre el
+        // graphics
+        for (int i = layers.getLayersCount() - 1; i >= 0; i--) {
+            FLayer layer = layers.getLayer(i);
+            boolean b = false;
+
+            if (nameLayers.size() > l
+                && nameLayers.get(l).equals(layer.getName())) {
+                b = ((Boolean) areVisible.get(l)).booleanValue();
+            } else {
+                b = layer.isVisible();
+            }
+            l++;
+            if (b) {
+                if (layer instanceof FLayers) {
+                    n[0]++;
+
+                    double dX = 0;
+                    double dY = n[0] * h;
+                    double xl = (re.getX() + dX);
+                    double yl = (re.getY() + dY);
+                    if (layoutContext != null) {
+                        toFFrameText(layoutContext, layer.getName(), re, sizefont,
+                            (xl - (re.getWidth() / 5)), yl, h);
+                    } else {
+                        drawNameLegend(g, layer.getName(), re, sizefont,
+                            (xl - (re.getWidth() / 5)), yl, h);
+                    }
+                    n[0]++;
+                    drawLegendOrToFFrame(g, re, h, (FLayers) layer, n, layoutContext);
+                    n[0]++;
+                } else {
+                    
+                    if (layer instanceof Classifiable) {
+                        Classifiable cla_layer = (Classifiable) layer;
+                        ILegend cla_legend = cla_layer.getLegend();
+                        
+                        if (cla_legend instanceof IHasImageLegend) {
+                            
+                            // =============================================
+                            // classifiable AND image legend
+
+                            Image image =
+                                ((IHasImageLegend) cla_legend).getImageLegend();
+                            String path =
+                                ((IHasImageLegend) cla_legend).getPathImage();
+                            
+                            if (image != null) {
+                                FFramePicture picture =
+                                    (FFramePicture) layoutManager
+                                        .createFrame(FFramePicture.PERSISTENCE_DEFINITION_NAME);
+
+                                BufferedImage bi =
+                                    new BufferedImage(image.getWidth(null),
+                                        image.getHeight(null),
+                                        BufferedImage.TYPE_INT_ARGB);
+                                Graphics2D biContext = bi.createGraphics();
+                                biContext.drawImage(image, 0, 0, null);
+                                picture.setImage(bi);
+                                double dY = n[0] * h;
+                                Rectangle2D rectImage =
+                                    new Rectangle2D.Double(re.getX(), re.getY()
+                                        + dY, re.getWidth(), h);
+                                if (path != null && layoutContext != null) {
+                                    picture
+                                        .setBoundBox(FLayoutUtilities
+                                            .toSheetRect(rectImage,
+                                                layoutContext.getAT()));
+                                    picture.setPath(path);
+                                    layoutContext.addFFrame(picture, false, true);
+                                } else {
+                                    picture.setBoundBox(FLayoutUtilities
+                                        .toSheetRect(rectImage,
+                                            new AffineTransform()));
+                                    picture.draw(g, new AffineTransform(), re,
+                                        bi);
+                                }
+                            } else {
+                                // ========================
+                                // no image was returned
+                                double dX = 0;
+                                double dY = n[0] * h;
+                                double xl = (re.getX() + dX);
+                                double yl = (re.getY() + dY);
+                                if (layoutContext != null) {
+                                    toFFrameText(layoutContext, layer.getName(), re, sizefont, xl, yl, h);
+                                } else {
+                                    drawNameLegend(g, layer.getName(), re, sizefont, xl, yl, h);
+                                }
+                                // ========================
+                            }
+                            n[0]++;
+                            
+                            // classifiable AND image legend (end)
+                            // =============================================
+
+                        } else {
+                            
+                            // =============================================
+                            // classifiable and NOT image legend
+
+                            if (cla_legend instanceof IClassifiedLegend) {
+
+                                IClassifiedLegend cli = (IClassifiedLegend) cla_legend;
+                                double dX = 0;
+                                double dY = n[0] * h;
+
+                                double xl = (re.getX() + dX);
+                                double yl = (re.getY() + dY);
+                                if (layoutContext != null) {
+                                    toFFrameText(layoutContext, layer.getName(), re,
+                                        sizefont, (xl - (re.getWidth() / 5)), yl, h);
+                                } else {
+                                    drawNameLegend(g, layer.getName(), re,
+                                        sizefont, (xl - (re.getWidth() / 5)), yl, h);
+                                }
+                                n[0]++;
+                                String[] descriptions = cli.getDescriptions();
+                                ISymbol[] symbols = cli.getSymbols();
+                                for (int j = 0; j < descriptions.length; j++) {
+                                    dY = n[0] * h;
+
+                                    xl = (re.getX() + dX);
+                                    yl = (re.getY() + dY);
+
+                                    String s = descriptions[j];
+                                    if (layoutContext != null) {
+                                        toFFrameText(layoutContext, s, re, sizefont, xl,
+                                            yl, h);
+                                    } else {
+                                        drawNameLegend(g, s, re, sizefont, xl, yl,
+                                            h);
+                                    }
+                                    ISymbol fs2d = symbols[j];
+                                    if (layoutContext != null) {
+                                        try {
+                                            toFFrameSymbol(layoutContext, re, xl, yl,
+                                                fs2d, sizefont, h,
+                                                cla_layer.getShapeType());
+                                        } catch (ReadException e) {
+                                            e.printStackTrace();
+                                        }
+                                    } else {
+                                        drawSymbolLegend(g, re, xl, yl, fs2d,
+                                            sizefont, h);
+                                    }
+                                    n[0]++;
+                                }
+                            } else {
+                                double dX = 0;
+                                double dY = n[0] * h;
+
+                                double xl = (re.getX() + dX);
+                                double yl = (re.getY() + dY);
+                                if (layoutContext != null) {
+                                    toFFrameText(layoutContext, layer.getName(), re,
+                                        sizefont, xl, yl, h);
+                                } else {
+                                    drawNameLegend(g, layer.getName(), re,
+                                        sizefont, xl, yl, h);
+                                }
+                                // TO DO: CAMBIAR TO_DO ESTO PARA QUE ACEPTE ISYMBOL
+                                // TODO: comprovar que no es trenca res
+                                if (cla_legend != null) {
+                                    ISymbol fs2d = cla_legend.getDefaultSymbol();
+
+                                    if (layoutContext != null) {
+                                        try {
+                                            toFFrameSymbol(layoutContext, re, xl, yl,
+                                                fs2d, sizefont, h,
+                                                cla_layer.getShapeType());
+                                        } catch (ReadException e) {
+                                            e.printStackTrace();
+                                        }
+                                    } else {
+                                        drawSymbolLegend(g, re, xl, yl, fs2d,
+                                            sizefont, h);
+                                    }
+                                }
+                                n[0]++;
+                            }
+
+                            // classifiable and NOT image legend (end)
+                            // =============================================
+
+                        }
+                        
+                    } else {
+                        // ===================================
+                        // NOT classifiable
+                        double dX = 0;
+                        double dY = n[0] * h;
+                        double xl = (re.getX() + dX);
+                        double yl = (re.getY() + dY);
+                        if (layoutContext != null) {
+                            toFFrameText(layoutContext, layer.getName(), re, sizefont, xl, yl, h);
+                        } else {
+                            drawNameLegend(g, layer.getName(), re, sizefont, xl, yl, h);
+                        }
+                        n[0]++;
+                        // NOT classifiable (end)
+                        // ===================================
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Dibuja sobre el graphics el nombre de la capa que se pasa como
+     * par�metro.
+     * 
+     * @param g
+     *            Graphics2D sobre el que dibujar.
+     * @param name
+     *            Nombre de la capa.
+     * @param re
+     *            Rect�ngulo a ocupar por el nombre.
+     * @param sizefont
+     *            tama�o de la fuente.
+     * @param x
+     *            Posici�n X.
+     * @param y
+     *            Posici�n Y.
+     * @param h
+     *            Altura.
+     */
+    private void drawNameLegend(Graphics2D g, String name, Rectangle2D re,
+        float sizefont, double x, double y, double h) {
+        Font f = getFont(sizefont);
+        g.setFont(f);
+        g.setColor(Color.black);
+        if (name != null)
+            g.drawString(name, (float) (x + (re.getWidth() / 4)),
+                (float) (y + (h / 2)));
+    }
+
+    private Font getFont(float sizefont) {
+        Font f = getFont();
+        return new Font(f.getName(), f.getStyle(), (int) sizefont);
+    }
+
+    /**
+     * A�ade al Layout un nuevo FFrameText a partir de los par�metros de
+     * entrada.
+     * 
+     * @param layoutContext
+     *            Layout sobre el que se crea el nuevo FFrame.
+     * @param name
+     *            Texto.
+     * @param sizefont
+     *            tama�o de la fuente.
+     * @param x
+     *            Posici�n X.
+     * @param y
+     *            Posici�n Y.
+     * @param h
+     *            Altura.
+     * @param wT
+     *            Rect�ngulo del FFrame.
+     * @param hT
+     *            DOCUMENT ME!
+     */
+    private void toFFrameText(LayoutContext layoutContext, String name,
+        Rectangle2D re, float sizefont, double x, double y, double h) {
+        // Font f = getFont(sizefont);
+        Rectangle2D rAux =
+            new Rectangle2D.Double(x + re.getWidth() / 4, ((y + (h / 2)) - h),
+                re.getWidth() - re.getWidth() / 4, h);
+        FFrameText text =
+            (FFrameText) layoutManager
+                .createFrame(FFrameText.PERSISTENCE_DEFINITION_NAME);
+
+        text.setFixedFontSize(true);
+        double myScale = layoutContext.getAT().getScaleX() * 0.0234;
+        text.setFontSize((int) (sizefont / myScale));
+        text.setBoundBox(FLayoutUtilities.toSheetRect(rAux, layoutContext.getAT()));
+        text.addText(name);
+        layoutContext.addFFrame(text, false, true);
+    }
+
+    /**
+     * Dibuja sobre el Graphics2D el s�mbolo.
+     * 
+     * @param g
+     *            Graphics2D.
+     * @param re
+     *            Rect�ngulo a cubrir por el s�mbolo.
+     * @param x
+     *            Posici�n X.
+     * @param y
+     *            Posici�n Y.
+     * @param symbol2d
+     *            S�mbolo a dibujar.
+     * @param sizefont
+     *            Tama�o de la fuente.
+     * @param h
+     *            Altura.
+     */
+    private void drawSymbolLegend(Graphics2D g, Rectangle2D re, double x,
+        double y, ISymbol symbol2d, float sizefont, double h) {
+        double pW = 5;
+        double wl = (re.getWidth() / pW);
+        double haux = (sizefont * 0.7);
+        Font font = null;
+
+        if (symbol2d instanceof ITextSymbol
+            && (font = ((ITextSymbol) symbol2d).getFont()) != null) {
+            ((ITextSymbol) symbol2d).setFont(new Font(font.getFontName(), font
+                .getStyle(), (int) (wl / 6)));
+        }
+
+        Rectangle rectangle =
+            new Rectangle((int) x, (int) ((y + (h / 2)) - haux), (int) wl,
+                (int) haux);
+        try {
+            symbol2d.drawInsideRectangle(g, new AffineTransform(), rectangle,
+                properties);
+        } catch (SymbolDrawingException e) {
+            if (e.getType() == SymbolDrawingException.UNSUPPORTED_SET_OF_SETTINGS) {
+                try {
+                    mapContextManager
+                        .getSymbolManager()
+                        .getWarningSymbol(
+                            SymbolDrawingException.STR_UNSUPPORTED_SET_OF_SETTINGS,
+                            symbol2d.getDescription(),
+                            SymbolDrawingException.UNSUPPORTED_SET_OF_SETTINGS)
+                        .drawInsideRectangle(g, null, rectangle, null);
+                } catch (SymbolDrawingException e1) {
+                    // IMPOSSIBLE TO REACH THIS
+                }
+            } else {
+                // should be unreachable code
+                throw new Error(PluginServices.getText(this,
+                    "symbol_shapetype_mismatch"));
+            }
+        }
+    }
+
+    /**
+     * A�ade al Layout un nuevo FFrameSymbol.
+     * 
+     * @param layoutContext
+     *            Layout sobe el que se a�ade el FFrame.
+     * @param x
+     *            Posici�n X.
+     * @param y
+     *            Posici�n Y.
+     * @param fs2d
+     *            S�mbolo a a�adir.
+     * @param h
+     *            Altura.
+     * @param shapeType
+     * @param wT
+     *            Rect�ngulo del FFrame.
+     * @param hT
+     *            tama�o de la fuente.
+     */
+    private void toFFrameSymbol(LayoutContext layoutContext, Rectangle2D re, double x,
+        double y, ISymbol fs2d, float sizefont, double h, int shapeType) {
+        double pW = 5;
+        double wl = (re.getWidth() / pW);
+        double haux = (sizefont * 0.7);
+        Font font = null;
+        if (fs2d instanceof ITextSymbol
+            && (font = ((ITextSymbol) fs2d).getFont()) != null) {
+            ((ITextSymbol) fs2d).setFont(new Font(font.getFontName(), font
+                .getStyle(), (int) (wl / 6)));
+        }
+
+        Rectangle2D rAux3 =
+            new Rectangle2D.Double(x, ((y + (h / 2)) - haux), wl, haux);
+        FFrameSymbol symbol =
+            (FFrameSymbol) layoutManager
+                .createFrame(FFrameSymbol.PERSISTENCE_DEFINITION_NAME);
+
+        // symbol.setLayout(getLayout());
+        symbol.setBoundBox(FLayoutUtilities.toSheetRect(rAux3, layoutContext.getAT()));
+        symbol.setSymbol(fs2d);
+        symbol.setShapeType(shapeType);
+        layoutContext.addFFrame(symbol, false, true);
+    }
+
+    /**
+     * Devuelve el n�mero total de capas incluyendo las subcapas.
+     * 
+     * @param layers
+     *            Capa a contar.
+     * 
+     * @return N�mero de capas y subcapas.
+     */
+    private int getSizeNum(FLayers layers) {
+        int n = 0;
+
+        // ///Aqu� hay que calcular cuantos layers y sublayers hay, para saber
+        // que distancias dejar entre uno y otro.
+        // /y adem�s el tama�o de cada uno de ellos para saber que anchura
+        // dejar.
+        int l = 0;
+        for (int i = layers.getLayersCount() - 1; i >= 0; i--) {
+            FLayer layer = layers.getLayer(i);
+            boolean b = false;
+            if (nameLayers.size() > l
+                && nameLayers.get(l).equals(layer.getName())) {
+                b = ((Boolean) areVisible.get(l)).booleanValue();
+            } else {
+                b = layer.isVisible();
+            }
+            l++;
+            if (b) {
+                // if (layer.isVisible()) {
+                if (layer.getName().length() > m_max) {
+                    m_max = layer.getName().length();
+                }
+
+                if (layer instanceof FLayers) {
+                    // n++;
+                    n = n + 3;
+                    n += getSizeNum((FLayers) layer); // m_numLayers +=
+                                                      // getNumInLyrGroup((FLayers)
+                                                      // layer);
+                } else {
+                    if (layer instanceof Classifiable) {
+                        Classifiable cO = (Classifiable) layer;
+                        n++;
+
+                        if (cO.getLegend() instanceof IClassifiedLegend) {// &&
+                                                                          // !(cO
+                                                                          // instanceof
+                                                                          // FLyrAnnotation))
+                                                                          // {
+                            IClassifiedLegend cli =
+                                (IClassifiedLegend) cO.getLegend();
+
+                            for (int j = 0; j < cli.getValues().length; j++) {
+                                String s = cli.getDescriptions()[j];
+
+                                if (s != null && s.length() > m_max) {
+                                    m_max = s.length();
+                                }
+
+                                n++;
+                            }
+                        }
+                    } else {
+                        String s = layer.getName();
+
+                        if (s != null && s.length() > m_max) {
+                            m_max = s.length();
+                        }
+
+                        n++;
+                    }
+
+                }
+            }
+        }
+
+        return n;
+    }
+
+    /**
+     * Transforma el FFrameLegend en diferentes FFrameSymbol y FFrameText.
+     * 
+     * @param layout
+     *            Layout sobre el que a�adir los FFrame nuevos y sobre el
+     *            que elimnar el FFrameLegend anterior.
+     */
+    public void toFFrames(LayoutContext layout) {
+        Rectangle2D rectangle = getBoundingBox(null);
+        double h = rectangle.getHeight() / m_numLayers;
+        FLayers lays = layers;
+
+        // layout.getEFS().startComplexCommand();
+        // toFFrames(layout, lays, rectangle, r.getWidth(), r.getHeight(), h,
+        // 0);
+        int[] n = new int[1];
+        n[0] = 0;
+        drawLegendOrToFFrame(null, rectangle, h, lays, n, layout);
+        layout.delFFrame(this);
+
+        // /layout.getFFrames().remove(this);
+        // layout.getEFS().endComplexCommand();
+    }
+
+    /**
+     * Rellena la fuente a utilizar al dibujar los String sobre el graphics.
+     * 
+     * @param f
+     *            Font.
+     */
+    public void setFont(Font f) {
+        m_font = f;
+    }
+
+    /**
+     * Devuelve la fuente que esta utilizando.
+     * 
+     * @return Font.
+     */
+    public Font getFont() {
+        if (m_font != null) {
+            return new Font(m_font.getName(), m_font.getStyle(), 9);
+        }
+        return new Font("SansSerif", Font.PLAIN, 9);
+    }
+
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "leyenda") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes properties) {
+        this.properties = properties;
+        draw(g, at, null, null);
+        this.properties = null;
+    }
+
+    public void initialize() {
+
+    }
+
+    public void setNameLayers(List nameLayers) {
+        this.nameLayers = nameLayers;
+    }
+
+    public void setAreVisible(List areVisible) {
+        this.areVisible = areVisible;
+    }
+
+    public List getNameLayers() {
+        return nameLayers;
+    }
+
+    public List getAreVisible() {
+        return areVisible;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameLegend.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameLegend persistence definition", null, null);
+
+            definition
+                .extend(manager
+                    .getDefinition(AbstractFFrameViewDependence.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldInt(NUMLAYERS_FIELD).setMandatory(true);
+            definition.addDynFieldInt(MAX_FIELD).setMandatory(true);
+            definition.addDynFieldInt(QUALITY_FIELD).setMandatory(true);
+            definition.addDynFieldInt(VIEWING_FIELD).setMandatory(true);
+            definition.addDynFieldObject(FONT_FIELD)
+                .setClassOfValue(Font.class).setMandatory(true);
+            definition.addDynFieldList(NAMELAYERS_FIELD)
+                .setClassOfItems(String.class).setMandatory(true);
+            definition.addDynFieldList(AREVISIBLE_FIELD)
+                .setClassOfItems(Boolean.class).setMandatory(true);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        m_numLayers = state.getInt(NUMLAYERS_FIELD);
+        m_max = state.getInt(MAX_FIELD);
+        m_quality = state.getInt(QUALITY_FIELD);
+        m_viewing = state.getInt(VIEWING_FIELD);
+        m_font = (Font) state.get(FONT_FIELD);
+        nameLayers = (List<String>) state.getList(NAMELAYERS_FIELD);
+        areVisible = (List<Boolean>) state.getList(AREVISIBLE_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(NUMLAYERS_FIELD, m_numLayers);
+        state.set(MAX_FIELD, m_max);
+        state.set(QUALITY_FIELD, m_quality);
+        state.set(VIEWING_FIELD, m_viewing);
+        state.set(FONT_FIELD, getFont());
+        state.set(NAMELAYERS_FIELD, nameLayers);
+        state.set(AREVISIBLE_FIELD, areVisible);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameViewDependence.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameViewDependence.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameViewDependence.java	(revision 590)
@@ -0,0 +1,57 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+/**
+ * Interfaz para incluir m�todos necesarios para tener una dependencia con un
+ * fframe.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface IFFrameViewDependence {
+
+    /**
+     * Inserta una FFrame de la cual se necesita por tener una dependencia.
+     * 
+     * @param f
+     *            FFrame de la que se depende.
+     */
+    public void setFFrameDependence(IFFrame f);
+
+    /**
+     * Refresca las dependencias de la IFFrame teniendo en cuenta la dependencia
+     * anterior.
+     * 
+     * @param fant
+     *            Dependencia anterior.
+     * @param fnew
+     *            Nueva dependencia.
+     */
+    public void refreshDependence(IFFrame fant, IFFrame fnew);
+
+    /**
+     * Devuelve el FFrame utilizado.
+     * 
+     * @return FFrame utilizado.
+     */
+    public IFFrame[] getFFrameDependence();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FrameFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FrameFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FrameFactory.java	(revision 590)
@@ -0,0 +1,89 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.util.Map;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.tools.extensionpoint.ExtensionBuilder;
+
+/**
+ * Factory of FFrame.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public abstract class FrameFactory implements ExtensionBuilder {
+
+    /**
+     * Returns the name of FFrame.
+     * 
+     * @return Name of fframe.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "frame");
+    }
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public abstract IFFrame createFrame();
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public abstract String getRegisterName();
+
+    /**
+     * Create a FrameLayoutFactory.
+     * 
+     * @return FrameLayoutFactory.
+     */
+    public Object create() {
+        return this;
+    }
+
+    /**
+     * Create a FrameLayoutFactory.
+     * 
+     * @param args
+     * 
+     * @return FrameLayoutFactory.
+     */
+    public Object create(Object[] args) {
+        return this;
+    }
+
+    /**
+     * Create a FrameLayoutFactory.
+     * 
+     * @param args
+     * 
+     * @return FrameLayoutFactory.
+     */
+    public Object create(Map args) {
+        return this;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameViewFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameViewFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameViewFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameView.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameViewFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameView view = new FFrameView();
+        view.setFrameFactory(this);
+        return view;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameView.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameView");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBarFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBarFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBarFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameScaleBar.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameScaleBarFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameScaleBar scale = new FFrameScaleBar();
+        scale.setFrameFactory(this);
+        return scale;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameScaleBar.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameScaleBar");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbol.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbol.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameSymbol.java	(revision 590)
@@ -0,0 +1,179 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolDrawingException;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir una S�mbolo en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameSymbol extends FFrameGraphics {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameSymbol";
+
+    private PrintAttributes properties;
+
+    private MapContextManager mapContextManager = MapContextLocator
+        .getMapContextManager();
+
+    /**
+     * Crea un nuevo FFrameSymbol.
+     */
+    public FFrameSymbol() {
+        super();
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double re = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), re.x + (re.width / 2), re.y
+            + (re.height / 2));
+
+        if (intersects(rv, re)) {
+            AffineTransform mT2 = new AffineTransform();
+            mT2.setToIdentity();
+
+            Rectangle rec =
+                new Rectangle((int) re.x, (int) re.y, (int) (re.width),
+                    (int) (re.height));
+
+            try {
+                getFSymbol().drawInsideRectangle(g, mT2, rec, properties);
+            } catch (SymbolDrawingException e) {
+                if (e.getType() == SymbolDrawingException.UNSUPPORTED_SET_OF_SETTINGS) {
+                    try {
+                        mapContextManager
+                            .getSymbolManager()
+                            .getWarningSymbol(
+                                SymbolDrawingException.STR_UNSUPPORTED_SET_OF_SETTINGS,
+                                getFSymbol().getDescription(),
+                                SymbolDrawingException.UNSUPPORTED_SET_OF_SETTINGS)
+                            .drawInsideRectangle(g, null, rec, null);
+                    } catch (SymbolDrawingException e1) {
+                        // IMPOSSIBLE TO REACH THIS
+                    }
+                } else {
+                    // should be unreachable code
+                    throw new Error(PluginServices.getText(this,
+                        "symbol_shapetype_mismatch"));
+                }
+            }
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), re.x + (re.width / 2), re.y
+            + (re.height / 2));
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "simbolo") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#print(java.awt.Graphics2D,
+     *      java.awt.geom.AffineTransform)
+     */
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes printingProperties) {
+        this.properties = printingProperties;
+        draw(g, at, null, null);
+        this.properties = null;
+    }
+
+    public void initialize() {
+
+    }
+
+    public void setBoundBox(Rectangle2D r) {
+        m_BoundBox.setRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());
+    }
+
+    public void setShapeType(int shapeType) {
+        setType(shapeType);
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameSymbol.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameSymbol persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrameGraphics.PERSISTENCE_DEFINITION_NAME));
+        }
+
+        GeometryAdapter.registerPersistent();
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListViewModel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListViewModel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/ListViewModel.java	(revision 590)
@@ -0,0 +1,128 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.AbstractListModel;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.extension.ProjectExtension;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.gui.beans.Messages;
+
+/**
+ * Modelo de la Lista de vistas a seleccionar.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class ListViewModel extends AbstractListModel {
+
+    /**
+	 * 
+	 */
+    private static final long serialVersionUID = -2062563925205197480L;
+    protected List<Object> views = new ArrayList<Object>();
+    
+    public static final String CREATE_NEW_VIEW_OBJECT = "["+Messages.getText("Create_new_view")+"]";
+
+    /**
+     * Adds project's views to its list. Returns true if some
+     * views where excluded because they have layers in editing mode
+     * 
+     * @return
+     */
+    public boolean addViews() {
+        ProjectExtension projectextension =
+            (ProjectExtension) PluginServices
+                .getExtension(org.gvsig.app.extension.ProjectExtension.class);
+        
+        List<Document> list =
+            projectextension.getProject().getDocuments(ViewManager.TYPENAME);
+        
+        int before = list.size();
+        list = FLayoutUtilities.removeEditing(list);
+        int after = list.size();
+        
+        views.addAll(list);
+        
+        return (before > after);
+    }
+    
+    /**
+     * Adds an special "Create new view" element to the list of available
+     * views. This special element flags the creation of a new view
+     * 
+     */
+    public void addCreateNewViewObj() {
+    	if (!views.contains(CREATE_NEW_VIEW_OBJECT)) {
+    		views.add(CREATE_NEW_VIEW_OBJECT);
+    	}
+    }
+
+    /**
+     * Add all fframeviews into a list.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public void addViews(LayoutPanel l) {
+        int num = 0;
+        l.getLayoutContext().updateFFrames();
+        IFFrame[] fframes = l.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame f = fframes[i];
+
+            if (f instanceof FFrameView) {
+                views.add(f);
+                ((FFrameView) f).setNum(num);
+                num++;
+            }
+        }
+    }
+
+    /**
+     * @see javax.swing.ListModel#getSize()
+     */
+    public int getSize() {
+        return views.size();
+    }
+
+    /**
+     * @see javax.swing.ListModel#getElementAt(int)
+     */
+    public Object getElementAt(int index) {
+        return views.get(index);
+    }
+    
+    public boolean removeFrameView(FFrameView v) {
+        return views.remove(v);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasicFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasicFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameBasicFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameBasic.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameBasicFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameBasic basic = new FFrameBasic();
+        basic.setFrameFactory(this);
+        return basic;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameBasic.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameBasic");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseFMap.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseFMap.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/IFFrameUseFMap.java	(revision 590)
@@ -0,0 +1,251 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.mapcontext.MapContext;
+
+/**
+ * FFrame which uses a MapContext object, usually because their content is
+ * dependent on the MapContext properties
+ */
+public interface IFFrameUseFMap extends IFFrame {
+    public AffineTransform getATMap();
+
+    public void setATMap(AffineTransform at);
+
+    /**
+     * Returns the MapContext contained in this FFrameView, which is
+     * usually a clone of the associated View. This MapContext
+     * may be synchronized with the View one, depending on the
+     * scale type that has been set (see {{@link #getTypeScale()}.
+     * 
+     * @return The mapContext object
+     */
+    public MapContext getMapContext();
+
+    /**
+     * Invalidates the FFrameView cache, which will cause the
+     * FFrame to be repainted on the next drawing cycle.
+     */
+    public void refresh();
+
+    /**
+     * Sets the extent of the MapContext contained in this FFrameView. It will
+     * be ignored if {@link #getScaleType()} equals to
+     * {@link SCALE_TYPE#FIXED_SCALE} or {@link SCALE_TYPE#FIXED_EXTENT}
+     * 
+     * @param r Envelope to be set
+     */
+    public void setNewEnvelope(Envelope r);
+
+    /**
+     * Gets a buffered image containing a cached version of the
+     * painted result of this FFrame. The size of the buffered image
+     * will match only the visible area of the component, not the full
+     * size of it. 
+     * 
+     * @return The cached image or null if the image is not available
+     */
+    public BufferedImage getBufferedImage();
+
+    /**
+     * Zooms to the extent containing all the layers loaded in the map. 
+     * 
+     * @throws ReadException
+     */
+    public void fullExtent() throws ReadException;
+
+    public void setPointsToZoom(Point2D px1, Point2D px2);
+
+    public void movePoints(Point2D px1, Point2D px2);
+
+    public void refreshOriginalExtent();    
+    
+    /**
+     * Gets the synchronization mode for layers. If <code>true</code>, layers
+     * will be synchronized between the FFrameView and the associated View, so
+     * any change in the FFrameView (layer added or removed, visibility changed,
+     * symbology change, etc) will be propagated to the associated View, and
+     * vice versa.
+     * 
+     * @return <code>true</code> if the layers are synchronized between the 
+     * FFrameView and the View, <code>false</code> otherwise.
+     */
+    public boolean getLayerSynced();
+
+    /**
+     * Sets the synchronization mode for map layers. If <code>true</code>,
+     * layers will be synchronized between the FFrameView and the associated
+     * View, so any change in the FFrameView (layer added or removed,
+     * visibility changed, symbology change, etc) will be propagated to the
+     * associated View, and vice versa.
+     * 
+     * @param synced <code>true</code> to enable layers synchronization
+     * between the FFrameView and the View, <code>false</code> otherwise.
+     */
+    public void setLayerSynced(boolean synced);
+
+    /**
+     * Gets the synchronization mode for the map extent. If <code>true</code>,
+     * the map extent will be synchronized between the FFrameView and the
+     * associated View, so any change in the FFrameView (pan, zoom in, zoom
+     * out...) will be propagated to the associated View, and vice versa.
+     * 
+     * @return <code>true</code> if the map extent is synchronized between the 
+     * FFrameView and the View, <code>false</code> otherwise.
+     */
+    public boolean getExtentSynced();
+    
+    /**
+     * Sets the synchronization mode for the map extent. If <code>true</code>,
+     * the map extent will be synchronized between the FFrameView and the
+     * associated View, so any change in the FFrameView (pan, zoom in, zoom
+     * out...) will be propagated to the associated View, and vice versa.
+     * 
+     * @param synced <code>true</code> to enable extent synchronization
+     * between the FFrameView and the View, <code>false</code> otherwise.
+     */
+    public void setExtentSynced(boolean synced);
+    
+    /**
+     * Sets the scale of the MapContext contained in this FFrameView. It will
+     * be ignored if {@link #getScaleType()} equals to
+     * {@link SCALE_TYPE#FIXED_SCALE} or {@link SCALE_TYPE#FIXED_EXTENT} 
+     * 
+     * @param d Scale to be set
+     */
+    public void setScale(double d);
+    
+    public static enum SCALE_TYPE {
+    	/**
+    	 * The scale and extent can be changed without restrictions 
+    	 */
+    	NORMAL,
+    	/**
+    	 * The scale has been fixed, so pans are enabled but the scale
+    	 * can't be changed and the zoom in/out tools also behave as
+    	 * pans. 
+    	 */
+    	FIXED_SCALE,
+    	/**
+    	 * The extent has been fixed, so the scale can't be changed and
+    	 * the pan and zoom tools will not produce any change 
+    	 */
+    	FIXED_EXTENT
+    };
+    
+    /**
+     * Gets the scale and extent types. It can be one of the following:
+     * {@link SCALE_TYPE#NORMAL}, {@link SCALE_TYPE#FIXED_SCALE}
+     * or {@link SCALE_TYPE#FIXED_EXTENT}
+     * 
+     * @return The scale type
+     */
+    public SCALE_TYPE getScaleType();
+    
+
+    /**
+     * Sets the scale and extent types. It can be one of the following:
+     * {@link SCALE_TYPE#NORMAL}, {@link SCALE_TYPE#FIXED_SCALE}
+     * or {@link SCALE_TYPE#FIXED_EXTENT}
+     * 
+     * @return The scale type
+     */
+    public void setScaleType(SCALE_TYPE scaleType);
+    
+    /*    
+    DEPRECATED METHODS AND CONSTANTS, KEPT FOR THE MOMENT FOR
+    BACKWARD-COMPATIBILITY. THEY SHOULD BE REMOVED ON FUTURE RELEASES
+     */
+    /**
+     * Kept for the moment for backward-compatibility, it will be
+     * removed on the future.
+     * 
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public static final int AUTOMATICO = 0;
+    /**
+     * Kept for the moment for backward-compatibility, it will be
+     * removed on the future.
+     * 
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public static final int CONSTANTE = 1;
+    /**
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public static final int MANUAL = 2;
+
+    /**
+     * Kept for the moment for backward-compatibility, it will be
+     * removed on the future.
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public int getTypeScale();
+
+    
+    /**
+     * Kept for the moment for backward-compatibility, it will be
+     * removed on the future.
+     * 
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public void setLinked(boolean b);
+
+    /**
+     * Kept for the moment for backward-compatibility, it will be
+     * removed on the future.
+     * 
+     * @Deprecated Replaced by {@link #getExtentSynced()},
+     * {@link #setExtentSynced(boolean)}, {@link #getLayerSynced()},
+     * {@link #setLayerSynced(boolean)}, {@link #getScaleType()}
+     * and {@link #setScaleType(SCALE_TYPE)}.
+     */
+    @Deprecated
+    public boolean getLinked();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameView.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameView.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameView.java	(revision 590)
@@ -0,0 +1,1565 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Area;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.cresques.cts.IProjection;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiFrame.NewStatusBar;
+import org.gvsig.app.project.Project;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.layout.DefaultLayoutNotification;
+import org.gvsig.app.project.documents.layout.FLayoutFunctions;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutNotification;
+import org.gvsig.app.project.documents.layout.TocModelChangedNotification;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.MapContextException;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.fmap.mapcontext.events.AtomicEvent;
+import org.gvsig.fmap.mapcontext.events.ColorEvent;
+import org.gvsig.fmap.mapcontext.events.ExtentEvent;
+import org.gvsig.fmap.mapcontext.events.FMapEvent;
+import org.gvsig.fmap.mapcontext.events.ProjectionEvent;
+import org.gvsig.fmap.mapcontext.events.listeners.AtomicEventListener;
+import org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener;
+import org.gvsig.fmap.mapcontext.layers.CancelationException;
+import org.gvsig.fmap.mapcontext.layers.LayerCollectionEvent;
+import org.gvsig.fmap.mapcontext.layers.LayerCollectionListener;
+import org.gvsig.fmap.mapcontext.layers.LayerEvent;
+import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendChangedEvent;
+import org.gvsig.fmap.mapcontext.rendering.legend.events.listeners.LegendListener;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.locator.LocatorException;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * FFrame used for embedding a View in the Layout. The View is not actually
+ * inserted on the Layout, but it is used together with the MapContext
+ * in order do draw an image which is then painted on the FFrame. Therefore,
+ * no MapControl is used in current implementation, but a similar behavior
+ * is simulated by the FFrameView. The original MapContext is cloned when
+ * assigned to the FFrameView, which is then used for drawing.
+ *
+ * The FFrameView and the associated View can be synchronized, depending
+ * on the values of {@link #getTypeScale()} and {@link #getLinked()}.
+ *
+ * The main synchronization logic is kept on two internal classes:
+ * {@link OwnMapContextListener} and {@link ViewDocListener}. The first one
+ * listens for events on the FFrameView and synchronizes the View accordingly.
+ * The second one listens for events on the View and synchronizes the FFrameView
+ * accordingly. There synchronization process is flagged using
+ * {@link #b_updating} and {@link #b_updating}, in order
+ * to avoid incurring on infinite synchronization loops.
+ *
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izquierdo
+ */
+public class FFrameView extends FFrame implements IFFrameUseProject,
+		IFFrameUseFMap, LayoutPanelListener{
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameView";
+
+    private static final String QUALITY_FIELD = "quality";
+    private static final String MAPUNITS_FIELD = "mapUnits";
+    private static final String SCALE_FIELD = "scale";
+    private static final String VIEW_FIELD = "view";
+    private static final String ENVELOPE_FIELD = "envelope";
+    private static final String SHOWGRID_FIELD = "showGrid";
+    private static final String GRID_FIELD = "gridview";
+    private static final String HAS_TOC_FIELD = "hasToc";
+    private static final String LAYER_SYNC_FIELD = "layerSync";
+    private static final String EXTENT_SYNC_FIELD = "extentSync";
+    private static final String SCALE_TYPE_FIELD = "scaleType";
+    // following fields are unused - they are kept for backward-compatibility
+    private static final String EXTENSION_FIELD = "extension";
+    private static final String BLINKED_FIELD = "bLinked";
+    private static final String MODE_FIELD = "mode";
+    private static final String TYPESCALE_FIELD = "typeScale";
+    private static final String MAPCONTEXT_FIELD = "mapContext";
+    private static final String VIEWING_FIELD = "viewing";
+
+    private static final Logger logger = LoggerFactory
+        .getLogger(FFrameView.class);
+    public static final int PRESENTATION = 0;
+    public static final int DRAFT = 1;
+
+    protected boolean syncLayers = true;
+    protected boolean syncExtents = true;
+    protected int quality = PRESENTATION;
+    protected ViewDocument viewDocument = null;
+    protected MapContext mapContext = null;
+    protected int mapUnits = 1; // Meters.
+
+    protected BufferedImage m_image = null;
+    protected AffineTransform mapAT = null;
+    protected Project project = null;
+    protected double scaleAnt;
+    protected Point origin;
+    protected Point2D p1;
+    protected Point2D p2;
+    protected IFFrame grid;
+    protected boolean showGrid = false;
+
+	private boolean b_updating = false;
+	protected boolean b_validCache = false;
+	protected boolean b_drawing = false;
+	protected ViewDocListener viewDocListener;
+	protected OwnMapContextListener ownMapContextListener;
+	private boolean b_hasToc = true;
+    protected static final GeometryManager geomManager = GeometryLocator.getGeometryManager();
+
+	/**
+	 * When we load a FFrameview from project, it will receive a wrong
+	 * extentChanged event the first time the View is painted, so we must
+	 * ignore this first event.
+	 */
+	private boolean b_frameInitialized = true;
+
+	protected AffineTransform originalGraphicsAT = null;
+	protected Rectangle originalClip = null;
+
+	private SCALE_TYPE scaleType = SCALE_TYPE.NORMAL;
+	private Double fixedScale = null;
+	private Envelope fixedExtent = null;
+
+
+    /**
+     * Creates a new FFrameView object.
+     */
+    public FFrameView() {
+        num++;
+        createListeners();
+    }
+
+    protected void createListeners() {
+    	viewDocListener = new ViewDocListener();
+    	ownMapContextListener = new OwnMapContextListener();
+    }
+
+    /**
+     * Returns a description of the FFrame
+     *
+     * @return Description.
+     */
+    public String toString() {
+        if (getView() == null) {
+            return "FFrameView " + num + ": " + "Vacio";
+        }
+
+        return "FFrameView " + num + ": " + getView().getName();
+    }
+
+    /**
+     * Sets the scale of the MapContext contained in this FFrameView
+     *
+     * @param d Scale to be set
+     */
+    public void setScale(double d) {
+    	if (getMapContext()!=null) {
+    		getMapContext().setScaleView((long) d);
+    	}
+    }
+
+    /**
+     * Sets a new Envelope on the MapContext contained in
+     * this FFrameView
+     *
+     * @param r Envelope to be set
+     */
+    public void setNewEnvelope(Envelope r) {
+    	getMapContext().getViewPort().setEnvelope(r);
+    	updateScaleCtrl();
+    }
+
+    /**
+     * Calculates the resolution (measured on dots per inch, DPI) to be
+     * considered to draw the FFrameView on screen. It is calculated by
+     * dividing the width (in pixels) of the FFrame divided by the width
+     * in inches of the paper.
+     */
+    protected double getDrawPaperDPI() {
+    	AffineTransform at = null;
+    	if (getLayoutContext()!=null) {
+    		at = getLayoutContext().getAT();
+    	}
+    	return (2.54*getBoundingBox(at).width)/getBoundBox().width;
+    }
+
+    /**
+     * Returns the MapContext contained in this FFrameView, which is
+     * usually a clone of the associated View. This MapContext
+     * may be synchronized with the View one, depending on the
+     * scale type that has been set (see {{@link #getTypeScale()}.
+     *
+     * @return The mapContext object
+     */
+    public MapContext getMapContext() {
+        return mapContext;
+    }
+
+    /**
+     * Sets the quality of the visualization of the FFrame on screen.
+     * Valid values include {@link #DRAFT} and {@link #PRESENTATION}.
+     * Draft will disable the frame normal drawing, which will be
+     * replaced by an empty rectangle only showing the name of the
+     * frame.
+     *
+     * @param q Integer representing the quality.
+     */
+    public void setQuality(int q) {
+        quality = q;
+    }
+
+    /**
+     * Gets the quality of the visualization of the FFrame on screen.
+     * Valid values include {@link #DRAFT} and {@link #PRESENTATION}.
+     * Draft will disable the frame normal drawing, which will be
+     * replaced by an empty rectangle only showing the name of the
+     * frame.
+     *
+     * @param q The selected quality
+     */
+    public int getQuality() {
+        return quality;
+    }
+
+    /**
+     * Sets the MapContext associated with this FFrameView, which will
+     * be used to clone the layers and synchronize the FFrameView with
+     * the associated View
+     *
+     * @param viewMapContext
+     */
+    public void setViewMapContext(MapContext viewMapContext) {
+    	Envelope oldEnvelope = null;
+    	if (mapContext!=null) {
+    		clearOwnListeners(mapContext);
+    		if (mapContext.getViewPort()!=null) {
+    			oldEnvelope = mapContext.getViewPort().getEnvelope();
+    		}
+    	}
+    	if (viewMapContext==null) { // disconnect the view from the map
+    		this.mapContext=null;
+    		return;
+    	}
+    	try {
+    		if (syncLayers){
+    			mapContext =
+    					viewMapContext.createNewFMap(
+    							(ViewPort) viewMapContext.getViewPort().clone());
+    		}
+    		else {
+    			mapContext = viewMapContext.cloneFMap();
+    			mapContext.setViewPort((ViewPort) viewMapContext
+    					.getViewPort().clone());
+    		}
+    		ViewPort newViewPort = getMapContext().getViewPort();
+    		if (!syncExtents && oldEnvelope!=null) {
+    			// if extent is not synced with the view, restore the previous
+    			// envelope if existing
+    			newViewPort.setEnvelope(oldEnvelope);
+    		}
+    		AffineTransform at;
+    		if (getLayoutContext()!=null) {
+    			at = getLayoutContext().getAT();
+    		}
+    		else {
+    			at = null;
+    		}
+    		newViewPort.setImageSize(new Dimension((int) getBoundingBox(at).width,
+    				(int) getBoundingBox(at).height));
+    		newViewPort.setDPI(getDrawPaperDPI());
+    		setListeners();
+    		updateScaleCtrl();
+    		setTocModel();
+    	} catch (CloneNotSupportedException e1) {
+    		NotificationManager.addError("Excepci�n :", e1);
+    	}
+
+    }
+
+    /**
+     * Sets the View associated with this FFrameView, which will
+     * be used to clone the MapContext and the layers. It will
+     * also used to synchronize the FFrameView with
+     * the associated View, depending on the selected scale type
+     *
+     * @param viewMapContext
+     */
+    public void setView(ViewDocument dvd) {
+    	ViewDocument oldDoc = viewDocument;
+    	if (oldDoc!=null) {
+    		if (oldDoc.getMapContext()!=null) {
+    			clearViewListeners(oldDoc.getMapContext());
+    		}
+    	}
+        viewDocument = dvd;
+        if (dvd!=null) {
+            setViewMapContext(dvd.getMapContext());
+        }
+        else {
+        	setViewMapContext(null);
+        }
+    }
+
+    /**
+     * Gets the associated View
+     *
+     * @return The associated view
+     * @see {@link #setView(ViewDocument)}
+     */
+    public ViewDocument getView() {
+        return viewDocument;
+    }
+
+    /**
+     * Draws the FFrameView on the provided Graphics, according to the
+     * provided affine transform and the visible rectangle.
+     *
+     * @param g Graphics2D
+     * @param at Affine transform to translate sheet coordinates (in cm)
+     * 				to screen coordinates (in pixels)
+     * @param visibleLayoutDocRect visible rectangle
+     * @param imgBase Image used to speed up the drawing process
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D visibleLayoutDocRect, BufferedImage imgBase) {
+        Rectangle2D.Double fframeViewRect = getBoundingBox(at);
+        Rectangle2D.Double visibleArea = (Rectangle2D.Double) getVisibleRect(visibleLayoutDocRect, fframeViewRect);
+        if (visibleArea==null) {
+        	return;
+        }
+        preDraw(g, fframeViewRect, visibleArea);
+        if (getMapContext() == null) {
+        	drawEmpty(g);
+        } else {
+        	if (FLayoutUtilities.hasEditingLayers(getView())) {
+
+        		/*
+        		 * We are not drawing if any layer is in editing mode
+        		 */
+        		drawMessage(g, Messages.getText(
+        				"_Cannot_draw_view_if_layers_in_editing_mode"));
+
+        	} else {
+        		if (getQuality() == PRESENTATION) {
+        			try {
+        				drawPresentation(g, at, fframeViewRect, visibleArea, imgBase);
+        			} catch (Exception exc) {
+        				drawMessage(g, FLayoutFunctions.getLastMessage(exc));
+        			}
+
+        		} else {
+        			drawDraft(g);
+        		}
+        	}
+        }
+        postDraw(g, fframeViewRect, at);
+        if (showGrid && grid != null) {
+            grid.draw(g, at, visibleLayoutDocRect, imgBase);
+        }
+    }
+
+    private void drawMessage(Graphics2D g, String msg) {
+
+        Rectangle2D r = getBoundingBox(null);
+        g.setColor(Color.lightGray);
+        g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.darkGray);
+        g.setStroke(new BasicStroke(2));
+        g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.black);
+
+        int scale = (int) (r.getWidth() / 24);
+        Font f = new Font("SansSerif", Font.PLAIN, scale);
+        g.setFont(f);
+        if (msg==null) {
+        	msg = Messages.getText("error");
+        }
+        g.drawString(msg, (int) (r.getCenterX() - ((msg.length() * scale) / 4)),
+        		(int) (r.getCenterY()));
+    }
+
+    /**
+     * Gets the visible envelope, in map coordinates
+     *
+     * @param fframeViewRect Rectangle defining the bounding box of the
+     * FFrameView, in screen coordinates
+     * @param visiblefframeViewRect Rectangle defining the bounding box
+     * of the visible area of the fframeView, in screen coordinates
+     * @return
+     */
+    protected Envelope getVisibleEnvelope(Rectangle2D.Double fframeViewRect,
+            Rectangle2D.Double visiblefframeViewRect) {
+    	Envelope oldEnv = getMapContext().getViewPort().getAdjustedEnvelope();
+    	double widthFactor = ((int)visiblefframeViewRect.width) / fframeViewRect.width;
+    	double heightFactor = ((int)visiblefframeViewRect.height) / fframeViewRect.height;
+
+    	double newWidth = oldEnv.getLength(0)*widthFactor;
+    	double newHeight = oldEnv.getLength(1)*heightFactor;
+
+        double translateX = visiblefframeViewRect.x - fframeViewRect.x;
+        double translateY = visiblefframeViewRect.y - fframeViewRect.y;
+        double translateFactorX = translateX / fframeViewRect.width;
+        double translateFactorY = translateY / fframeViewRect.height;
+
+        double newX = oldEnv.getMinimum(0) + translateFactorX*oldEnv.getLength(0);
+        double newMaxY =  oldEnv.getMaximum(1) - translateFactorY*oldEnv.getLength(1);
+        double newMaxX = newX + newWidth;
+        double newY = newMaxY - newHeight;
+
+        Envelope newEnv = null;
+		try {
+			newEnv = geomManager.createEnvelope(newX, newY, newMaxX, newMaxY, SUBTYPES.GEOM2D);
+		} catch (CreateEnvelopeException e) {
+			logger.error("Error calculating visible extent", e);
+		}
+        return newEnv;
+
+    }
+
+    protected void drawPresentation(
+        Graphics2D g,
+        AffineTransform affineTransform,
+        Rectangle2D.Double fframeViewRect,
+        Rectangle2D.Double visibleRect,
+        BufferedImage imgBase) throws Exception {
+
+    	b_drawing = true;
+    	int drawWidth = (int)visibleRect.width;
+    	int drawHeight = (int)visibleRect.height;
+
+    	Envelope oldEnvelope = null;
+        if (!visibleRect.equals(fframeViewRect)) {
+        	// if visible area is smaller than the fframe, we will only draw this area,
+        	// so we need to tell the ViewPort the image size and extent for drawing,
+        	// and restore the real extent after drawing
+            oldEnvelope = getMapContext().getViewPort().getEnvelope();
+            if (oldEnvelope==null) {
+            	return;
+            }
+
+        	Envelope newEnvelope = getVisibleEnvelope(fframeViewRect, visibleRect);
+        	// image size must be set before the envelope, as it has influence on the adjustedExtent
+        	getMapContext().getViewPort().setImageSize(new Dimension(drawWidth, drawHeight));
+        	getMapContext().getViewPort().setEnvelope(newEnvelope);
+        }
+        else {
+        	getMapContext().getViewPort().setImageSize(new Dimension(drawWidth, drawHeight));
+        	getMapContext().getViewPort().refreshExtent();
+        }
+
+        // map origin should be calculated using the full fframeview, as the visible position will be relative
+        Point mapOrigin = new Point((int)fframeViewRect.getMinX(), (int)fframeViewRect.getMaxY());
+
+        // paint the MapContext on m_image, if not already cached
+        createImage(affineTransform, drawWidth, drawHeight, mapOrigin);
+
+        //Draw the created image
+        drawImage(g, m_image, visibleRect);
+
+        if (oldEnvelope!=null) {
+        	// restore real envelope and image size
+        	getMapContext().getViewPort().setImageSize(new Dimension((int)fframeViewRect.width, (int) fframeViewRect.height));
+        	getMapContext().getViewPort().setEnvelope(oldEnvelope);
+        }
+
+        scaleAnt = affineTransform.getScaleX();
+        origin = mapOrigin;
+        b_drawing = false;
+    }
+
+    protected void createImage(AffineTransform affineTransform,
+    		int width, int height, Point mapOrigin) throws ReadException, MapContextException {
+    	ViewPort viewPort = this.getMapContext().getViewPort();
+
+        //If the image has to be created...
+    	if (origin == null ||
+    			!origin.equals(mapOrigin) ||
+    			affineTransform.getScaleX() != scaleAnt ||
+    			m_image == null ||
+    			!b_validCache) {
+
+    		viewPort.setDPI(getDrawPaperDPI());
+        	viewPort.setImageSize(new Dimension(width, height));
+
+            m_image =
+                    new BufferedImage(
+                    		width,
+                    		height,
+                    		BufferedImage.TYPE_INT_ARGB);
+
+            Graphics2D gimg = (Graphics2D) m_image.createGraphics();
+            getMapContext().draw(m_image, gimg, getScale());
+            gimg.dispose();
+            b_validCache = true;
+        }
+
+    }
+
+    protected void drawImage(Graphics2D g, BufferedImage image,
+    		Rectangle2D.Double visibleRectangle) {
+
+    	Color theBackColor = getMapContext().getViewPort().getBackColor();
+        if (theBackColor != null) {
+            g.setColor(theBackColor);
+            g.fillRect((int) visibleRectangle.x, (int) visibleRectangle.y,
+            		(int)visibleRectangle.width,
+            		(int)visibleRectangle.height);
+        }
+        g.drawImage(m_image,
+        		(int) visibleRectangle.x,
+        		(int) visibleRectangle.y,
+        		null);
+    }
+
+    protected void preDraw(Graphics2D g, Rectangle2D.Double fframeViewRect, Rectangle2D.Double visibleRect){
+    	originalGraphicsAT = (AffineTransform) g.getTransform().clone();
+
+        if (g.getClipBounds() != null) {
+            originalClip = (Rectangle) g.getClipBounds().clone();
+        }
+        AffineTransform rotationAT = getRotationAT();
+        if (rotationAT!=null) {
+        	g.transform(rotationAT);
+        }
+        g.setClip((int) visibleRect.getMinX(), (int) visibleRect.getMinY(),
+            (int) visibleRect.getWidth(), (int) visibleRect.getHeight());
+    }
+
+    protected void postDraw(Graphics2D g, Rectangle2D.Double fframeViewRect, AffineTransform at){
+    	g.setTransform(originalGraphicsAT);
+        if (getMapContext() != null) {
+            setATMap(getMapContext().getViewPort().getAffineTransform());
+        }
+        if (originalClip != null) {
+            g.setClip(originalClip.x, originalClip.y, originalClip.width, originalClip.height);
+        }
+    }
+
+
+    /**
+     * @deprecated Use {@link #postDraw(Graphics2D, java.awt.geom.Rectangle2D.Double, AffineTransform)} instead.
+     */
+    @Deprecated
+    protected void postDraw(Graphics2D g, Rectangle2D.Double rectangleLayout, Rectangle2D rectangleView, BufferedImage imgBase, Rectangle originalClip, AffineTransform at) {
+    	postDraw(g, rectangleLayout, at);
+
+    }
+
+    /**
+     * @deprecated Use {@link #preDraw(Graphics2D, java.awt.geom.Rectangle2D.Double, java.awt.geom.Rectangle2D.Double) instead
+     */
+    @Deprecated
+    protected Rectangle preDraw(Graphics2D g, Rectangle2D.Double rectangleLayout){
+    	Rectangle originalClip = null;
+        if (g.getClipBounds() != null) {
+            originalClip = (Rectangle) g.getClipBounds().clone();
+        }
+    	preDraw(g, rectangleLayout, rectangleLayout);
+    	return originalClip;
+    }
+
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes printAttributes) {
+        Rectangle2D.Double rectangleLayout = getBoundingBox(at);
+
+        preDraw(g, rectangleLayout, rectangleLayout);
+        print(g, at, printAttributes);
+        postDraw(g, rectangleLayout, at);
+        if (showGrid && grid != null) {
+            grid.print(g, at, geom, printAttributes);
+        }
+    }
+
+    protected void print(Graphics2D g, AffineTransform at, PrintAttributes printAttributes) {
+        Rectangle2D.Double layoutRectangle = getBoundingBox(at);
+
+        // FIXME: should we clone the mapcontext and viewport before printing ??
+        // otherwise we will probably have unexpected results if the user modifies
+        // the layout while printing (answer: not an issue at the moment as printing is
+        // a blocking operation)
+        ViewPort viewPort = this.getMapContext().getViewPort();
+
+        Point2D old_offset = viewPort.getOffset();
+        Dimension old_imgsize = viewPort.getImageSize();
+        double oldDpi = viewPort.getDPI();
+
+        viewPort.setOffset(new Point2D.Double(layoutRectangle.x, layoutRectangle.y));
+        viewPort.setImageSize(new Dimension((int) layoutRectangle.width, (int) layoutRectangle.height));
+        double dpi = PrintAttributes.PRINT_QUALITY_DPI[printAttributes.getPrintQuality()];
+        viewPort.setDPI(dpi);
+
+        //Draw the backgroung color of the map
+        Color theBackColor = viewPort.getBackColor();
+        if (theBackColor != null) {
+            g.setColor(theBackColor);
+            g.fillRect((int) layoutRectangle.x, (int) layoutRectangle.y, viewPort
+                    .getImageWidth(), viewPort
+                    .getImageHeight());
+        }
+
+        //Print the map
+        try {
+            this.getMapContext().print(g, getScale(), printAttributes);
+        } catch (ReadException e) {
+            NotificationManager.addError(e.getMessage(), e);
+        } catch (MapContextException e) {
+            NotificationManager.addError(e.getMessage(), e);
+        }
+
+        // Restore offset, imgsize
+        viewPort.setOffset(old_offset);
+        viewPort.setImageSize(old_imgsize);
+        viewPort.setDPI(oldDpi);
+
+    }
+
+    /**
+     * Rellena la unidad de medida en la que est� la vista.
+     *
+     * @param i
+     *            entero que representa la unidad de medida de la vista.
+     */
+    public void setMapUnits(int i) {
+        mapUnits = i;
+    }
+
+    /**
+     * Obtiene la unidad de medida en la que est� la vista.
+     *
+     * @return Unidad de medida.
+     */
+    public int getMapUnits() {
+        return mapUnits;
+    }
+
+    /**
+     * Devuelve la escala seg�n el tipo de escala que se haya seleccionado al
+     * a�adida la vista.
+     *
+     * @return escala.
+     */
+    public long getScale() {
+    	return (long) getMapContext().getScaleView();
+    }
+
+    /**
+     * Inserta la imagen para repintar el FFrameView.
+     *
+     * @param bi
+     *            Imagen para repintar.
+     */
+    public void setBufferedImage(BufferedImage bi) {
+        m_image = bi;
+    }
+
+    /**
+     * Devuelve la imagen para repintar.
+     *
+     * @return Imagen para repintar.
+     */
+    public BufferedImage getBufferedImage() {
+        return m_image;
+    }
+
+    /**
+     * Devuelve la MAtriz de transformaci�n utilizada por la FFrameView.
+     *
+     * @return MAtriz de transformaci�n.
+     */
+    public AffineTransform getATMap() {
+        return mapAT;
+    }
+
+    /**
+     * Inserta la matriz de transformaci�n.
+     *
+     * @param transform
+     *            Matriz de transformaci�n.
+     */
+    public void setATMap(AffineTransform transform) {
+        mapAT = transform;
+    }
+
+    /**
+     * Inserta el proyecto.
+     *
+     * @param p
+     *            Proyecto.
+     */
+    public void setProject(Project p) {
+        project = p;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "Vista") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param arg0
+     *            DOCUMENT ME!
+     *
+     * @return DOCUMENT ME!
+     */
+    public boolean compare(Object arg0) {
+        if (!(arg0 instanceof FFrameView)) {
+            return false;
+        }
+
+        if (!this.getName().equals(((FFrameView) arg0).getName())) {
+            return false;
+        }
+
+        if (Math.abs(this.getBoundBox().getWidth()
+            - (((FFrameView) arg0).getBoundBox().getWidth())) > 0.05) {
+            return false;
+        }
+        if (Math.abs(this.getBoundBox().getHeight()
+            - (((FFrameView) arg0).getBoundBox().getHeight())) > 0.05) {
+            return false;
+        }
+
+        if (!this.toString().equals(((FFrameView) arg0).toString())) {
+            return false;
+        }
+
+        if (this.getMapContext() != null
+            && !this.getMapContext()
+                .equals(((FFrameView) arg0).getMapContext())) {
+            return false;
+        }
+
+        if (this.getRotation() != ((FFrameView) arg0).getRotation()) {
+            return false;
+        }
+        return true;
+    }
+
+    public void updateScaleCtrl() {
+    	NewStatusBar statusbar = PluginServices.getMainFrame().getStatusBar();
+    	MapContext mapContext = this.getMapContext();
+    	if (mapContext==null) {
+    		return;
+    	}
+    	statusbar.setMessage("units",
+    			PluginServices.getText(this, mapContext.getDistanceName()));
+    	String scale;
+    	if (fixedScale!=null && getScaleType()==SCALE_TYPE.FIXED_SCALE) {
+    		// prefer fixedScale as getScaleView() may offer slight differences
+    		// because the influence of the adjusted envelope
+    		scale = String.valueOf(fixedScale.longValue());
+    	}
+    	else {
+    		scale = String.valueOf(getMapContext().getScaleView());
+    	}
+    	statusbar.setControlValue("layout-view-change-scale",
+    			scale);
+    	IProjection proj = mapContext.getViewPort().getProjection();
+    	if (proj != null) {
+    		statusbar.setMessage("projection", proj.getAbrev());
+    	} else {
+    		statusbar.setMessage("projection", "");
+    	}
+    }
+
+    public void fullExtent() throws ReadException {
+        setNewEnvelope(getMapContext().getFullEnvelope());
+    }
+
+    public void setPointsToZoom(Point2D px1, Point2D px2) {
+        p1 = px1;
+        p2 = px2;
+    }
+
+    public void movePoints(Point2D px1, Point2D px2) {
+        double difX = -px2.getX() + px1.getX();
+        double difY = -px2.getY() + px1.getY();
+        if (p1 != null) {
+            p1.setLocation(p1.getX() + difX, p1.getY() + difY);
+            p2.setLocation(p2.getX() + difX, p2.getY() + difY);
+        }
+    }
+
+    /**
+     * This method deals with places where this fframeview and the cloned
+     * fframeview (frame) are registered as listeners. The goal should be
+     * leaving the cloned instance (frame) as listener in the same way
+     * that 'this' instance is doing.
+     */
+    protected void cloneActions(FFrameView frame) {
+    }
+
+    public Object clone() throws CloneNotSupportedException {
+        FFrameView frame = (FFrameView) super.clone();
+        frame.createListeners(); // necessary to create the listeners within the right scope
+        frame.setView(this.getView());
+
+        if (grid != null) {
+            FFrameGrid newGrid = (FFrameGrid) this.grid.clone();
+            newGrid.setFFrameDependence(frame);
+            frame.setGrid(newGrid);
+        }
+        cloneActions(frame);
+        return frame;
+    }
+
+    public void setGrid(IFFrame grid) {
+        this.grid = grid;
+        this.grid.setRotation(this.getRotation());
+    }
+
+    public IFFrame getGrid() {
+        return this.grid;
+    }
+
+    public void setRotation(double rotation) {
+        super.setRotation(rotation);
+        if (grid != null) {
+            grid.setRotation(rotation);
+        }
+    }
+
+    public void showGrid(boolean b) {
+        showGrid = b;
+    }
+
+    public boolean isShowGrid() {
+        return showGrid;
+    }
+
+    public void refreshOriginalExtent() {
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameView.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameView persistence definition", null, null);
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+            definition.addDynFieldInt(QUALITY_FIELD).setMandatory(true);
+            definition.addDynFieldInt(MAPUNITS_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(SCALE_FIELD).setMandatory(false);
+            definition.addDynFieldObject(VIEW_FIELD)
+                .setClassOfValue(ViewDocument.class).setMandatory(false);
+            definition.addDynFieldObject(ENVELOPE_FIELD)
+                .setClassOfValue(Envelope.class).setMandatory(false);
+            definition.addDynFieldBoolean(SHOWGRID_FIELD).setMandatory(true);
+            definition.addDynFieldObject(GRID_FIELD)
+                .setClassOfValue(IFFrame.class).setMandatory(false);
+            definition.addDynFieldBoolean(HAS_TOC_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(EXTENT_SYNC_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(LAYER_SYNC_FIELD).setMandatory(false);
+            definition.addDynFieldInt(SCALE_TYPE_FIELD).setMandatory(false);
+            // unused fields, kept for backward compatibility
+            definition.addDynFieldInt(MODE_FIELD).setMandatory(false);
+            definition.addDynFieldInt(TYPESCALE_FIELD).setMandatory(false);
+            definition.addDynFieldBoolean(BLINKED_FIELD).setMandatory(false);
+            definition.addDynFieldObject(MAPCONTEXT_FIELD)
+            .setClassOfValue(MapContext.class).setMandatory(false);
+            definition.addDynFieldInt(VIEWING_FIELD).setMandatory(false);
+            definition.addDynFieldInt(EXTENSION_FIELD).setMandatory(false);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        b_frameInitialized = false;
+        if (state.hasValue(EXTENT_SYNC_FIELD)) {
+        	syncExtents = state.getBoolean(EXTENT_SYNC_FIELD);
+        }
+        else {
+        	syncExtents = true;
+        }
+        if (state.hasValue(LAYER_SYNC_FIELD)) {
+        	syncLayers = state.getBoolean(LAYER_SYNC_FIELD);
+        }
+        else {
+        	syncLayers = true;
+        }
+        Double layoutScale = null;
+        if (state.hasValue(SCALE_FIELD)) {
+        	layoutScale = state.getDouble(SCALE_FIELD);
+        }
+    	Envelope envelope = (Envelope) state.get(ENVELOPE_FIELD);
+
+        if (state.hasValue(SCALE_TYPE_FIELD)) {
+        	int value = state.getInt(SCALE_TYPE_FIELD);
+        	if (value==SCALE_TYPE.FIXED_EXTENT.ordinal()) {
+        		scaleType = SCALE_TYPE.FIXED_EXTENT;
+        		fixedExtent = envelope;
+        	}
+        	else if (value==SCALE_TYPE.FIXED_SCALE.ordinal()) {
+        		scaleType = SCALE_TYPE.FIXED_SCALE;
+        		fixedScale = layoutScale;
+        	}
+        	// else use the default value
+        }
+        quality = state.getInt(QUALITY_FIELD);
+        mapUnits = state.getInt(MAPUNITS_FIELD);
+        if (state.hasValue(HAS_TOC_FIELD)) {
+        	this.b_hasToc = state.getBoolean(HAS_TOC_FIELD);
+        }
+
+        // When copying and pasting layout documents (in project manager), the view
+        // is first persisted (copy action) and then re-created from persistence (paste action).
+        // This is a problem, as the re-created view is not the same view as the original one
+        // and thus layout stops being synchronized with the right view.
+        // Therefore, we try to get first the "live" view if available, and get the persisted
+        // one otherwise, which will be used when opening projects.
+        ViewDocument persistenceView = (ViewDocument) state.get(VIEW_FIELD);
+        if (persistenceView!= null) {
+        	ViewDocument view = (ViewDocument) ProjectManager.getInstance().getCurrentProject().getDocument(persistenceView.getName(), persistenceView.getTypeName());
+        	if (view==null) {
+        		view = persistenceView;
+        	}
+        	this.setView(view);
+        	// it is crucial to don't persist the MapContext and get a cloned one from the View instead,
+        	// as the cloned instance is different from the one created using persistence. In particular,
+        	// the cloned one will share the EventBuffer with the original one, while persistence would
+        	// create 2 separate EventBuffers, which will then have a very stange behaviour
+        }
+        if (getMapContext()!=null) {
+        	if (layoutScale!=null) {
+        		getMapContext().setScaleView(layoutScale.longValue());
+        	}
+        	getMapContext().getViewPort().setEnvelope(envelope);
+        	if (this.getLayoutContext()!=null) {
+        		this.getLayoutContext().setTocModel(getMapContext());
+        	}
+
+        }
+        showGrid = state.getBoolean(SHOWGRID_FIELD);
+        grid = (IFFrame) state.get(GRID_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(EXTENT_SYNC_FIELD, syncExtents);
+        state.set(LAYER_SYNC_FIELD, syncLayers);
+        state.set(QUALITY_FIELD, quality);
+        state.set(MAPUNITS_FIELD, mapUnits);
+        state.set(VIEW_FIELD, viewDocument);
+        state.set(HAS_TOC_FIELD, b_hasToc);
+        state.set(SCALE_TYPE_FIELD, scaleType.ordinal());
+
+        if (getMapContext() != null
+            && getMapContext().getViewPort().getEnvelope() != null) {
+        	if (scaleType==SCALE_TYPE.FIXED_SCALE) {
+        		if (fixedScale==null) {
+        			fixedScale = new Double(getMapContext().getScaleView());
+        		}
+        		state.set(SCALE_FIELD, (double)fixedScale);
+        	}
+        	else {
+        		state.set(SCALE_FIELD, (double)getMapContext().getScaleView());
+        	}
+        	if (scaleType == SCALE_TYPE.FIXED_EXTENT) {
+        		if (fixedExtent==null) {
+        			fixedExtent = getMapContext().getViewPort().getAdjustedEnvelope();
+        		}
+        		state.set(ENVELOPE_FIELD, fixedExtent);
+        	}
+        	else {
+        		state.set(ENVELOPE_FIELD, getMapContext().getViewPort()
+                        .getAdjustedEnvelope());
+        	}
+        }
+
+        state.set(SHOWGRID_FIELD, showGrid);
+        state.set(GRID_FIELD, grid);
+    }
+
+    @Override
+    public void setBoundBox(Rectangle2D r) {
+    	super.setBoundBox(r);
+    	if (this.getMapContext()!=null && this.getLayoutContext()!=null) {
+    		AffineTransform at = this.getLayoutContext().getAT();
+    		long scale = getMapContext().getScaleView();
+    		getMapContext().getViewPort().setImageSize(
+    				new Dimension((int)getBoundingBox(at).getWidth(), (int)getBoundingBox(at).getHeight()));
+    		getMapContext().getViewPort().setDPI(getDrawPaperDPI());
+    		if (getScaleType()==SCALE_TYPE.FIXED_SCALE) {
+    			getMapContext().setScaleView((long) scale);
+    		}
+    		updateScaleCtrl();
+    		refresh();
+    	}
+    }
+
+    /**
+     * Gets the rotation of the frame
+     *
+     * @return Rotation in degrees
+     */
+    public double getMapRotation() {
+        return 0;
+    }
+
+	protected void invalidateLayout() {
+		b_validCache = false;
+		if (getLayoutContext()!=null) {
+			getLayoutContext().notifAllObservers();
+		}
+        observers.notifyObservers(this,
+                new DefaultLayoutNotification(LayoutNotification.LAYOUT_REFRESH));
+	}
+
+	protected void invalidateToc() {
+		if (getLayoutContext()!=null) {
+			getLayoutContext().notifyTocUpdated(TocModelChangedNotification.Type.ITEM_UPDATED);
+		}
+	}
+
+	protected void refreshToc() {
+		if (getLayoutContext()!=null) {
+			getLayoutContext().notifyTocUpdated(TocModelChangedNotification.Type.MODEL_CHANGED);
+		}
+	}
+
+	public void refresh() {
+		// force re-creating the cache on the next drawing cycle
+		b_validCache = false;
+	}
+
+    protected void resetListeners() {
+		if (this.getMapContext()!=null) {
+			clearOwnListeners(this.getMapContext());
+		}
+		if (this.getView()!=null && this.getView().getMapContext()!=null) {
+			clearViewListeners(this.getView().getMapContext());
+		}
+    	setListeners();
+    }
+
+    protected void setListeners() {
+    	if (getView()!=null) {
+    		if (syncLayers) {
+    			getView().getMapContext().addLayerListener(viewDocListener);
+    			getView().getMapContext().getLayers().addLayerCollectionListener(viewDocListener);
+    			getView().getMapContext().addAtomicEventListener(viewDocListener);
+    		}
+    		if (getExtentSynced()) {
+    			getView().getMapContext().getViewPort().addViewPortListener(viewDocListener);
+    		}
+    	}
+    	if (getMapContext()!=null) {
+    		getMapContext().addLayerListener(ownMapContextListener);
+    		getMapContext().getLayers().addLayerCollectionListener(ownMapContextListener);
+    		getMapContext().getViewPort().addViewPortListener(ownMapContextListener);
+    	}
+    }
+    protected void clearOwnListeners(MapContext mapContext) {
+    	mapContext.removeLayerListener(ownMapContextListener);
+    	mapContext.getViewPort().removeViewPortListener(ownMapContextListener);
+    	mapContext.getLayers().removeLayerCollectionListener(ownMapContextListener);
+    }
+    protected void clearViewListeners(MapContext mapContext) {
+    	mapContext.removeLayerListener(viewDocListener);
+    	mapContext.getViewPort().removeViewPortListener(viewDocListener);
+    	mapContext.getLayers().removeLayerCollectionListener(viewDocListener);
+    	mapContext.removeAtomicEventListener(viewDocListener);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.tools.dispose.Disposable#dispose()
+     */
+	public void dispose() {
+		try {
+			if (this.getMapContext()!=null) {
+				clearOwnListeners(this.getMapContext());
+			}
+			if (this.getView()!=null && this.getView().getMapContext()!=null) {
+				clearViewListeners(this.getView().getMapContext());
+			}
+		}
+		catch (Exception ex) {}
+		this.viewDocument = null;
+		this.mapContext = null;
+	}
+
+	public void frameRemoved() {
+		if (mapContext!=null) {
+			clearOwnListeners(mapContext);
+		}
+		if (this.getView()!=null && this.getView().getMapContext()!=null) {
+			clearViewListeners(this.getView().getMapContext());
+		}
+		if (b_hasToc && getLayoutContext()!=null) {
+			getLayoutContext().setTocModel(null);
+		}
+		m_image = null; // FIXME: we could instead move it to a LRU cache to keep the last N images
+	}
+
+	public void frameAdded() {
+		setListeners();
+		setTocModel();
+		updateScaleCtrl();
+	}
+
+	public void setHasToc(boolean hasToc) {
+		this.b_hasToc = hasToc;
+		setTocModel();
+	}
+
+	protected void setTocModel() {
+		if (getLayoutContext()!=null) {
+			if (b_hasToc && getMapContext()!=null) {
+				getLayoutContext().setTocModel(getMapContext());
+			}
+			else {
+				getLayoutContext().setTocModel(null);
+			}
+		}
+	}
+
+	@Override
+	protected void doSetSelected(int selectedStatus) {
+		boolean oldSelectedStatus = isSelected();
+		super.doSetSelected(selectedStatus);
+		if (!oldSelectedStatus && isSelected()) { // changed from not selected to selected
+			setTocModel();
+			updateScaleCtrl();
+		}
+	}
+
+	public boolean getLayerSynced() {
+		return syncLayers;
+	}
+
+	public void setLayerSynced(boolean synced) {
+        syncLayers = synced;
+        resetListeners();
+	}
+
+	public boolean getExtentSynced() {
+		return syncExtents;
+	}
+
+	public void setExtentSynced(boolean synced) {
+		syncExtents = synced;
+        resetListeners();
+	}
+
+	/**
+	 * Returns true if the newEnvelope represents a pan operation on oldEnvelope,
+	 * (both extents have the same height and width)
+	 */
+	public static boolean isPan(Envelope oldEnvelope, Envelope newEnvelope) {
+		if (oldEnvelope!=null && newEnvelope!=null) {
+			double toleranceX = 0.00000001*Math.min(oldEnvelope.getLength(0), newEnvelope.getLength(0));
+			double toleranceY = 0.00000001*Math.min(oldEnvelope.getLength(1), newEnvelope.getLength(1));
+
+			// we consider it to be a pan if both lengths are equal
+			// (we use tolerance to avoid direct comparison of double values)
+			if ( ((oldEnvelope.getLength(0)-newEnvelope.getLength(0))<toleranceX)
+					&& ((oldEnvelope.getLength(1)-newEnvelope.getLength(1))<toleranceY) ) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Calculates the new extent for the FFrame. It is necessary to avoid
+	 * scale changes when a pan is triggered from the view, as the different
+	 * size factors from View/FFrameView introduces scale changes even for
+	 * pans
+	 *
+	 * @param newEnvelope
+	 * @return
+	 */
+	protected Envelope calculateNewExtent() {
+		Envelope newEnvelope = getView().getMapContext().getViewPort().getEnvelope();
+		Envelope oldViewEnvelope = null;
+		try {
+			if (getView().getMapContext().getViewPort().getEnvelopes().hasPrevious()) {
+				Rectangle2D r = getView().getMapContext().getViewPort().getEnvelopes().getPrev();
+				oldViewEnvelope = GeometryLocator.getGeometryManager().createEnvelope(r.getMinX(), r.getMinY(), r.getMaxX(), r.getMaxY(), SUBTYPES.GEOM2D);
+			}
+			if (isPan(oldViewEnvelope, newEnvelope)) {
+				Envelope envelope = getMapContext().getViewPort().getAdjustedEnvelope();
+				double shiftX = newEnvelope.getMinimum(0) - oldViewEnvelope.getMinimum(0);
+				double shiftY = newEnvelope.getMinimum(1) - oldViewEnvelope.getMinimum(1);
+
+				double minX = envelope.getMinimum(0) + shiftX;
+				double minY = envelope.getMinimum(1) + shiftY;
+				double maxX = envelope.getMaximum(0) + shiftX;
+				double maxY = envelope.getMaximum(1) + shiftY;
+
+				return GeometryLocator.getGeometryManager().createEnvelope(minX, minY, maxX, maxY, SUBTYPES.GEOM2D);
+			}
+		}
+		catch (LocatorException e) {}
+		catch (CreateEnvelopeException e) {}
+		return newEnvelope;
+	}
+
+	private class ViewDocListener
+	implements ViewPortListener, LegendListener, LayerCollectionListener, AtomicEventListener {
+
+		public void extentChanged(ExtentEvent e) {
+			if (!b_updating && getExtentSynced()) {
+				if (!b_frameInitialized) {
+					b_frameInitialized = true;
+					return;
+				}
+				b_updating = true;
+				if (getMapContext()!=null) {
+					if (scaleType==SCALE_TYPE.FIXED_EXTENT) {
+						getView().getMapContext().getViewPort().setEnvelope(fixedExtent);
+					}
+					else {
+						getMapContext().getViewPort().setEnvelope(calculateNewExtent());
+						if (scaleType==SCALE_TYPE.FIXED_SCALE) {
+							getMapContext().setScaleView(Math.round(fixedScale));
+							getView().getMapContext().getViewPort().setEnvelope(getMapContext().getViewPort().getAdjustedEnvelope());
+						}
+						updateScaleCtrl();
+						invalidateLayout();
+					}
+				}
+				b_updating = false;
+			}
+		}
+
+		public void backColorChanged(ColorEvent e) {
+			if (!b_updating && syncLayers) {
+				if (getMapContext()!=null) {
+					b_updating = true;
+					mapContext.getViewPort().setBackColor(e.getNewColor());
+					invalidateLayout();
+					b_updating = true;
+				}
+			}
+		}
+
+		public void projectionChanged(ProjectionEvent e) {
+			if (!b_updating && getExtentSynced()) {
+				if (getMapContext()!=null) {
+					b_updating = true;
+					getMapContext().getViewPort().setProjection(e.getNewProjection());
+					invalidateLayout();
+					// FIXME: force also a view redraw someway??
+					b_updating = false;
+				}
+			}
+		}
+
+		public void conditionalRedraw() {
+			if (!b_updating && syncLayers) {
+				b_updating = true;
+				invalidateLayout();
+				// the view should also receive the event and update automatically
+				b_updating = false;
+			}
+		}
+
+		public void legendChanged(LegendChangedEvent e) {
+			conditionalRedraw();
+			refreshToc();
+		}
+
+		public void layerAdded(LayerCollectionEvent e) {
+			conditionalRedraw();
+			// no need to invalidate the toc as it is down by the OwnMapContextListener
+		}
+
+		public void layerMoved(LayerPositionEvent e) {
+			conditionalRedraw();
+			// no need to invalidate the toc as it is down by the OwnMapContextListener
+		}
+
+		public void layerRemoved(LayerCollectionEvent e) {
+			conditionalRedraw();
+			// no need to invalidate the toc as it is down by the OwnMapContextListener
+		}
+
+		public void layerAdding(LayerCollectionEvent e)
+				throws CancelationException {
+			// nothing needed
+		}
+
+		public void layerMoving(LayerPositionEvent e)
+				throws CancelationException {
+			// nothing needed
+		}
+
+		public void layerRemoving(LayerCollectionEvent e)
+				throws CancelationException {
+			// nothing needed
+		}
+
+		public void visibilityChanged(LayerCollectionEvent e)
+				throws CancelationException {
+			// AtomicEvent is catching visibility changes instead of this one,
+			// as this event is not being received. Maybe is only triggered if the
+			// visibility of the whole group changes??
+			conditionalRedraw();
+			invalidateToc();
+		}
+
+		public void atomicEvent(AtomicEvent e) {
+			boolean layoutRedraw = false;
+			// not all the events require a fframeview redraw
+			for (int i=e.getLayerEvents().length-1; i>=0; i--) {
+				FMapEvent at = e.getEvent(i);
+				if (at instanceof LayerEvent) {
+					if (at.getEventType()==LayerEvent.DRAW_VALUES_CHANGED) {
+						layoutRedraw = true;
+						break;
+					}
+				}
+			}
+			if (layoutRedraw) {
+				conditionalRedraw();
+			}
+			invalidateToc();
+		}
+	}
+
+	private class OwnMapContextListener
+		implements ViewPortListener, LegendListener, LayerCollectionListener {
+
+		public void extentChanged(ExtentEvent e) {
+			if (!b_drawing && !b_updating) {
+				b_updating = true;
+				if (scaleType==SCALE_TYPE.FIXED_EXTENT) {
+					getMapContext().getViewPort().setEnvelope(fixedExtent);
+				}
+				else {
+					Envelope newEnvelope;
+					if (scaleType==SCALE_TYPE.FIXED_SCALE && fixedScale!=null) {
+						getMapContext().setScaleView(Math.round(fixedScale));
+						newEnvelope = getMapContext().getViewPort().getAdjustedEnvelope();
+					}
+					else {
+						newEnvelope = e.getNewExtent();
+					}
+					if (getView()!=null) {
+						if (getExtentSynced()){
+							getView().getMapContext().getViewPort().setEnvelope(newEnvelope);
+						}
+					}
+				}
+				updateScaleCtrl();
+				invalidateLayout();
+				b_updating = false;
+			}
+		}
+
+		public void backColorChanged(ColorEvent e) {
+			if (!b_updating) {
+				if (getView()!=null) {
+					b_updating = true;
+					if (getLayerSynced()) {
+						getView().getMapContext().getViewPort().setBackColor(e.getNewColor());
+					}
+					invalidateLayout();
+					b_updating = false;
+				}
+			}
+		}
+
+		public void projectionChanged(ProjectionEvent e) {
+			if (!b_updating && getExtentSynced()) {
+				if (getView()!=null) {
+					b_updating = true;
+					if (getLayerSynced()) {
+						getView().getMapContext().getViewPort().setProjection(e.getNewProjection());
+					}
+					invalidateLayout();
+					// FIXME: force also a view redraw someway??
+					b_updating = false;
+				}
+			}
+		}
+
+		public void conditionalRedraw() {
+			if (!b_updating) {
+				b_updating = true;
+				invalidateLayout();
+				// the view should also receive the event and update automatically
+				b_updating = false;
+			}
+		}
+
+		public void legendChanged(final LegendChangedEvent e) {
+			conditionalRedraw();
+			refreshToc();
+		}
+
+		public void layerAdded(final LayerCollectionEvent e) {
+			// necessary to set an envelope when the first layer is added
+			if (!b_updating && getMapContext().getViewPort().getEnvelope()==null) {
+				try {
+					b_updating = true;
+					fullExtent();
+
+				} catch (ReadException e1) {
+				} finally {
+					b_updating = false;
+				}
+			}
+			conditionalRedraw();
+			refreshToc();
+		}
+
+		public void layerMoved(final LayerPositionEvent e) {
+			conditionalRedraw();
+			refreshToc();
+		}
+
+		public void layerRemoved(final LayerCollectionEvent e) {
+			conditionalRedraw();
+			refreshToc();
+		}
+
+		public void layerAdding(LayerCollectionEvent e)
+				throws CancelationException {
+			// nothing neededO
+
+		}
+
+		public void layerMoving(LayerPositionEvent e)
+				throws CancelationException {
+			// nothing needed
+
+		}
+
+		public void layerRemoving(LayerCollectionEvent e)
+				throws CancelationException {
+			// nothing needed
+
+		}
+
+		public void visibilityChanged(LayerCollectionEvent e)
+				throws CancelationException {
+			conditionalRedraw();
+		}
+	}
+
+	public void setExtent(Envelope extent) {
+		if (getScaleType()==SCALE_TYPE.NORMAL) {
+			getMapContext().getViewPort().setEnvelope(extent);
+		}
+	}
+
+	public SCALE_TYPE getScaleType() {
+		return scaleType ;
+	}
+
+	public void setScaleType(SCALE_TYPE scaleType) {
+		this.scaleType = scaleType;
+	}
+
+	public void setScaleType(SCALE_TYPE scaleType, double fixedScale) {
+		if (scaleType == SCALE_TYPE.FIXED_SCALE) {
+			this.scaleType = scaleType;
+			this.fixedScale = new Double(fixedScale);
+			setScale(fixedScale);
+		}
+	}
+
+	public void setScaleType(SCALE_TYPE scaleType, Envelope fixedExtent) {
+		if (scaleType == SCALE_TYPE.FIXED_EXTENT) {
+			this.scaleType = scaleType;
+			this.fixedExtent  = fixedExtent;
+			setNewEnvelope(fixedExtent);
+		}
+	}
+
+	@Deprecated
+	public int getTypeScale() {
+		return AUTOMATICO;
+	}
+
+	@Deprecated
+	public void setLinked(boolean b) {}
+
+	@Deprecated
+	public boolean getLinked() {
+		return false;
+	}
+
+	public void windowActivated() {
+		if (isSelected()
+				&& getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class).length==1) {
+			// update the scale control whenever the panel window gets activated,
+			// as the control instance is shared for all the windows
+			updateScaleCtrl();
+		}
+
+	}
+
+	public void windowClosed() {
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePicture.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePicture.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFramePicture.java	(revision 590)
@@ -0,0 +1,445 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.ImagingOpException;
+import java.io.File;
+
+import javax.swing.ImageIcon;
+
+import com.sun.jimi.core.Jimi;
+
+import org.apache.batik.bridge.BridgeContext;
+import org.apache.batik.bridge.DocumentLoader;
+import org.apache.batik.bridge.GVTBuilder;
+import org.apache.batik.bridge.UserAgentAdapter;
+import org.apache.batik.bridge.ViewBox;
+import org.apache.batik.gvt.GraphicsNode;
+import org.apache.batik.gvt.renderer.StaticRenderer;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.svg.SVGDocument;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir una imagen en el Layout o para dibujar sobre el
+ * graphics un SVG.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFramePicture extends FFrame {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFramePicture";
+
+    private static final String PATH_FIELD = "path";
+    private static final String QUALITY_FIELD = "quality";
+    private static final String VIEWING_FIELD = "viewing";
+
+    protected static RenderingHints defaultRenderingHints;
+
+    static {
+        defaultRenderingHints = new RenderingHints(null);
+        defaultRenderingHints.put(RenderingHints.KEY_ANTIALIASING,
+            RenderingHints.VALUE_ANTIALIAS_ON);
+
+        defaultRenderingHints.put(RenderingHints.KEY_INTERPOLATION,
+            RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+    }
+
+    private static final int PRESENTACION = 0;
+    private static final int ACTIVO = 1;
+    private BufferedImage m_image = null;
+    private int m_quality = PRESENTACION;
+    private int m_viewing = ACTIVO;
+    private String m_path = null;
+    private boolean isSVG = false;
+    private StaticRenderer renderer = new StaticRenderer();
+    private Element elt;
+    private GVTBuilder gvtBuilder = new GVTBuilder();
+    private GraphicsNode gvtRoot = null;
+    private BridgeContext ctx;
+
+    /**
+     * Creates a new FFramePicture object.
+     */
+    public FFramePicture() {
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Imagen para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double r = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+
+        double x = r.getMinX();
+        double y = r.getMinY();
+        double w = r.getWidth();
+        double h = r.getHeight();
+
+        if (intersects(rv, r) || w != 0 || h != 0) {
+            if ((m_image == null) && !isSVG) { // Que no hay una imagen.
+                drawEmpty(g);
+            } else {
+                if ((rv == null) || (getQuality() == PRESENTACION)) {
+                    if (!isSVG) {
+                        double scalex = w / m_image.getWidth(null);
+                        double scaley = h / m_image.getHeight(null);
+                        try {
+                            AffineTransform xform =
+                                AffineTransform
+                                    .getScaleInstance(scalex, scaley);
+                            AffineTransform xpos =
+                                AffineTransform.getTranslateInstance(x, y);
+                            xpos.concatenate(xform);
+                            g.drawRenderedImage(m_image, xpos);
+                        } catch (ImagingOpException e) {
+                            NotificationManager.addError(
+                                "Dibujando FFramePicture", e);
+                        }
+                    } else
+                        if (isSVG) {
+                            try {
+                                if (r != null) {
+                                    drawSVG(g, r, rv);
+                                }
+                            } catch (OutOfMemoryError e) {
+                                NotificationManager.addError(
+                                    "Dibujando SVG FFramePicture", e);
+                            } catch (IllegalArgumentException e) {
+                                NotificationManager.addError(
+                                    "Dibujando SVG FFramePicture", e);
+                            }
+                        }
+                    System.gc();
+                } else {
+                    drawDraft(g);
+                }
+            }
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+    }
+
+    /**
+     * Dibuja SVG sobre el Graphics que se pasa como par�metro.
+     * 
+     * @param g
+     *            Graphics
+     * @param rect
+     *            rect�ngulo que ocupa.
+     * @param rv
+     *            Rect�ngulo que forma la parte visible del Layout.
+     */
+    private void drawSVG(Graphics2D g, Rectangle2D rect, Rectangle2D rv) {
+        if ((rv == null) || rv.contains(rect)) {
+            AffineTransform ataux = new AffineTransform();
+
+            ataux.translate(rect.getX(), rect.getY());
+
+            try {
+                ataux.concatenate(ViewBox.getViewTransform(null, elt,
+                    (float) rect.getWidth(), (float) rect.getHeight(), ctx));
+                gvtRoot.setTransform(ataux);
+            } catch (Exception e) {
+                // TODO: handle exception
+            }
+        } else {
+            AffineTransform ataux = new AffineTransform();
+
+            ataux.translate(rect.getX(), rect.getY());
+            ataux.concatenate(ViewBox.getViewTransform(null, elt,
+                (float) rect.getWidth(), (float) rect.getHeight(), ctx));
+
+            gvtRoot.setTransform(ataux);
+        }
+
+        RenderingHints renderingHints = defaultRenderingHints;
+        g.setRenderingHints(renderingHints);
+
+        if (gvtRoot != null) {
+            gvtRoot.paint(g);
+        }
+    }
+
+    /**
+     * Rellena la calidad seg�n el entero que se pasa como par�metro.
+     * 
+     * @param q
+     *            entero que representa el tipo de calidad elegido.
+     */
+    public void setQuality(int q) {
+        m_quality = q;
+    }
+
+    /**
+     * Devuelve la calidad que est� seleccionada.
+     * 
+     * @return entero que representa la calidad seleccionada.
+     */
+    public int getQuality() {
+        return m_quality;
+    }
+
+    /**
+     * Devuelve un entero que representa la forma en que se actualiza la vista.
+     * 
+     * @return forma que se actualiza la vista.
+     */
+    public int getViewing() {
+        return m_viewing;
+    }
+
+    /**
+     * Rellena la forma de actualizar la vista.
+     * 
+     * @param v
+     *            entero que representa la forma de actualizar la vista.
+     */
+    public void setViewing(int v) {
+        m_viewing = v;
+    }
+
+    /**
+     * Rellena el nombre de la imagen.
+     * 
+     * @param path
+     *            nombre de la imagen.
+     */
+    public void setPath(String path) {
+        m_path = path;
+    }
+
+    /**
+     * Devuelve la ruta del fichero.
+     * 
+     * @return String
+     */
+    public String getPath() {
+        return m_path;
+    }
+
+    /**
+     * Rellena la imagen.
+     * 
+     * @param image
+     */
+    public void setImage(BufferedImage image) {
+        m_image = image;
+    }
+
+    /**
+     * Devuelve la dimensi�n dela imagen.
+     * 
+     * @param file
+     *            Nombre del fichero donde se encuentra la imagen.
+     * 
+     * @return DOCUMENT ME!
+     */
+    public Dimension getBound(String file) {
+        Image img = load(file);
+
+        if (isSVG) {
+            return new Dimension(100, 100);
+        }
+
+        if (img == null) {
+            return new Dimension((int) getBoundingBox(null).getWidth(),
+                (int) getBoundingBox(null).getHeight());
+        }
+
+        return new Dimension(img.getWidth(null), img.getHeight(null));
+    }
+
+    /**
+     * Carga el contnido del fichero.
+     * 
+     * @param file
+     *            Nombre del fichero a cargar.
+     * 
+     * @return Imagen
+     */
+    public Image load(String file) {
+        if (file == null) {
+            return null;
+        }
+        ImageIcon tmpIcon = null;
+        File f = new File(file);
+        if (file == null || !f.exists()) {
+            return null;
+        }
+        setPath(file);
+        String iString = file.toLowerCase();
+
+        if (iString.endsWith("jpg") || iString.endsWith("jpeg")
+            || iString.endsWith("gif")) {
+            tmpIcon = new ImageIcon(Jimi.getImage(file, Jimi.VIRTUAL_MEMORY)); // ((File)main.allImages.elementAt(x)).getAbsolutePath());
+        } else
+            if (iString.endsWith("png") || iString.endsWith("tif")
+                || iString.endsWith("ico") || iString.endsWith("xpm")
+                || iString.endsWith("bmp")) {
+                tmpIcon =
+                    new ImageIcon(Jimi.getImage(file, Jimi.VIRTUAL_MEMORY)); // new
+                                                                             // ImageIcon(f.getPath());
+            } else
+                if (iString.endsWith("svg")) {
+                    isSVG = true;
+                    obtainStaticRenderer(new File(file));
+                } else {
+                    tmpIcon = new ImageIcon(file);
+                }
+
+        if (!isSVG && (tmpIcon != null)) {
+            Image image = tmpIcon.getImage();
+
+            if (image.getWidth(null) == -1 || image.getHeight(null) == -1) {
+                NotificationManager.showMessageError(
+                    PluginServices.getText(this, "unsupported_format"),
+                    new Exception());
+                return null;
+            }
+
+            BufferedImage bi =
+                new BufferedImage(image.getWidth(null), image.getHeight(null),
+                    BufferedImage.TYPE_INT_ARGB);
+            Graphics2D biContext = bi.createGraphics();
+            biContext.drawImage(image, 0, 0, null);
+
+            setImage(bi);
+
+            return image;
+        }
+
+        return null;
+    }
+
+    /**
+     * Obtiene el renderer para svg a partir del svg.
+     * 
+     * @param file
+     *            Nombre del fichero.
+     */
+    private void obtainStaticRenderer(File file) {
+        try {
+            UserAgentAdapter userAgent = new UserAgentAdapter();
+            DocumentLoader loader = new DocumentLoader(userAgent);
+            BridgeContext ctx = new BridgeContext(userAgent, loader);
+            Document svgDoc = loader.loadDocument(file.toURI().toString());
+            gvtRoot = gvtBuilder.build(ctx, svgDoc);
+            renderer.setTree(gvtRoot);
+            elt = ((SVGDocument) svgDoc).getRootElement();
+            ctx = new BridgeContext(userAgent, loader);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "imagen") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    public void initialize() {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void cloneActions(IFFrame frame) {
+        m_image = null;
+    }
+
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes properties) {
+        draw(g, at, null, null);
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFramePicture.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFramePicture persistence definition", null, null);
+
+            definition.extend(manager
+                .getDefinition(FFrame.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldString(PATH_FIELD).setMandatory(true);
+            definition.addDynFieldInt(QUALITY_FIELD).setMandatory(true);
+            definition.addDynFieldInt(VIEWING_FIELD).setMandatory(true);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        m_path = state.getString(PATH_FIELD);
+        m_quality = state.getInt(QUALITY_FIELD);
+        m_viewing = state.getInt(VIEWING_FIELD);
+        load(m_path);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(PATH_FIELD, m_path);
+        state.set(QUALITY_FIELD, m_quality);
+        state.set(VIEWING_FIELD, m_viewing);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBar.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBar.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameScaleBar.java	(revision 590)
@@ -0,0 +1,1356 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.text.NumberFormat;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.Attributes;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * FFrame para introducir una barra de escala en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameScaleBar extends AbstractFFrameViewDependence implements
+    IFFrameViewDependence {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "FFrameScaleBar";
+
+    private static final String BINTERNALSET_FIELD = "bIntervalSet";
+    private static final String DIF_FIELD = "dif";
+    private static final String HASLEFT_FIELD = "hasleft";
+    private static final String NAMEUNIT_FIELD = "nameUnit";
+    private static final String NUMUNIT_FIELD = "numUnit";
+    private static final String HEIGHT_FIELD = "height";
+    private static final String STYLE_FIELD = "style";
+    private static final String UNITS_FIELD = "units";
+    private static final String INTERVAL_FIELD = "interval";
+    private static final String NUMINTERVAL_FIELD = "numinterval";
+    private static final String NUMLEFT_FIELD = "numleft";
+    private static final String MAPUNITS_FIELD = "mapUnits";
+    private static final String FONT_FIELD = "font";
+    private static final String NUMDEC_FIELD = "numDec";
+    private static final String BARCOLOR_FIELD = "barcolor";
+    private static final String TEXTCOLOR_FIELD = "textcolor";
+    private static final String SHOWNAMEUNITS_FIELD = "showNameUnits";
+    private static final String SHOWDESCRIPTION_FIELD = "showDescription";
+    private static final String ABOVENAME_FIELD = "aboveName";
+    private static final String ABOVEINTERVALS_FIELD = "aboveIntervals";
+    private static final String ABOVEDESCRIPTION_FIELD = "aboveDescription";
+
+    private static final int NUMERO = 0;
+    private static final int BARRA1 = 1;
+    private static final int BARRA2 = 2;
+    private static final int BARRA3 = 3;
+    private static final int BARRA4 = 4;
+    private double DIFDOWN = 1.5;
+    private double DIFL = 30;
+    private double DIFR = 30;
+    private double DIFUP = 10;
+    private boolean m_bIntervalSet = false;
+    private int m_style = NUMERO;
+    private int m_units = 1; // Metros
+    private int m_mapUnits = 1; // unidad de medida de la vista(Metros)
+    private double m_interval = 1;
+    private int m_numinterval = 3;
+    private int m_numleft = 2;
+    private double m_height = 0;
+    private double m_typeUnit = Attributes.getConversionFactorToCm(1); // METROS;
+    private String m_nameUnit = null;
+    private double m_numUnit = 0;
+    private double m_dif = 1;
+    private int m_hasleft = 0;
+    private Font m_font = new Font("SansSerif", Font.PLAIN, 9);
+    private Color barcolor = Color.black;
+    private Color textcolor = Color.black;
+    private boolean showNameUnits = true;
+    private boolean showDescription = false;
+    private boolean aboveName = false;
+    private boolean aboveIntervals = true;
+    private boolean aboveDescription = false;
+    private int numDec = 0;
+    public static NumberFormat numberFormat = NumberFormat.getInstance();
+
+    /**
+     * Creates a new FFrameScaleBar object.
+     */
+    public FFrameScaleBar() {
+
+    }
+
+    public void refreshDependence(IFFrame fant, IFFrame fnew) {
+        super.refreshDependence(fant, fnew);
+        if (fframeViewDependence != null) {
+            setMapUnits(fframeViewDependence.getMapUnits());
+            setHeight(fnew.getBoundBox().height);
+        }
+    }
+
+    public void setFFrameDependence(IFFrame f) {
+        super.setFFrameDependence(f);
+        if (fframeViewDependence == null) {
+            return;
+        }
+        setMapUnits(fframeViewDependence.getMapUnits());
+        setHeight(f.getBoundBox().height);
+    }
+
+    /**
+     * Devuelve el FMap de la vista que se representa en la escala.
+     * 
+     * @return FMap.
+     */
+    public MapContext getFMap() {
+        return fframeViewDependence.getMapContext();
+    }
+
+    /**
+     * Rellenar el estilo de barra de escala que se elige.
+     * 
+     * @param s
+     *            entero que representa el tipo de barra seleccionada.
+     */
+    public void setStyle(int s) {
+        m_style = s;
+    }
+
+    /**
+     * Devuelve el tipo de escala a dibujar.
+     * 
+     * @return entero.
+     */
+    public int getStyle() {
+        return m_style;
+    }
+
+    /**
+     * Rellenar el tama�o de un intervalo.
+     * 
+     * @param s
+     *            tama�o de un intervalo.
+     */
+    public void setInterval(double s) {
+        m_interval = s;
+
+        if (m_numleft != 0) {
+            m_hasleft = 1;
+        }
+
+        Rectangle2D.Double rect = getBoundBox();
+        double difL = (rect.width / DIFL);
+        double difR = (rect.width / DIFR);
+        double n = (rect.width - difL - difR);
+        m_numUnit = (m_interval * m_typeUnit) / getScaleView();
+        m_numinterval = (int) (n / m_numUnit) - m_hasleft;
+        m_dif = 1;
+    }
+
+    /**
+     * Devuelve el valor del intervalo.
+     * 
+     * @return long.
+     */
+    public String obtainInterval() {
+        if (fframeViewDependence != null) {
+            Rectangle2D.Double rect = getBoundBox();
+
+            if (m_numleft != 0) {
+                m_hasleft = 1;
+            }
+
+            double difL = (rect.width / DIFL);
+            double difR = (rect.width / DIFR);
+            double n = (rect.width - difL - difR);
+            m_numUnit = n / (m_numinterval + m_hasleft);
+
+            double scaleXunit = (m_numUnit * getScaleView()) / m_typeUnit;
+            m_dif = getExact(scaleXunit);
+            m_numUnit = m_numUnit * m_dif;
+            m_interval = scaleXunit;
+
+            // /m_interval = (scaleXunit * m_dif);
+            return format(m_interval);
+        }
+
+        return "0";
+    }
+
+    /**
+     * Rellenar el n�mero de intervalos.
+     * 
+     * @param s
+     *            n�mero de intervalos.
+     */
+    public void setNumInterval(int s) {
+        m_numinterval = s;
+
+        if (m_numleft != 0) {
+            m_hasleft = 1;
+        }
+
+        Rectangle2D.Double rect = getBoundBox();
+        double difL = (rect.width / DIFL);
+        double difR = (rect.width / DIFR);
+        double n = (rect.width - difL - difR);
+        m_numUnit = n / (m_numinterval + m_hasleft);
+
+        double scaleXunit = (m_numUnit * getScaleView()) / m_typeUnit;
+        m_dif = getExact(scaleXunit);
+        m_numUnit = m_numUnit * m_dif;
+        m_interval = (scaleXunit * m_dif);
+    }
+
+    /**
+     * Devuelve el n�mero de intervalos por encima del cero.
+     * 
+     * @return entero.
+     */
+    public int getNumInterval() {
+        return m_numinterval;
+    }
+
+    /**
+     * Rellenar el n�mero de intervalos a la izquierda del cero.
+     * 
+     * @param s
+     *            n�mero de intervalos a la izquierda.
+     */
+    public void setNumLeft(int s) {
+        m_numleft = s;
+        if (m_numleft != 0) {
+            m_hasleft = 1;
+        } else {
+            m_hasleft = 0;
+        }
+    }
+
+    /**
+     * Devuelve el n�mero de intervalos en los que se quiere particionar el
+     * intervalo que se queda por debajo del cero.
+     * 
+     * @return entero.
+     */
+    public int getNumLeft() {
+        return m_numleft;
+    }
+
+    /**
+     * Seleccionar ,a true, si se quiere o, a false, si no mantener los
+     * intervalos.
+     * 
+     * @param b
+     *            boolean a true si se quiere mantener los intervalos.
+     */
+    public void setIntervalSet(boolean b) {
+        m_bIntervalSet = b;
+    }
+
+    /**
+     * Seleccionar la unidad de medida a representar en la barra de escala.
+     * 
+     * @param s
+     *            entero que representa la unidad de medida que se selecciona.
+     */
+    public void setUnits(int s) {
+        m_units = s;
+        m_typeUnit = Attributes.getConversionFactorToCm(s);
+        m_nameUnit =
+            PluginServices.getText(this, MapContext.getDistanceNames()[s]);
+    }
+
+    /**
+     * Devuelve un entero que representa el tipo de unidades que representamos.
+     * 
+     * @return entero.
+     */
+    public int getUnits() {
+        return m_units;
+    }
+
+    /**
+     * Devuelve el long que representa el intervalo.
+     * 
+     * @return Intervalo.
+     */
+    public String getInterval() {
+        return format(m_interval);
+    }
+
+    /**
+     * Rellenar el rect�ngulo de la vista sobre la que se obtiene la escala.
+     * 
+     * @param d
+     *            Rect�ngulo.
+     */
+    public void setHeight(double d) {
+        m_height = d;
+    }
+
+    /**
+     * Rellena la unidad de medida en la que est� la vista.
+     * 
+     * @param i
+     *            entero que representa la unidad de medida de la vista.
+     */
+    public void setMapUnits(int i) {
+        m_mapUnits = i;
+    }
+
+    /**
+     * Devuelve la escala de la vista seleccionada.
+     * 
+     * @return la escala de la vista.
+     */
+    private long getScaleView() {
+        if (fframeViewDependence == null) {
+            return 1;
+        }
+
+        return fframeViewDependence.getScale();
+    }
+
+    /**
+     * M�todo que dibuja sobre el graphics que se le pasa como par�metro, seg�n
+     * la transformada afin que se debe de aplicar y el rect�ngulo que se debe
+     * de dibujar.
+     * 
+     * @param g
+     *            Graphics
+     * @param at
+     *            Transformada afin.
+     * @param rv
+     *            rect�ngulo sobre el que hacer un clip.
+     * @param imgBase
+     *            Image para acelerar el dibujado.
+     */
+    public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+        BufferedImage imgBase) {
+        Rectangle2D.Double r = getBoundingBox(at);
+        g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+
+        if (intersects(rv, r)) {
+            if ((fframeViewDependence == null)
+                || (fframeViewDependence.getMapContext() == null)) {
+                drawEmpty(g);
+            } else {
+                switch (m_style) {
+                case (NUMERO):
+
+                    double scalex = r.getWidth() / (8);
+
+                    if (scalex > (r.getHeight() / (8))) {
+                        scalex = r.getHeight() / (2);
+                    }
+
+                    g.setColor(textcolor);
+
+                    if (m_font != null) {
+                        m_font =
+                            new Font(m_font.getFontName(), m_font.getStyle(),
+                                (int) (scalex));
+                        g.setFont(m_font);
+                    }
+
+                    FontMetrics fm = g.getFontMetrics();
+                    double d = r.getWidth();
+                    long scl = getScaleView();
+                    if (scl < 1) {
+                        String unknowScale =
+                            PluginServices.getText(this, "escala_desconocida");
+                        if (fm.stringWidth(unknowScale) > (d * 0.8)) {
+                            double dif =
+                                fm.stringWidth(unknowScale) / (d * 0.8);
+                            m_font =
+                                new Font(m_font.getName(), m_font.getStyle(),
+                                    (int) (m_font.getSize() / dif));
+                            g.setFont(m_font);
+                        }
+                        g.drawString(unknowScale, (int) r.x,
+                            (int) (r.y + (r.height / 2)));
+                        return;
+                    }
+                    String scale = " 1:" + scl;
+
+                    if (fm.stringWidth(String.valueOf(m_interval)) > (d * 0.8)) {
+                        double dif =
+                            fm.stringWidth(String.valueOf(m_interval))
+                                / (d * 0.8);
+                        m_font =
+                            new Font(m_font.getName(), m_font.getStyle(),
+                                (int) (m_font.getSize() / dif));
+                        g.setFont(m_font);
+                    }
+
+                    g.drawString(scale, (int) r.x, (int) (r.y + (r.height / 2)));
+
+                    break;
+
+                case (BARRA1):
+                case (BARRA2):
+                case (BARRA3):
+                case (BARRA4):
+                    drawBar(m_style, g, at);
+
+                    break;
+                }
+            }
+        }
+
+        g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+            + (r.height / 2));
+    }
+
+    /**
+     * Rellena con el rect�ngulo que se pasa como par�metro el boundBox(en
+     * cent�metros) del fframe del cual con una transformaci�n se podr�
+     * calcular el BoundingBox (en pixels).
+     * 
+     * @param r
+     *            Rect�ngulo en cent�metros.
+     */
+    public void setBoundBox(Rectangle2D.Double r) {
+        if ((m_numUnit < 1) || (fframeViewDependence == null)
+            || (fframeViewDependence.getMapContext() == null)) {
+            super.setBoundBox(r);
+
+            return;
+        }
+
+        double difL = (r.width / DIFL);
+        double difR = (r.width / DIFR);
+
+        if (m_bIntervalSet) {
+            m_numinterval =
+                (int) (((r.width - (difL + difR)) * m_dif) / m_numUnit)
+                    - m_hasleft;
+        }
+
+        if (m_numinterval < 1) {
+            m_numinterval = 1;
+            r.width = ((m_numinterval + m_hasleft) * m_numUnit) + difL + difR;
+        }
+
+        getBoundBox().setRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());
+    }
+
+    /**
+     * Dibuja sobre el Graphics la escala gr�fica.
+     * 
+     * @param type
+     *            Tipo de barra.
+     * @param g
+     *            Graphics sobre el que dibujar.
+     * @param at
+     *            Matriz de transformaci�n.
+     */
+    private void drawBar(int type, Graphics2D g, AffineTransform at) {
+        Rectangle2D.Double rect = getBoundBox();
+        Rectangle2D.Double r = getBoundingBox(at);
+        double numleft = m_numleft;
+        initDistances();
+        // drawOrder(g,r);
+        double difDown = (rect.height / DIFDOWN);
+        double difUp = (rect.height / DIFUP);
+        double difL = (rect.width / DIFL);
+        double difR = (rect.width / DIFR);
+        double n = (rect.width - difL - difR);
+
+        // setDescripcion("escala 1:" + String.valueOf(fframeview.getScale()));
+        g.setStroke(new BasicStroke(0));
+
+        if (!m_bIntervalSet) {
+            m_numUnit = n / (m_numinterval + m_hasleft);
+
+            double scaleXunit = (m_numUnit * getScaleView()) / m_typeUnit;
+            m_dif = getExact(scaleXunit);
+            m_numUnit = m_numUnit * m_dif;
+            m_interval = (scaleXunit * m_dif);
+        }
+
+        if (m_bIntervalSet) {
+            m_numUnit = (m_interval * m_typeUnit) / (m_dif * getScaleView());
+            m_numinterval =
+                (int) (((rect.width - (difL + difR)) * m_dif) / m_numUnit)
+                    - m_hasleft;
+        }
+
+        if (m_numinterval < 1) {
+            m_numinterval = 1;
+            rect.width =
+                ((m_numinterval + m_hasleft) * m_numUnit) + difL + difR;
+        }
+
+        double h = 0;
+
+        if (type == BARRA1) {
+            h = (rect.height - (difUp + difDown));
+        } else
+            if ((type == BARRA2) || (type == BARRA3)) {
+                h = (rect.height - (difUp + difDown)) / 2;
+            }
+
+        // Dibujar el rect�ngulo que bordea todo.
+        Rectangle2D.Double rectotal =
+            (FLayoutUtilities.fromSheetRect(new Rectangle2D.Double(
+                (rect.x + difL), (rect.y + difUp), m_numUnit
+                    * (m_hasleft + m_numinterval), h), at));
+        g.setColor(barcolor);
+        g.fillRect((int) rectotal.x, (int) rectotal.y, (int) (rectotal.width),
+            (int) rectotal.height);
+        g.setColor(Color.white);
+        g.fillRect((int) rectotal.x + 2, (int) rectotal.y + 2,
+            (int) (rectotal.width - 3), (int) rectotal.height - 4);
+        g.setColor(barcolor);
+
+        if (m_font != null) {
+            m_font =
+                new Font(m_font.getFontName(), m_font.getStyle(),
+                    (int) (r.getHeight() / 4));
+        } else {
+            m_font =
+                new Font("SansSerif", Font.PLAIN, (int) (r.getHeight() / 4));
+        }
+
+        g.setFont(m_font);
+        Double interval = new Double(m_interval);
+        if (interval.isNaN()) {
+            String unknowScale =
+                PluginServices.getText(this, "escala_desconocida");
+            FontMetrics fm = g.getFontMetrics();
+            double d = r.getWidth();
+            if (fm.stringWidth(unknowScale) > (d * 0.8)) {
+                double dif = fm.stringWidth(unknowScale) / (d * 0.8);
+                m_font =
+                    new Font(m_font.getName(), m_font.getStyle(),
+                        (int) (m_font.getSize() / dif));
+                g.setFont(m_font);
+            }
+            g.drawString(unknowScale, (int) r.x, (int) (r.y + (r.height / 2)));
+            return;
+        }
+
+        FontMetrics fm = g.getFontMetrics();
+        String formatInterval = format(m_interval);
+        double d = (rectotal.getWidth() / m_numinterval) + m_hasleft;
+        double difpos = ((r.getHeight() / 4) * formatInterval.length()) / 4;
+
+        if (fm.stringWidth(formatInterval) > (d * 0.7)) {
+            double dif = fm.stringWidth(formatInterval) / (d * 0.7);
+            difpos = (d * 0.7) / 2;
+            m_font =
+                new Font(m_font.getName(), m_font.getStyle(),
+                    (int) (m_font.getSize() / dif));
+            g.setFont(m_font);
+        }
+
+        // Derecha del cero
+        for (int i = 0; i < m_numinterval; i++) {
+            Rectangle2D.Double recder =
+                FLayoutUtilities.fromSheetRect(new Rectangle2D.Double((rect.x
+                    + (difL) + ((m_numUnit * i) + (m_hasleft * m_numUnit))),
+                    (rect.y + (difUp)), (m_numUnit),
+                    (rect.height - (difUp + difDown)) / 2), at);
+            Rectangle2D.Double recderB =
+                FLayoutUtilities.fromSheetRect(new Rectangle2D.Double((rect.x
+                    + (difL) + ((m_numUnit * i) + (m_hasleft * m_numUnit))),
+                    (rect.y + difUp) + ((rect.height - (difUp + difDown)) / 2),
+                    (m_numUnit), ((rect.height - (difUp + difDown)) / 2)), at);
+
+            // Correcci�n cuando la altura en pixels del rect�ngulo es impar.
+            rectotal.y = recder.y;
+            recderB.height = rectotal.height - recder.height + 0.5;
+
+            /**
+             * if (i == (m_numinterval - 1)) { if (recder.getMaxX() !=
+             * rectotal.getMaxX()) { recder.width = (recder.width +
+             * recder.getMaxX()) - rectotal.getMaxX(); } if (recderB.getMaxX()
+             * != rectotal.getMaxX()) { recderB.width = (recderB.width +
+             * recderB.getMaxX()) - rectotal.getMaxX(); }} if
+             * (recderB.getMaxY() != rectotal.getMaxY()) { recderB.height =
+             * (recderB.height + recderB.getMaxY()) - rectotal.getMaxY(); }
+             */
+            if ((m_numleft % 2) == 0) {
+                if ((i % 2) == 0) {
+                    if ((type == BARRA1) || (type == BARRA2)) {
+                        fillRect(g, recder);
+                    } else
+                        if (type == BARRA3) {
+                            g.drawRect((int) recder.x, (int) recder.y,
+                                (int) recder.width, (int) recder.height);
+                        }
+                } else
+                    if (type == BARRA1) {
+                        fillRect(g, recderB);
+                    }
+            } else {
+                if ((i % 2) != 0) {
+                    if ((type == BARRA1) || (type == BARRA2)) {
+                        fillRect(g, recder);
+                    } else
+                        if (type == BARRA3) {
+                            g.drawRect((int) recderB.x, (int) recderB.y,
+                                (int) recderB.width, (int) recderB.height);
+                        }
+                } else
+                    if (type == BARRA1) {
+                        fillRect(g, recderB);
+                    }
+            }
+
+            String interString = format(m_interval * i);
+            Point2D.Double p = null;
+
+            if (isAboveIntervals()) {
+                p =
+                    new Point2D.Double(recder.x - difpos, r.getMinY()
+                        + (r.getHeight() / DIFUP));
+            } else {
+                p =
+                    new Point2D.Double(recder.x - difpos,
+                        ((r.getHeight() / 4) + r.getMaxY())
+                            - (r.getHeight() / DIFDOWN));
+            }
+
+            // Para dibujar el 0 centrado en su sitio.
+            if (i == 0) {
+                double dif0 = recder.x - (fm.stringWidth(interString) / 2);
+                p = new Point2D.Double(dif0, p.getY());
+            }
+
+            drawInterval(g, interString, p);
+        }
+
+        // �ltimo n�mero a dibujar.
+        String interString = format(m_interval * m_numinterval);
+
+        Point2D.Double p = null;
+
+        if (isAboveIntervals()) {
+            p =
+                new Point2D.Double(rectotal.getMaxX() - difpos, r.getMinY()
+                    + (r.getHeight() / DIFUP));
+        } else {
+            p =
+                new Point2D.Double(rectotal.getMaxX() - difpos,
+                    ((r.getHeight() / 4) + r.getMaxY())
+                        - (r.getHeight() / DIFDOWN));
+        }
+
+        drawInterval(g, interString, p);
+
+        // Izquierda del cero
+        for (int i = 0; i < m_numleft; i++) {
+            Rectangle2D.Double reciz =
+                FLayoutUtilities.fromSheetRect(new Rectangle2D.Double((rect.x
+                    + difL + ((m_numUnit / m_numleft) * i)), (rect.y + difUp),
+                    (m_numUnit / numleft),
+                    (rect.height - (difUp + difDown)) / 2), at);
+            Rectangle2D.Double recizB =
+                FLayoutUtilities.fromSheetRect(new Rectangle2D.Double((rect.x
+                    + difL + ((m_numUnit / m_numleft) * i)), (rect.y + difUp)
+                    + ((rect.height - (difUp + difDown)) / 2),
+                    (m_numUnit / numleft),
+                    ((rect.height - (difUp + difDown)) / 2)), at);
+
+            // Correcci�n cuando la altura en pixels del rectangulo es impar.
+            reciz.y = rectotal.y;
+            recizB.height = rectotal.height - reciz.height + 0.5;
+
+            if ((i % 2) == 0) {
+                if ((type == BARRA1) || (type == BARRA2)) {
+                    fillRect(g, reciz);
+                } else
+                    if (type == BARRA3) {
+                        g.drawRect((int) reciz.x, (int) reciz.y,
+                            (int) reciz.width, (int) reciz.height);
+                    }
+            } else
+                if (type == BARRA1) {
+                    fillRect(g, recizB);
+                }
+        }
+
+        if (m_numleft > 0) {
+            interString = format(m_interval);
+
+            if (isAboveIntervals()) {
+                p =
+                    new Point2D.Double(rectotal.x - difpos, r.getMinY()
+                        + (r.getHeight() / DIFUP));
+            } else {
+                p =
+                    new Point2D.Double(rectotal.x - difpos,
+                        ((r.getHeight() / 4) + r.getMaxY())
+                            - (r.getHeight() / DIFDOWN));
+            }
+
+            drawInterval(g, interString, p);
+        }
+
+        // En el caso de que se pida como n�mro de intervalos a la izquierda del
+        // 0, se reajusta el tama�o del rect�ngulo exterior de la escala
+        // gr�fica.
+        if (m_numleft == 0) {
+            Rectangle2D.Double recAux =
+                FLayoutUtilities
+                    .fromSheetRect(new Rectangle2D.Double(
+                        (rect.x + difL + ((m_numUnit / 1) * 0)),
+                        (rect.y + difUp), (m_numUnit / 1),
+                        (rect.height - (difUp + difDown)) / 2), at);
+            rectotal.x = rectotal.x + recAux.width;
+            rectotal.width = rectotal.width - recAux.width;
+        }
+
+        // Se dibuja el rect�ngulo que bordea toda la escala gr�fica.
+        g.drawRect((int) rectotal.x, (int) rectotal.y, (int) (rectotal.width),
+            (int) rectotal.height);
+
+        drawNameUnitsAndDescriptions(g, r);
+        // drawDescription(g, r);
+    }
+
+    /**
+     * Inicializa las distancias de la barra de escala.
+     */
+    private void initDistances() {
+        int numUp = 0;
+        int numDown = 0;
+
+        DIFDOWN = 30;
+        DIFL = 40;
+        DIFR = 40;
+        DIFUP = 30;
+
+        if (isAboveName()) {
+            numUp++;
+        } else {
+            numDown++;
+        }
+
+        if (isAboveIntervals()) {
+            numUp++;
+        } else {
+            numDown++;
+        }
+
+        if (isAboveDescription()) {
+            numUp++;
+        } else {
+            numDown++;
+        }
+
+        if (numDown == 1) {
+            DIFDOWN = 3;
+        } else
+            if (numDown == 2) {
+                DIFDOWN = 2;
+            } else
+                if (numDown == 3) {
+                    DIFDOWN = 1.2;
+                }
+
+        if (numUp == 1) {
+            DIFUP = 3;
+        } else
+            if (numUp == 2) {
+                DIFUP = 2;
+            } else
+                if (numUp == 3) {
+                    DIFUP = 1.2;
+                }
+    }
+
+    /**
+     * Dibuja sobre el Graphics el nombre de la unidad de medida de la escala y
+     * la descripci�n,
+     * siendo por defecto la escala 1:.
+     * 
+     * @param g
+     *            Graphics sobre el que se dibuja.
+     * @param rec
+     *            Rect�ngulo que ocupa la escala gr�fica.
+     */
+    private void drawNameUnitsAndDescriptions(Graphics g, Rectangle2D.Double rec) {
+        FontMetrics fm = g.getFontMetrics();
+        Point2D.Double pD = null;
+        Point2D.Double pU = null;
+        g.setColor(textcolor);
+        switch (getFormat()) {
+        case DUIB:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 3) + (fm.getHeight() / 2)));
+
+            break;
+        case DUBI:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 3) + (fm.getHeight() / 2)));
+            break;
+        case DBIU:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+            break;
+        case DIBU:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+            break;
+        case UIBD:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            break;
+        case UBID:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMinY()
+                    + (rec.getHeight() / 9) + (fm.getHeight() / 2)));
+            break;
+        case IBUD:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 3) + (fm.getHeight() / 3)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+
+            break;
+        case BIUD:
+            pD =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(getDescription()) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 3) + (fm.getHeight() / 3)));
+            pU =
+                new Point2D.Double(rec.getCenterX()
+                    - (fm.stringWidth(m_nameUnit) / 2), (rec.getMaxY()
+                    - (rec.getHeight() / 9) + (fm.getHeight() / 3)));
+            break;
+        }
+        if (isShowNameUnits()) {
+            g.drawString(m_nameUnit, (int) pU.x, (int) pU.y);
+        }
+        if (isShowDescription()) {
+            g.drawString(getDescription(), (int) pD.x, (int) pD.y);
+        }
+    }
+
+    /**
+     * Rellena la fuente utilizada para dibujar los intervalos y la unidad de
+     * medida utilizada.
+     * 
+     * @param f
+     *            fuente a utilizar.
+     */
+    public void setFont(Font f) {
+        m_font = f;
+    }
+
+    /**
+     * Devuelve la fuente con la que se est� dibujando sobre el graphics.
+     * 
+     * @return fuente utilizada.
+     */
+    public Font getFont() {
+        return new Font(m_font.getFontName(), m_font.getStyle(), 9);
+    }
+
+    /**
+     * Devuelve si el intervalo es variable o si por el contrario es fijo.
+     * 
+     * @return true si el intervalo es fijo.
+     */
+    public boolean isbIntervalSet() {
+        return m_bIntervalSet;
+    }
+
+    /**
+     * Especificar si el intervalo se debe mantener o es variable.
+     * 
+     * @param b
+     *            si se quiere mantener el intervalo especificado.
+     */
+    public void setbIntervalSet(boolean b) {
+        m_bIntervalSet = b;
+    }
+
+    /**
+     * Devuelve el porcentaje por el cual hay que multiplicar el intervalo
+     * para conseguir un intervalo redondeado, de momento con una cifra
+     * significativas(NUM=1).
+     * 
+     * @param total
+     *            intervalo.
+     * 
+     * @return Porcentaje
+     */
+    private double getExact(double total) {
+        int NUM = 1;
+        double t = 0;
+        double dif = 1;
+        Double d = new Double(total);
+        Long l = new Long(d.longValue());
+        int num = l.toString().length();
+        t =
+            ((long) (total / Math.pow(10, num - NUM)) * Math.pow(10, num - NUM));
+        dif = t / total;
+
+        if (dif == 0) {
+            return 1;
+        }
+
+        return dif;
+    }
+
+    /**
+     * Rellena un rect�ngulo.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     * @param r
+     *            Rect�ngulo a rellenar.
+     */
+    private void fillRect(Graphics2D g, Rectangle2D.Double r) {
+        g.fillRect((int) r.x, (int) r.y, (int) r.width, (int) r.height);
+    }
+
+    /**
+     * Escribe sobre el Graphics y en la posici�n indicada el tama�o del
+     * intervalo.
+     * 
+     * @param g
+     *            Graphics sobre el que dibujar.
+     * @param inter
+     *            Valor del intervalo.
+     * @param p
+     *            Punto donde dibujarlo.
+     */
+    private void drawInterval(Graphics2D g, String inter, Point2D.Double p) {
+        // Double l = new Double(inter);
+        g.setColor(textcolor);
+        g.drawString(inter, (int) p.x, (int) p.y);
+        g.setColor(barcolor);
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#getNameFFrame()
+     */
+    public String getNameFFrame() {
+        return PluginServices.getText(this, "escala") + num;
+    }
+
+    public String getName() {
+        return PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Inserta el color de la escala gr�fica.
+     * 
+     * @param color
+     *            Color de la escala gr�fica.
+     */
+    public void setBarColor(Color color) {
+        barcolor = color;
+    }
+
+    /**
+     * Inserta el color del texto.
+     * 
+     * @param color
+     *            Color del texto.
+     */
+    public void setTextColor(Color color) {
+        textcolor = color;
+    }
+
+    /**
+     * Devuelve el color de la escala gr�fica.
+     * 
+     * @return Color de la escala gr�fica.
+     */
+    public Color getBarColor() {
+        return barcolor;
+    }
+
+    /**
+     * Devuelve el color del texto.
+     * 
+     * @return Color del texto.
+     */
+    public Color getTextColor() {
+        return textcolor;
+    }
+
+    /**
+     * Devuelve true si se debe mostrar el nombre de las unidades de medida de
+     * la escala gr�fica.
+     * 
+     * @return True si se muestra las unidades de medida.
+     */
+    public boolean isShowNameUnits() {
+        return showNameUnits;
+    }
+
+    /**
+     * Inserta si se debe de mostrar el nombre de las unidades de medida o no.
+     * 
+     * @param showNameUnits
+     *            True si se muestra el nombre de las unidades de
+     *            medida.
+     */
+    public void setShowNameUnits(boolean showNameUnits) {
+        this.showNameUnits = showNameUnits;
+    }
+
+    /**
+     * Devuelve true si se muestra la descripci�n a la parte de arriba de la
+     * escala gr�fica.
+     * 
+     * @return True si se muestra arriba de la escala gr�fica.
+     */
+    public boolean isAboveDescription() {
+        return aboveDescription;
+    }
+
+    /**
+     * Introduce true si se muestra arriba de la escala gr�fica la descripci�n.
+     * 
+     * @param aboveDescription
+     *            True si se muestra arriba la descripci�n.
+     */
+    public void setAboveDescription(boolean aboveDescription) {
+        this.aboveDescription = aboveDescription;
+    }
+
+    /**
+     * Devuelve true si se muestran a la parte de arriba los valores de los
+     * intervalos.
+     * 
+     * @return True si se muestran arriba de la escala gr�fica.
+     */
+    public boolean isAboveIntervals() {
+        return aboveIntervals;
+    }
+
+    /**
+     * Inserta si se muestran los valores de los intervalos a la parte de
+     * arriba de la escala o debajo.
+     * 
+     * @param aboveIntervals
+     *            True si se muestran los valores de los intervalos
+     *            a la parte de arriba de la escala gr�fica.
+     */
+    public void setAboveIntervals(boolean aboveIntervals) {
+        this.aboveIntervals = aboveIntervals;
+    }
+
+    /**
+     * Devuelve si se muestra a la parte de arriba de la escala gr�fica el
+     * nombre de las unidades de medida o debajo.
+     * 
+     * @return True si se muestra a la parte de arriba de la escala gr�fica.
+     */
+    public boolean isAboveName() {
+        return aboveName;
+    }
+
+    /**
+     * Inserta si el nombre se muestra a la parte de arriba de la escala
+     * gr�fica o a la parte de abajo.
+     * 
+     * @param aboveName
+     *            True si se muestra a la parte de arriba de la escala
+     *            gr�fica.
+     */
+    public void setAboveName(boolean aboveName) {
+        this.aboveName = aboveName;
+    }
+
+    /**
+     * Devuelve si se debe mostrar la descripci�n o no.
+     * 
+     * @return True si se muestra la descripci�n.
+     */
+    public boolean isShowDescription() {
+        return showDescription;
+    }
+
+    /**
+     * Inserta si se muestra o no la descripci�n.
+     * 
+     * @param showDescription
+     *            True si se muestra la descripci�n.
+     */
+    public void setShowDescription(boolean showDescription) {
+        this.showDescription = showDescription;
+    }
+
+    /**
+     * Devuelve la descripci�n de la escala.
+     * 
+     * @return Descripci�n de la escala.
+     */
+    public String getDescription() {
+        if (fframeViewDependence != null) {
+            if (fframeViewDependence.getScale() == 0) {
+                return PluginServices.getText(this, "escala_desconocida");
+            }
+            return "1:" + String.valueOf(fframeViewDependence.getScale());
+        }
+        return "1:";
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.IFFrame#print(java.awt.Graphics2D,
+     *      java.awt.geom.AffineTransform)
+     */
+    public void print(Graphics2D g, AffineTransform at, Geometry geom,
+        PrintAttributes properties) {
+        draw(g, at, null, null);
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param d
+     *            DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public String format(double d) {
+        if ((d % (long) d) != 0) {
+            numberFormat.setMaximumFractionDigits(getNumDec());
+        } else {
+            numberFormat.setMaximumFractionDigits(0);
+        }
+
+        // String s = String.valueOf(nf.format(d));
+        // s=s.replace('.','*');
+        // s = s.replace(',', '.');
+        // s=s.replace('*',',');
+        return numberFormat.format(d); // (Double.valueOf(s).doubleValue());
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public int getNumDec() {
+        return numDec;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param numDec
+     *            DOCUMENT ME!
+     */
+    public void setNumDec(int numDec) {
+        this.numDec = numDec;
+    }
+
+    public void initialize() {
+        // TODO Auto-generated method stub
+
+    }
+
+    private final static int DUIB = 0;
+    private final static int DUBI = 1;
+    private final static int DBIU = 2;
+    private final static int DIBU = 3;
+    private final static int UIBD = 4;
+    private final static int UBID = 5;
+    private final static int IBUD = 6;
+    private final static int BIUD = 7;
+
+    private int getFormat() {
+        if (isAboveDescription()) {
+            if (isAboveName()) {
+                if (isAboveIntervals()) {
+                    return DUIB;
+                }
+                return DUBI;
+            }
+            if (isAboveIntervals()) {
+                return DIBU;
+            }
+            return DBIU;
+        }
+        if (isAboveName()) {
+            if (isAboveIntervals()) {
+                return UIBD;
+            }
+            return UBID;
+        }
+        if (isAboveIntervals()) {
+            return IBUD;
+        }
+        return BIUD;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(FFrameScaleBar.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "FFrameScaleBar persistence definition", null, null);
+
+            definition
+                .extend(manager
+                    .getDefinition(AbstractFFrameViewDependence.PERSISTENCE_DEFINITION_NAME));
+
+            definition.addDynFieldBoolean(BINTERNALSET_FIELD)
+                .setMandatory(true);
+            definition.addDynFieldDouble(DIF_FIELD).setMandatory(true);
+            definition.addDynFieldInt(HASLEFT_FIELD).setMandatory(true);
+            definition.addDynFieldString(NAMEUNIT_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(NUMUNIT_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(HEIGHT_FIELD).setMandatory(true);
+            definition.addDynFieldInt(STYLE_FIELD).setMandatory(true);
+            definition.addDynFieldInt(UNITS_FIELD);
+            definition.addDynFieldDouble(INTERVAL_FIELD).setMandatory(true);
+            definition.addDynFieldInt(NUMINTERVAL_FIELD).setMandatory(true);
+            definition.addDynFieldInt(NUMLEFT_FIELD).setMandatory(true);
+            definition.addDynFieldInt(MAPUNITS_FIELD).setMandatory(true);
+            definition.addDynFieldObject(FONT_FIELD)
+                .setClassOfValue(Font.class).setMandatory(true);
+            definition.addDynFieldInt(NUMDEC_FIELD).setMandatory(true);
+            definition.addDynFieldObject(BARCOLOR_FIELD).setClassOfValue(
+                Color.class);
+            definition.addDynFieldObject(TEXTCOLOR_FIELD).setClassOfValue(
+                Color.class);
+            definition.addDynFieldBoolean(SHOWNAMEUNITS_FIELD);
+            definition.addDynFieldBoolean(SHOWDESCRIPTION_FIELD);
+            definition.addDynFieldBoolean(ABOVENAME_FIELD);
+            definition.addDynFieldBoolean(ABOVEINTERVALS_FIELD);
+            definition.addDynFieldBoolean(ABOVEDESCRIPTION_FIELD);
+        }
+    }
+
+    @Override
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        m_bIntervalSet = state.getBoolean(BINTERNALSET_FIELD);
+        m_dif = state.getDouble(DIF_FIELD);
+        m_hasleft = state.getInt(HASLEFT_FIELD);
+        m_nameUnit = state.getString(NAMEUNIT_FIELD);
+        m_numUnit = state.getDouble(NUMUNIT_FIELD);
+        m_height = state.getDouble(HEIGHT_FIELD);
+        m_style = state.getInt(STYLE_FIELD);
+        m_units = state.getInt(UNITS_FIELD);
+        m_interval = state.getDouble(INTERVAL_FIELD);
+        m_numinterval = state.getInt(NUMINTERVAL_FIELD);
+        m_numleft = state.getInt(NUMLEFT_FIELD);
+        m_mapUnits = state.getInt(MAPUNITS_FIELD);
+        m_font = (Font) state.get(FONT_FIELD);
+        numDec = state.getInt(NUMDEC_FIELD);
+        barcolor = (Color) state.get(BARCOLOR_FIELD);
+        textcolor = (Color) state.get(TEXTCOLOR_FIELD);
+        showNameUnits = state.getBoolean(SHOWNAMEUNITS_FIELD);
+        showDescription = state.getBoolean(SHOWDESCRIPTION_FIELD);
+        aboveName = state.getBoolean(ABOVENAME_FIELD);
+        aboveIntervals = state.getBoolean(ABOVEINTERVALS_FIELD);
+        aboveDescription = state.getBoolean(ABOVEDESCRIPTION_FIELD);
+    }
+
+    @Override
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(BINTERNALSET_FIELD, m_bIntervalSet);
+        state.set(DIF_FIELD, m_dif);
+        state.set(HASLEFT_FIELD, m_hasleft);
+        state.set(NAMEUNIT_FIELD, m_nameUnit);
+        state.set(NUMUNIT_FIELD, m_numUnit);
+        state.set(HEIGHT_FIELD, m_height);
+        state.set(STYLE_FIELD, m_style);
+        state.set(UNITS_FIELD, m_units);
+        state.set(INTERVAL_FIELD, m_interval);
+        state.set(NUMINTERVAL_FIELD, m_numinterval);
+        state.set(NUMLEFT_FIELD, m_numleft);
+        state.set(MAPUNITS_FIELD, m_mapUnits);
+        state.set(FONT_FIELD, m_font);
+        state.set(NUMDEC_FIELD, numDec);
+        state.set(BARCOLOR_FIELD, barcolor);
+        state.set(TEXTCOLOR_FIELD, textcolor);
+        state.set(SHOWNAMEUNITS_FIELD, showNameUnits);
+        state.set(SHOWDESCRIPTION_FIELD, showDescription);
+        state.set(ABOVENAME_FIELD, aboveName);
+        state.set(ABOVEINTERVALS_FIELD, aboveIntervals);
+        state.set(ABOVEDESCRIPTION_FIELD, aboveDescription);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGridFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGridFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGridFactory.java	(revision 590)
@@ -0,0 +1,64 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameGrid.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGridFactory extends FrameFactory {
+
+    public static String registerName = "FFrameGrid";
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameGrid grid = new FFrameGrid();
+        grid.setFrameFactory(this);
+        return grid;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameGrid.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameGrid");
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorthFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorthFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameNorthFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameNorth.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameNorthFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameNorth north = new FFrameNorth();
+        north.setFrameFactory(this);
+        return north;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameNorth.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameNorth");
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/LayoutPanelListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/LayoutPanelListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/LayoutPanelListener.java	(revision 590)
@@ -0,0 +1,20 @@
+package org.gvsig.app.project.documents.layout.fframes;
+
+/**
+ * IFFrames implementing this interface will be automatically
+ * notified whenever the LayoutPanel window is activated or
+ * closed.
+ * 
+ * FFrames need to know about the status of the window because
+ * they need to update some UI controls (for instance the
+ * scale control).
+ * 
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public interface LayoutPanelListener extends IFFrame {
+	public void windowActivated();
+	
+	public void windowClosed();
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotationView.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotationView.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotationView.java	(revision 590)
@@ -0,0 +1,85 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+
+import javax.swing.JPanel;
+
+public class JPRotationView extends JPanel {
+
+    private static final long serialVersionUID = -7134231921356704835L;
+    private double rotation = 0;
+
+    public void setRotation(double rot) {
+        rotation = rot;
+    }
+
+    public double getRotation() {
+        return rotation;
+    }
+
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+        Rectangle r = new Rectangle(35, 15, 30, 25);
+        ((Graphics2D) g).rotate(Math.toRadians(getRotation()), r.x
+            + (r.width / 2), r.y + (r.height / 2));
+
+        g.setColor(new Color(230, 150, 50));
+        ((Graphics2D) g).setStroke(new BasicStroke(4));
+        g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        ((Graphics2D) g).setStroke(new BasicStroke(1));
+        g.setColor(Color.RED);
+        g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        g.setColor(Color.black);
+        g.drawRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(),
+            (int) r.getHeight());
+        ((Graphics2D) g).rotate(Math.toRadians(-getRotation()), r.x
+            + (r.width / 2), r.y + (r.height / 2));
+    }
+
+    /**
+     * This is the default constructor
+     */
+    public JPRotationView() {
+        super();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        this.setSize(106, 67);
+        this.setBackground(java.awt.SystemColor.controlShadow);
+        this.setBackground(java.awt.Color.white);
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotation.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotation.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/JPRotation.java	(revision 590)
@@ -0,0 +1,240 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+
+public class JPRotation extends JPanel {
+
+    private static final long serialVersionUID = 5537314374490402138L;
+    private JPRotationView pRotationView = null;
+    private JPanel pButtons = null;
+    private JButton bLeft = null;
+    private JTextField txtRotation = null;
+    private String parsedText = null;
+    private JButton bRight = null;
+
+    public void setRotation(double rot) {
+        getPRotationView().setRotation(rot);
+        setTextRotation(rot);
+    }
+
+    private void setTextRotation(double d) {
+        String s = String.valueOf(d);
+        if (s.endsWith(".0")) {
+            txtRotation.setText(s.substring(0, s.length() - 2));
+        } else {
+            txtRotation.setText(s);
+        }
+    }
+
+    public double getRotation() {
+        return getPRotationView().getRotation();
+    }
+
+    /**
+     * This method initializes pRotationView
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotationView getPRotationView() {
+        if (pRotationView == null) {
+            pRotationView = new JPRotationView();
+            pRotationView.setForeground(java.awt.Color.black);
+            pRotationView.setBackground(java.awt.SystemColor.controlShadow);
+            pRotationView.setPreferredSize(new java.awt.Dimension(80, 50));
+        }
+        return pRotationView;
+    }
+
+    /**
+     * This method initializes pButtons
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPButtons() {
+        if (pButtons == null) {
+            pButtons = new JPanel();
+            pButtons.add(getBLeft(), null);
+            pButtons.add(getTxtRotation(), null);
+            pButtons.add(getBRight(), null);
+        }
+        return pButtons;
+    }
+
+    /**
+     * This method initializes bLeft
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getBLeft() {
+        if (bLeft == null) {
+            bLeft = new JButton();
+            bLeft.setPreferredSize(new java.awt.Dimension(24, 24));
+            bLeft.setIcon(PluginServices.getIconTheme().get(
+                "left-rotation-icon"));
+            bLeft.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    setRotation(Double.parseDouble(txtRotation.getText()) + 1);
+                    getTxtRotation().setText(txtRotation.getText());
+                    getPRotationView().repaint();
+                }
+            });
+        }
+        return bLeft;
+    }
+
+    /**
+     * This method initializes txtRotation
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtRotation() {
+        if (txtRotation == null) {
+            txtRotation = new JTextField();
+            txtRotation.setPreferredSize(new java.awt.Dimension(45, 24));
+            txtRotation.addFocusListener(new FocusListener() {
+				
+				public void focusLost(FocusEvent e) {
+                    if (txtRotation.getText().endsWith(".")) {
+                        return;
+                    }
+                    try {
+                        setRotation(Double.parseDouble(txtRotation.getText()));
+                    } catch (NumberFormatException e1) {
+                    	String oldText = parsedText;
+                    	parsedText = txtRotation.getText();
+                    	if (!parsedText.equals(oldText)) { // don't show more than once for the same string
+                    		JOptionPane.showMessageDialog(
+                    				(Component) PluginServices.getMainFrame(),
+                    				PluginServices.getText(this, "numero_incorrecto"));
+                    	}
+                    }
+                    getPRotationView().repaint();				}
+				
+				public void focusGained(FocusEvent e) {
+				}
+			});
+            txtRotation.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                	String text = txtRotation.getText();
+                	if (text.endsWith(".")) {
+                		return;
+                	}
+					Double value = getDouble(text);
+					if (value!=null) {
+						setRotation(value);
+						getPRotationView().repaint();
+					}
+					else if (e.getKeyCode()==KeyEvent.VK_ENTER) {
+                    	String oldText = parsedText;
+                    	parsedText = txtRotation.getText();
+                    	if (!parsedText.equals(oldText)) { // don't show more than once for the same string
+                    		JOptionPane.showMessageDialog(
+                    				(Component) PluginServices.getMainFrame(),
+                    				PluginServices.getText(this, "numero_incorrecto"));
+                    	}
+					}
+                }
+            });
+            setTextRotation(getRotation());
+        }
+        return txtRotation;
+    }
+    
+    protected Double getDouble(String strValue) {
+		// allow comma separated decimal values
+		String text = strValue.replaceAll(",", ".");
+		try {
+			return Double.parseDouble(text);
+		} catch (NumberFormatException e1) {
+		}
+		return null;
+    }
+
+    /**
+     * This method initializes bRight
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getBRight() {
+        if (bRight == null) {
+            bRight = new JButton();
+            bRight.setPreferredSize(new java.awt.Dimension(24, 24));
+            bRight.setIcon(PluginServices.getIconTheme().get(
+                "right-rotation-icon"));
+            bRight.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    setRotation(Double.parseDouble(txtRotation.getText()) - 1);
+                    getTxtRotation().setText(txtRotation.getText());
+                    getPRotationView().repaint();
+                }
+            });
+        }
+        return bRight;
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+
+    }
+
+    /**
+     * This is the default constructor
+     */
+    public JPRotation() {
+        super();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        this.setLayout(new BorderLayout());
+        this.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
+            PluginServices.getText(this, "grados"),
+            javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+            javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+        this.add(getPRotationView(), java.awt.BorderLayout.NORTH);
+        this.add(getPButtons(), java.awt.BorderLayout.SOUTH);
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,26"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/EnvelopePanel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/EnvelopePanel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/EnvelopePanel.java	(revision 590)
@@ -0,0 +1,172 @@
+package org.gvsig.app.project.documents.layout.fframes.gui;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.text.NumberFormatter;
+
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.i18n.Messages;
+import org.slf4j.LoggerFactory;
+
+
+public class EnvelopePanel extends JPanel {
+	private static final long serialVersionUID = -1828624765045725544L;
+	private JTextField fldTop = null;
+	private JTextField fldLeft = null;
+	private JTextField fldRight = null;
+	private JTextField fldBottom = null;
+	private static final GeometryManager geoMgr = GeometryLocator.getGeometryManager();
+	private int fieldWidth;
+	private DecimalFormat formatLatLon = new DecimalFormat("0.######");
+	private DecimalFormat formatMetres = new DecimalFormat("0.##");
+	
+	public EnvelopePanel() {
+		this(8);
+	}
+	
+	public EnvelopePanel(int fieldWidth) {
+		super(new GridBagLayout());
+		this.fieldWidth = fieldWidth;
+		initComponents();
+	}
+	
+	protected void initComponents() {
+		int row = 0;
+		GridBagConstraints c = new GridBagConstraints();
+		c.gridy = row++;
+		c.gridx = 1;
+		c.anchor = GridBagConstraints.LINE_END;
+		c.insets = new Insets(0, 5, 5, 5);
+		JLabel label = new JLabel(Messages.getText("Top_extent_lbl"));
+		add(label, c);
+		c.gridx = 2;
+		c.anchor = GridBagConstraints.LINE_START;
+		add(getFldTop(), c);
+		
+		c.gridy = row++;
+		c.gridx = 0;
+		c.insets = new Insets(5, 0, 5, 5);
+		c.anchor = GridBagConstraints.LINE_END;
+		label = new JLabel(Messages.getText("Left_extent_lbl"));
+		add(label, c);
+		c.gridx = 1;
+		c.insets = new Insets(5, 5, 5, 5);
+		c.anchor = GridBagConstraints.LINE_START;
+		add(getFldLeft(), c);		
+
+		c.gridx = 3;
+		c.anchor = GridBagConstraints.LINE_END;
+		label = new JLabel(Messages.getText("Right_extent_lbl"));
+		add(label, c);
+		c.gridx = 4;
+		c.anchor = GridBagConstraints.LINE_START;
+		c.insets = new Insets(5, 5, 5, 0);
+		add(getFldRight(), c);
+		
+		c.gridy = row++;
+		c.gridx = 1;
+		c.anchor = GridBagConstraints.LINE_END;
+		label = new JLabel(Messages.getText("Bottom_extent_lbl"));
+		c.insets = new Insets(5, 5, 0, 5);
+		add(label, c);
+		c.gridx = 2;
+		c.anchor = GridBagConstraints.LINE_START;
+		add(getFldBottom(), c);
+	}
+	
+	private JTextField getFldTop() {
+		if (fldTop==null) {
+			fldTop  = new JTextField(fieldWidth);
+		}
+		return fldTop;
+	}
+	
+	private JTextField getFldLeft() {
+		if (fldLeft==null) {
+			fldLeft = new JTextField(fieldWidth);
+		}
+		return fldLeft;
+	}
+	
+	private JTextField getFldRight() {
+		if (fldRight==null) {
+			fldRight  = new JTextField(fieldWidth);
+		}
+		return fldRight;
+	}
+	
+	private JTextField getFldBottom() {
+		if (fldBottom==null) {
+			fldBottom  = new JTextField(fieldWidth);
+		}
+		return fldBottom;
+	}
+	
+	public Envelope getEnvelope() {
+		double minX = 0.0, minY=0.0, maxX=0.0, maxY=0.0;
+		try {
+			maxY = formatMetres.parse(getFldTop().getText()).doubleValue();
+			maxX = formatMetres.parse(getFldRight().getText()).doubleValue();
+			minY = formatMetres.parse(getFldBottom().getText()).doubleValue();
+			minX = formatMetres.parse(getFldLeft().getText()).doubleValue();
+		} catch (ParseException e1) {
+			try {
+				maxY = Double.parseDouble(getFldTop().getText().replaceAll(",", "."));
+				maxX = Double.parseDouble(getFldRight().getText().replaceAll(",", "."));
+				minY = Double.parseDouble(getFldBottom().getText().replaceAll(",", "."));
+				minX = Double.parseDouble(getFldLeft().getText().replaceAll(",", "."));
+			} catch (NumberFormatException e2) {
+				LoggerFactory.getLogger(EnvelopePanel.class).error("Error parsing envelope", e1);
+				return null;
+			}
+		}
+		try {
+			return geoMgr.createEnvelope(minX, minY, maxX, maxY, Geometry.SUBTYPES.GEOM2D);
+		} catch (CreateEnvelopeException e) {
+			LoggerFactory.getLogger(EnvelopePanel.class).error("Error creating envelope", e);
+			return null;
+		}
+	}
+	
+	public void setEnvelope(Envelope envelope) {
+		double top = envelope.getMaximum(1);
+		double left = envelope.getMinimum(0);
+		double right = envelope.getMaximum(0);
+		double bottom = envelope.getMinimum(1);
+		DecimalFormat format;
+		if (top>Math.abs(90.0d) || left>Math.abs(180.0d) ||
+				right>Math.abs(180.0d) || bottom>Math.abs(90.0d)) {
+			format = formatMetres;
+		}
+		else {
+			format = formatLatLon;
+		}
+		String topStr = format.format(top);
+		getFldTop().setText(topStr);
+		String leftStr = format.format(left);
+		getFldLeft().setText(leftStr);
+		String rightStr = format.format(right);
+		getFldRight().setText(rightStr);
+		String bottomStr = format.format(bottom);
+		getFldBottom().setText(bottomStr);
+	}
+	
+	public void setEditable(boolean editable) {
+		getFldTop().setEditable(editable);
+		getFldLeft().setEditable(editable);
+		getFldRight().setEditable(editable);
+		getFldBottom().setEditable(editable);
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/ColumPanel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/ColumPanel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/ColumPanel.java	(revision 590)
@@ -0,0 +1,53 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui;
+
+import java.awt.Graphics;
+
+import javax.swing.JPanel;
+
+public class ColumPanel extends JPanel {
+
+    private static final long serialVersionUID = -1664267230791283324L;
+    private int numColum = 1;
+
+    // private Rectangle[] rectangles;
+    public ColumPanel() {
+        setBounds(new java.awt.Rectangle(230, 135, 132, 68));
+        setBackground(java.awt.Color.white);
+        setNumColum(numColum);
+    }
+
+    public void setNumColum(int j) {
+        numColum = j;
+        // rectangles=new Rectangle[numColum];
+        for (int i = 0; i < numColum; i++) {
+
+        }
+    }
+
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/CharComboBox.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/CharComboBox.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/CharComboBox.java	(revision 590)
@@ -0,0 +1,110 @@
+package org.gvsig.app.project.documents.layout.fframes.gui.numberFormat;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.util.ArrayList;
+
+import javax.swing.JComboBox;
+
+import org.gvsig.i18n.Messages;
+
+/**
+ * This is is a customized JComboBox used to select a single character.
+ * It has the following properties:
+ * <ul>
+ * <li>it is editable</li>
+ * <li>only allows a single char (if more chars are introduced, the string
+ * is trimmed to the first character</li>
+ * <li>optionally, it can show a special item (NoneItem) that represents that no
+ * character wants to be selected.</li></ul>
+ * 
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public class CharComboBox extends JComboBox {
+	private static final long serialVersionUID = 2194202669931887456L;
+	/**
+	 * This item represents that no item is selected
+	 */
+	private String noneItem = Messages.getText("None");
+	
+	public CharComboBox(String[] items, boolean showNoneItem) {
+		super();
+		this.setEditable(true);
+		for (int i=0; i<items.length; i++) {
+			String item = items[i];
+			if (item!=null && item.length()>0) {
+				this.addItem(new String(item.substring(0, 1)));
+			}
+		}
+		if (showNoneItem) {
+			this.addItem(noneItem);
+		}
+		this.addFocusListener(new FocusListener() {
+
+			public void focusGained(FocusEvent e) {	
+			}
+
+			public void focusLost(FocusEvent e) {
+				String item = getSelectedItem();
+				if (item!=null) {
+					setSelectedItem(item);
+				}
+			}
+			
+		});
+	}
+	
+	public CharComboBox() {
+		this(new String[]{" "}, true);
+	}
+	
+	/**
+	 * Returns the selected char or the NoneItem string.
+	 * 
+	 * @see javax.swing.JComboBox#getSelectedItem()
+	 */
+	public String getSelectedItem() {
+		String item = (String) super.getSelectedItem();
+		if (item!=null && item!=noneItem) {
+			if (item.length()>0) {
+				return item.substring(0, 1);
+			}
+			else {
+				return " ";
+			}
+		}
+		else {
+			return noneItem;
+		}
+	}
+	
+	// Ensure all the added items are Strings
+	public void addItem(Object obj) {
+		super.addItem(String.valueOf(obj));
+	}
+	
+	/**
+	 * Sets the text to show as the NoneItem. The text has to be
+	 * provided in its localized form (if translations are in use).
+	 * 
+	 * @param text The localized text to show as the NoneItem
+	 */
+	public void setNoneItem(String text) {
+		removeItem(noneItem);
+		noneItem = text;
+		addItem(text);
+	}
+	
+	/**
+	 * This item represents that no item is selected
+	 */
+	public String getNoneItem() {
+		return noneItem;
+	}
+	
+	
+	
+	
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatDialog.java	(revision 590)
@@ -0,0 +1,78 @@
+package org.gvsig.app.project.documents.layout.fframes.gui.numberFormat;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+import org.gvsig.i18n.Messages;
+
+/**
+ * Encapsulates DecimalFormatPanel on an IWindow that can be directly
+ * opened as Dialog.
+ * 
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public class DecimalFormatDialog extends JPanel
+				implements IWindow, ActionListener {
+	private WindowInfo wi = null;
+	private DecimalFormatPanel mainPanel;
+	private AcceptCancelPanel okCancelPanel;
+	private ActionListener okAction;
+	private ActionListener cancelAction;
+	
+	public DecimalFormatDialog(ActionListener okAction, ActionListener cancelAction) {
+		super(new BorderLayout());
+		this.okAction = okAction;
+		this.cancelAction = cancelAction;
+		initComponents();
+	}
+	
+	protected void initComponents() {
+		mainPanel = new DecimalFormatPanel();
+		// empty border is used here as margin
+		mainPanel.setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));
+		okCancelPanel = new AcceptCancelPanel(okAction, cancelAction);
+		okCancelPanel.addOkButtonActionListener(this);
+		okCancelPanel.addCancelButtonActionListener(this);
+		this.add(mainPanel, BorderLayout.CENTER);
+		this.add(okCancelPanel, BorderLayout.SOUTH);
+	}
+	
+	public DecimalFormatPanel getPanel() {
+		return mainPanel;
+	}
+	
+	public WindowInfo getWindowInfo() {
+		if (wi == null) {
+			wi = new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE);
+			wi.setWidth(300);
+			wi.setHeight(150);
+			wi.setTitle(Messages.getText("Number_format"));
+		}
+		return wi;
+	}
+
+	public Object getWindowProfile() {
+		return WindowInfo.DIALOG_PROFILE;
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		PluginServices.getMDIManager().closeWindow(this);
+	}
+	
+	public void addOkButtonActionListener(ActionListener l) {
+		okCancelPanel.addOkButtonActionListener(l);
+	}
+	public void addCancelButtonActionListener(ActionListener l) {
+		okCancelPanel.addCancelButtonActionListener(l);
+	}
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatPanel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatPanel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/numberFormat/DecimalFormatPanel.java	(revision 590)
@@ -0,0 +1,260 @@
+package org.gvsig.app.project.documents.layout.fframes.gui.numberFormat;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gui.beans.swing.JNumberSpinner;
+import org.gvsig.i18n.Messages;
+
+
+/**
+ * A panel to select the format for a decimal number. The following options are
+ * offered:
+ * <ul>
+ * <li>The decimal separator character</li>
+ * <li>The thousands separator character</li>
+ * <li>The number of decimal digits. Note that this component forces the
+ * maximum and minimum number of decimal digits (as defined in {@link DecimalFormat})
+ * to be always equal.</li>
+ * </ul>
+ * 
+ * @author Cesar Martinez Izquierdo
+ */
+public class DecimalFormatPanel extends GridBagLayoutPanel {
+	private static final long serialVersionUID = 1L;
+	public static final String INTEGER_BASE_PATTERN = "0";
+	public static final String INTEGER_GROUPED_BASE_PATTERN = "#,###,###,###,###,###,##0";
+	public static final String DECIMAL_BASE_PATTERN = "#0.";
+	public static final String DECIMAL_GROUPED_BASE_PATTERN = "#,###,###,###,###,###,##0.";
+	private DecimalFormat format;
+	private CharComboBox cbDecimalSep = null;
+	private CharComboBox cbThousandsSep = null;
+	private JNumberSpinner tfDecimalDigits = null; 
+	private JLabel lbResult = null;
+	private double testNumber = 123456789.00;
+	private static final DecimalFormatSymbols defaultLocaleSymbols = DecimalFormatSymbols.getInstance();
+	
+	/**
+	 * Creates and initializes the panel using the default format
+	 *  for the current locale
+	 */
+	public DecimalFormatPanel() {
+		this(new DecimalFormat());
+	}
+	
+	/**
+	 * Creates and initializes the panel using the provided
+	 * DecimalFormat 
+	 */
+	public DecimalFormatPanel(DecimalFormat format) {
+		super();
+		initComponents();
+		setFormat(format);
+	}
+	
+	/**
+	 * Creates and initializes the panel using the provided parameters
+	 * 
+	 * @param decimalSeparator The character used to separate the decimal part
+	 * @param thousandsSeparator The character used to group thousands
+	 * @param decimalDigits The number of decimal digits to show
+	 * @param basePattern A base pattern used to create the DecimalFormat.
+	 * Usually, one of {@link #INTEGER_BASE_PATTERN},
+	 * {@link #INTEGER_GROUPED_BASE_PATTERN}, {@link #DECIMAL_BASE_PATTERN}
+	 * or {@link #DECIMAL_GROUPED_BASE_PATTERN}.
+	 * Any decimal digits in the pattern will be ignored (as they will be
+	 * included depending on the <code>decimalDigits</code> parameter). The
+	 * behavior of the component is undefined if a wrong pattern is provided
+	 * 
+	 * @see DecimalFormat
+	 */
+	public DecimalFormatPanel(char decimalSeparator, char thousandsSeparator, int decimalDigits, String basePattern) {
+		super();
+		initComponents();
+		DecimalFormatSymbols sym = new DecimalFormatSymbols();
+		sym.setDecimalSeparator(decimalSeparator);
+		sym.setGroupingSeparator(thousandsSeparator);
+		String pattern = getPattern(basePattern, decimalDigits);
+		DecimalFormat f = new DecimalFormat(pattern, sym);
+		setFormat(f);
+	}
+	
+	protected void initComponents() {
+		this.addComponent(Messages.getText("Decimal_separator"), getCbDecimalSep());
+		this.addComponent(Messages.getText("Thousands_separator"), getCbThousandsSep());
+		this.addComponent(Messages.getText("Decimal_digits"), getTfDecimalDigits());
+		this.addComponent(Messages.getText("Result"), getLbTestResult());
+		
+	}
+	
+	private String getPattern(String basePattern, int decimalDigits) {
+		int pos = basePattern.indexOf('.');
+		if (pos>=0) {
+			basePattern = basePattern.substring(0, pos+1);
+		}
+		if (decimalDigits>0) {
+			return basePattern + String.format(("%1$0"+decimalDigits+"d"),0);
+		}
+		else {
+			return basePattern;
+		}
+	}
+	
+	
+	private CharComboBox getCbDecimalSep() {
+		if (cbDecimalSep==null) {
+			cbDecimalSep = new CharComboBox(new String[]{".", ","}, false);
+			cbDecimalSep.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (e.getSource() instanceof CharComboBox) {
+						DecimalFormatPanel.this.updateFormat(e.getSource());
+					}
+				}
+			});
+		}
+		return cbDecimalSep;
+	}
+	
+	private CharComboBox getCbThousandsSep() {
+		if (cbThousandsSep==null) {
+			cbThousandsSep = new CharComboBox(new String[]{",", ".", " "}, true);
+			cbThousandsSep.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (e.getSource() instanceof CharComboBox) {
+						DecimalFormatPanel.this.updateFormat(e.getSource());
+					}
+				}
+			});
+		}
+		return cbThousandsSep;
+	}
+	
+	protected void updateFormat(Object source) {
+		// get selected values
+		String thousandsSeparator = getCbThousandsSep().getSelectedItem();
+		String decimalSeparator = getCbDecimalSep().getSelectedItem();
+		int decimalDigits = getTfDecimalDigits().getInteger();
+		boolean b_decimalSep, b_thousandsSep;
+		DecimalFormatSymbols sym = format.getDecimalFormatSymbols();
+		if (decimalSeparator!=null && decimalSeparator.length()>0) {
+			sym.setDecimalSeparator(decimalSeparator.charAt(0));
+			b_decimalSep = true;
+		}
+		else {
+			b_decimalSep = false;
+		}
+		if (thousandsSeparator!=null &&
+				thousandsSeparator!=getCbThousandsSep().getNoneItem() &&
+				thousandsSeparator.length()>0) {
+			sym.setGroupingSeparator(thousandsSeparator.charAt(0));
+			b_thousandsSep = true;
+		}
+		else {
+			b_thousandsSep = false;
+		}
+		
+		// choose the right pattern
+		String pattern = null;
+		if (b_decimalSep && decimalDigits>0) {
+			if (b_thousandsSep) {
+				pattern = getPattern(DECIMAL_GROUPED_BASE_PATTERN, decimalDigits);
+			}
+			else {
+				pattern = getPattern(DECIMAL_BASE_PATTERN, decimalDigits);
+			}
+		}
+		else {
+			if (b_thousandsSep) {
+				pattern = INTEGER_GROUPED_BASE_PATTERN;
+			}
+			else {
+				pattern = INTEGER_BASE_PATTERN;
+			}
+		}
+		
+		// update the format
+		this.format = new DecimalFormat(pattern, sym);
+		getLbTestResult().setText(this.format.format(testNumber));
+		
+		// set coherent options in UI
+		if (source==getCbDecimalSep()) {
+			if (!b_decimalSep) {
+				// if no decimal separator is shown at all, we can't
+				// have any decimal digit
+				getTfDecimalDigits().setInteger(0);
+			}	
+		}
+		else {
+			if (decimalDigits>0 && !b_decimalSep) {
+				selectItem(getCbDecimalSep(), String.valueOf(defaultLocaleSymbols.getDecimalSeparator()));
+			}
+		}
+	}             
+	
+	private JNumberSpinner getTfDecimalDigits() {
+		if (tfDecimalDigits==null) {
+			tfDecimalDigits = new JNumberSpinner(0, 2, 0, 100, 1);
+			tfDecimalDigits.addActionListener(new ActionListener() {
+
+				public void actionPerformed(ActionEvent e) {
+					DecimalFormatPanel.this.updateFormat(e.getSource());
+				}
+				
+			});
+		}
+		return tfDecimalDigits;
+	}
+	
+	private JLabel getLbTestResult() {
+		if (lbResult==null) {
+			lbResult = new JLabel();
+		}
+		return lbResult;
+	}
+	
+	public DecimalFormat getFormat() {
+		return format;
+	}
+	
+	public void setFormat(DecimalFormat format) {
+		this.format = format;
+		boolean groupingUsed = format.isGroupingUsed();
+		getTfDecimalDigits().setInteger(format.getMinimumFractionDigits());
+		
+		String decSep = String.valueOf(format.getDecimalFormatSymbols().getDecimalSeparator());
+		selectItem(getCbDecimalSep(), decSep);
+		
+		if (groupingUsed) {
+			String thousandsSep = String.valueOf(format.getDecimalFormatSymbols().getGroupingSeparator());
+			selectItem(getCbThousandsSep(), thousandsSep);
+		}
+		else {
+			selectItem(getCbThousandsSep(), getCbThousandsSep().getNoneItem());
+		}
+	}
+	
+	/**
+	 * Adds the provided item to the combo if it is not already present,
+	 * then selects it.
+	 * 
+	 * @param cb
+	 * @param item
+	 * @return
+	 */
+	private void selectItem(JComboBox cb, String item) {
+		for (int i=0; i<cb.getItemCount(); i++) {
+			if (cb.getItemAt(i).equals(item)) {
+				cb.setSelectedItem(item);
+				return;
+			}
+		}
+		cb.addItem(item);
+		cb.setSelectedItem(item);
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGraphicsDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGraphicsDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGraphicsDialog.java	(revision 590)
@@ -0,0 +1,186 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.gui.styling.SymbolSelector;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Di�logo de las propiedades de los gr�ficos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGraphicsDialog extends SymbolSelector implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 7473813303719944579L;
+
+    private static final Logger LOG = LoggerFactory
+        .getLogger(FFrameGraphicsDialog.class);
+
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private LayoutPanel m_layout = null; 
+
+    private boolean isAcepted = false;
+    private FFrameGraphics fframegraphics = null;
+    private JPRotation pRotation = null;
+    private FFrameGraphics newFFrameGraphics;
+    private ObservableHelper observableHelper = new ObservableHelper();
+
+
+    public FFrameGraphicsDialog(LayoutPanel layout, FFrameGraphics fframe) {
+        super(fframe.getFSymbol(), fframe.getType(), null, true);
+        m_layout = layout;
+        fframegraphics = fframe;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setSize(650, 700);
+        getPRotation().setRotation(fframegraphics.getRotation());
+        ((GridBagLayoutPanel) getJPanelOptions()).addComponent(getPRotation());
+
+        ActionListener okAction = new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                try {
+                    newFFrameGraphics = (FFrameGraphics) fframegraphics.clone();
+                    newFFrameGraphics.setBoundBox(fframegraphics.getBoundBox());
+                    newFFrameGraphics.setSymbol((ISymbol) getSelectedObject());
+                    newFFrameGraphics.setRotation(getPRotation().getRotation());
+                    m_layout.getLayoutContext().updateFFrames();
+                    m_layout.getLayoutControl().refresh();
+                    isAcepted = true;
+                    FFrameGraphicsDialog.this.notifyDialogClosed();
+                } catch (CloneNotSupportedException e1) {
+                    LOG.error("It is not possible clonate the object", e);
+                }
+            }
+        };
+        
+        ActionListener cancelAction = new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				isAcepted = false;
+				FFrameGraphicsDialog.this.notifyDialogClosed();
+			}
+        };
+        
+        okCancelPanel.addOkButtonActionListener(okAction);
+        okCancelPanel.addCancelButtonActionListener(cancelAction);
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.SingletonWindow#getWindowModel()
+     */
+    public Object getViewModel() {
+        return "FPanelLegendDefault";
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo
+            .setTitle(PluginServices.getText(this, "propiedades_grafico"));
+        
+        m_viewinfo.setWidth(650);
+        m_viewinfo.setHeight(625);
+        
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#setRectangle(java.awt.geom.Rectangle2D)
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+        
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setPreferredSize(new Dimension(120, 120));
+        }
+        return pRotation;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameGraphics;
+    }
+	
+
+	public void addObserver(Observer observer) {
+		observableHelper.addObserver(observer);
+	}
+
+	public void deleteObserver(Observer observer) {
+		observableHelper.deleteObserver(observer);
+	}
+
+	public void deleteObservers() {
+		observableHelper.deleteObservers();
+	}
+	
+	protected void notifyDialogClosed() {
+		observableHelper.notifyObservers(this, new FFrameDialogNotification(FFrameDialogNotification.DIALOG_CLOSED));
+	}
+} 
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/AbstractFFrameDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/AbstractFFrameDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/AbstractFFrameDialog.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import javax.swing.JPanel;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ * 
+ */
+public abstract class AbstractFFrameDialog extends JPanel implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 262802843678561933L;
+
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(AbstractFFrameDialog.class);
+
+    protected LayoutPanel layoutPanel = null;
+    protected IFFrame frame = null;
+    private ObservableHelper observableHelper = new ObservableHelper();
+
+    public AbstractFFrameDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super();
+        this.layoutPanel = layoutPanel;
+        this.frame = frame;
+    }
+
+	public void addObserver(Observer observer) {
+		observableHelper.addObserver(observer);
+	}
+
+	public void deleteObserver(Observer observer) {
+		observableHelper.deleteObserver(observer);
+	}
+
+	public void deleteObservers() {
+		observableHelper.deleteObservers();
+	}
+
+	protected void notifyDialogClosed() {
+		observableHelper.notifyObservers(this, new FFrameDialogNotification(FFrameDialogNotification.DIALOG_CLOSED));
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameTextDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameTextDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameTextDialog.java	(revision 590)
@@ -0,0 +1,897 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.JToggleButton;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.gui.panels.ColorChooserPanel;
+import org.gvsig.app.gui.utils.FontChooser;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameText;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+import org.gvsig.i18n.Messages;
+
+/**
+ * Dialogo para a�adir texto al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameTextDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 314231434916661578L;
+
+    public static final ImageIcon ileft = PluginServices.getIconTheme().get(
+        "text-left-icon");
+
+    public static final ImageIcon icenterV = PluginServices.getIconTheme().get(
+        "text-center-v-icon");
+
+    public static final ImageIcon iright = PluginServices.getIconTheme().get(
+        "text-right-icon");
+
+    private javax.swing.JPanel jContentPane = null; // @jve:visual-info
+    // decl-index=0
+    // visual-constraint="593,10"
+
+    private javax.swing.JScrollPane jScrollPane = null;
+
+    private javax.swing.JTextArea taTexto = null;
+
+    private JToggleButton bIzquierda = null;
+
+    private JToggleButton bCentro = null;
+
+    private JToggleButton bDerecha = null;
+
+    private Rectangle2D rect = new Rectangle2D.Double();
+
+    private FFrameText fframetext = null; // new FFrameText();
+
+    private boolean isAcepted = false;
+
+    private javax.swing.JButton bFuente = null;
+
+    private Color textcolor = null;
+
+    private Color frameColor = null;
+
+    private Color titleColor = null;
+
+    private JCheckBox chkSurroundingRectangle = null;
+
+    private JTextField txtCellPadding = null;
+
+    private JLabel jLabel = null;
+
+    private JCheckBox chkFontSize = null;
+
+    private JTextField txtFontSize = null;
+
+    private JCheckBox chkTitle = null;
+
+    private JTextField txtTitle = null;
+
+    private JPanel jPanel = null;
+
+    private JTextField txtTitleSize = null;
+
+    private JLabel jLabel3 = null;
+
+    private JLabel jLabel4;
+
+    private JPanel jPanel1 = null;
+
+    private JTextField txtFrameSize = null;
+
+    private JLabel jLabel5 = null;
+
+    private JLabel jLabel6 = null;
+
+    private JLabel jLabel7 = null;
+
+    private JPRotation pRotation = null;
+
+    private ColorChooserPanel m_colorChooser;
+
+    private JPanel jPanel21 = null;
+
+    private ColorChooserPanel m_colorFont; // @jve:decl-index=0:visual-constraint="474,139"
+
+    private ColorChooserPanel m_colorTitle;
+
+    private AcceptCancelPanel accept;
+
+    private int pos = FFrameText.LEFT;
+
+    private FFrameText newFFrameText = null;
+
+    private Font m_font;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe de texto.
+     */
+    public FFrameTextDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframetext = (FFrameText) frame;
+        textcolor = fframetext.getTextColor();
+        frameColor = fframetext.getFrameColor();
+        titleColor = fframetext.getTitleColor();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(new BorderLayout());
+        this.setSize(419, 480);
+        this.add(getJContentPane(), java.awt.BorderLayout.CENTER);
+        getPRotation().setRotation(fframetext.getRotation());
+    }
+
+    /**
+     * Inserta el rect�ngulo a ocupar por el fframe de texto.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jLabel = new JLabel();
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.add(getJScrollPane(), null);
+            // jContentPane.add(getJComboBox(), null);
+            // jContentPane.add(getJLabel2(), null);
+            jContentPane.add(getBFuente(), null);
+            jContentPane.add(getColorFont(), null);
+            jLabel.setText(PluginServices.getText(this, "Milimetros"));
+            jLabel.setSize(110, 16);
+            jLabel.setLocation(244, 74);
+            jContentPane.add(getJPanel1(), null);
+            jContentPane.add(getJPanel(), null);
+            jContentPane.add(getChkFontSize(), null);
+            jContentPane.add(getTxtFontSize(), null);
+            jContentPane.add(getPRotation(), null);
+            jContentPane.add(getJPanel21(), null);
+            // jContentPane.add(getAcceptCancelPanel(), null);
+            jContentPane.add(getAcceptCancelPanel(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setViewportView(getTaTexto());
+            jScrollPane.setSize(261, 83);
+            jScrollPane
+                .setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
+            jScrollPane.setLocation(5, 5);
+        }
+
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes taTexto
+     * 
+     * @return javax.swing.JTextArea
+     */
+    private javax.swing.JTextArea getTaTexto() {
+        if (taTexto == null) {
+            taTexto = new javax.swing.JTextArea();
+
+            for (int i = 0; i < fframetext.getText().size(); i++) {
+                if (!((String) fframetext.getText().get(i)).equals("")) { //$NON-NLS-1$
+                    taTexto.append((String) fframetext.getText().get(i));
+                }
+            }
+        }
+
+        return taTexto;
+    }
+
+    /**
+     * This method initializes bIzquierda
+     * 
+     * @return javax.swing.JButton
+     */
+    private JToggleButton getBIzquierda() {
+        if (bIzquierda == null) {
+            bIzquierda = new JToggleButton();
+            bIzquierda.setPreferredSize(new java.awt.Dimension(28, 20));
+            if (fframetext.getPos() == FFrameText.LEFT) {
+                bIzquierda.setSelected(true);
+                pos = FFrameText.LEFT;
+            }
+
+            bIzquierda.setIcon(ileft);
+            bIzquierda.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    pos = FFrameText.LEFT;
+                    // fframetext.setPos(FFrameText.LEFT);
+                    getBIzquierda().setSelected(true);
+                    getBCentro().setSelected(false);
+                    getBDerecha().setSelected(false);
+                }
+            });
+        }
+
+        return bIzquierda;
+    }
+
+    /**
+     * This method initializes bCentro
+     * 
+     * @return javax.swing.JButton
+     */
+    private JToggleButton getBCentro() {
+        if (bCentro == null) {
+            bCentro = new JToggleButton();
+            bCentro.setPreferredSize(new java.awt.Dimension(28, 20));
+            if (fframetext.getPos() == FFrameText.CENTER) {
+                bCentro.setSelected(true);
+                pos = FFrameText.CENTER;
+            }
+
+            bCentro.setIcon(icenterV);
+            bCentro.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    pos = FFrameText.CENTER;
+                    // fframetext.setPos(FFrameText.CENTER);
+                    getBIzquierda().setSelected(false);
+                    getBCentro().setSelected(true);
+                    getBDerecha().setSelected(false);
+                }
+            });
+        }
+
+        return bCentro;
+    }
+
+    /**
+     * This method initializes bDerecha
+     * 
+     * @return javax.swing.JButton
+     */
+    private JToggleButton getBDerecha() {
+        if (bDerecha == null) {
+            bDerecha = new JToggleButton();
+            bDerecha.setPreferredSize(new java.awt.Dimension(28, 20));
+            if (fframetext.getPos() == FFrameText.RIGTH) {
+                bDerecha.setSelected(true);
+                pos = FFrameText.RIGTH;
+            }
+
+            bDerecha.setIcon(iright);
+            bDerecha.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    pos = FFrameText.RIGTH;
+                    // fframetext.setPos(FFrameText.RIGTH);
+                    getBIzquierda().setSelected(false);
+                    getBCentro().setSelected(false);
+                    getBDerecha().setSelected(true);
+                }
+            });
+        }
+
+        return bDerecha;
+    }
+
+    private AcceptCancelPanel getAcceptCancelPanel() {
+        if (accept == null) {
+            ActionListener okAction, cancelAction;
+            okAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    try {
+                        newFFrameText = (FFrameText) fframetext.clone();
+                        newFFrameText.setPos(pos);
+                        newFFrameText.setBoundBox(FLayoutUtilities.toSheetRect(
+                            rect, layoutPanel.getLayoutControl().getAT()));
+                        newFFrameText.getText().clear();
+
+                        for (int i = 0; i < getTaTexto().getLineCount(); i++) {
+                            try {
+                                String s =
+                                    getTaTexto().getText(
+                                        getTaTexto().getLineStartOffset(i),
+                                        getTaTexto().getLineEndOffset(i)
+                                            - getTaTexto()
+                                                .getLineStartOffset(i));
+
+                                if (!s.equals("")) { //$NON-NLS-1$
+                                    newFFrameText.addText(s);
+                                }
+                            } catch (Exception ex) {
+                            }
+                        }
+                        newFFrameText.setTextColor(textcolor);
+                        // fframetext.setSizeFixed(!getChkEscalaVista().isSelected());
+
+                        // jaume
+                        boolean b = getChkSurroundingRectangle().isSelected();
+                        newFFrameText
+                            .setSurrounded(getChkSurroundingRectangle()
+                                .isSelected());
+
+                        if (b) {
+                            // Hay rect�ngulo
+                            newFFrameText
+                                .setCellPadding(Double
+                                    .parseDouble(getTxtCellPadding().getText()) / 100);
+                            double i;
+                            try {
+                                i =
+                                    Double.parseDouble(getTxtFrameSize()
+                                        .getText());
+                            } catch (Exception ex) {
+                                i = 0;
+                            }
+                            if (i == 0) {
+                                i = 1;
+                            }
+                            newFFrameText.setFrameBorderSize(i / 100);
+                            newFFrameText.setFrameColor(frameColor);
+                        }
+                        b = getChkFontSize().isSelected();
+                        newFFrameText.setFixedFontSize(b);
+
+                        if (b) {
+                            // El tama�o de la fuente es fijo
+                            int i;
+                            try {
+                                i =
+                                    Integer
+                                        .parseInt(getTxtFontSize().getText());
+                            } catch (Exception ex) {
+                                i = 12;
+                            }
+                            newFFrameText.setFontSize(i);
+                        }
+                        newFFrameText.setFont(m_font);
+                        b = getChkTitle().isSelected();
+                        newFFrameText.setHasTitle(b);
+                        if (b) {
+                            // Hay t�tulo
+                            newFFrameText.setTitle(getTxtTitle().getText());
+                            int i;
+                            try {
+                                i =
+                                    Integer.parseInt(getTxtTitleSize()
+                                        .getText());
+                            } catch (Exception ex) {
+                                i = 12;
+                            }
+                            newFFrameText.setTitleSize(i);
+
+                            newFFrameText.setTitleColor(titleColor);
+                        }
+
+                        newFFrameText.setRotation(getPRotation().getRotation());
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+                    isAcepted = true;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameTextDialog.this);
+                    notifyDialogClosed();
+                    layoutPanel.getLayoutControl().setDefaultTool();
+                }
+            };
+            cancelAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    newFFrameText = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameTextDialog.this);
+                    notifyDialogClosed();
+                }
+            };
+            accept = new AcceptCancelPanel(okAction, cancelAction);
+            accept.setPreferredSize(new java.awt.Dimension(300, 300));
+            // accept.setBounds(new java.awt.Rectangle(243,387,160,28));
+            accept.setEnabled(true);
+            accept.setBounds(new java.awt.Rectangle(71, 410, 300, 32));
+            accept.setVisible(true);
+        }
+        return accept;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this, "Propiedades_texto")); //$NON-NLS-1$
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see com.iver.cit.gvsig.gui.layout.fframes.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * This method initializes bFuente
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBFuente() {
+        if (bFuente == null) {
+            bFuente = new javax.swing.JButton();
+            bFuente.setBounds(158, 98, 78, 24);
+            bFuente.setText(PluginServices.getText(this, "fuente")); //$NON-NLS-1$
+            m_font = fframetext.getFont();
+            bFuente.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    Font font =
+                        FontChooser.showDialog(
+                            Messages.getText("__seleccion_de_fuente"),
+                            m_font,
+                            /* choose style */ true,
+                            /* choose size */ false);
+                    if (font != null) {
+                        m_font = font; // fchoser=new
+                        // FontChooser();
+                        // //$NON-NLS-1$
+                    }
+                }
+            });
+        }
+
+        return bFuente;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes chbSurroundingRectangle
+     * 
+     * @return javax.swing.JCheckBox
+     * @author jaume
+     */
+    private JCheckBox getChkSurroundingRectangle() {
+        if (chkSurroundingRectangle == null) {
+            chkSurroundingRectangle = new JCheckBox();
+            chkSurroundingRectangle.setText(PluginServices.getText(this,
+                "usar_marco"));
+            chkSurroundingRectangle.setSelected(fframetext.isSurrounded());
+            chkSurroundingRectangle.setBounds(34, 20, 122, 19);
+            chkSurroundingRectangle
+                .addItemListener(new java.awt.event.ItemListener() {
+
+                    public void itemStateChanged(java.awt.event.ItemEvent e) {
+                        getTxtCellPadding().setEnabled(
+                            getChkSurroundingRectangle().isSelected());
+                        getTxtFrameSize().setEnabled(
+                            getChkSurroundingRectangle().isSelected());
+                    }
+                });
+        }
+        return chkSurroundingRectangle;
+    }
+
+    /**
+     * This method initializes txtCellPadding
+     * 
+     * @author jaume
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtCellPadding() {
+        if (txtCellPadding == null) {
+            txtCellPadding = new JTextField();
+            txtCellPadding.setEnabled(fframetext.isSurrounded());
+            txtCellPadding.setText(fframetext.getCellPadding() * 100 + "");
+            txtCellPadding.setSize(60, 20);
+            txtCellPadding.setLocation(155, 74);
+            txtCellPadding.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    ensureInteger(txtCellPadding);
+                }
+            });
+
+        }
+        return txtCellPadding;
+    }
+
+    /**
+     * This method initializes chkFontSize
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChkFontSize() {
+        if (chkFontSize == null) {
+            chkFontSize = new JCheckBox();
+            chkFontSize.setBounds(7, 160, 143, 19);
+            chkFontSize.setText(PluginServices.getText(this, "tamanyo_fuente"));
+            chkFontSize.setSelected(fframetext.isFontSizeFixed());
+            chkFontSize.addItemListener(new java.awt.event.ItemListener() {
+
+                public void itemStateChanged(java.awt.event.ItemEvent e) {
+                    getTxtFontSize().setEnabled(getChkFontSize().isSelected());
+                }
+            });
+        }
+        return chkFontSize;
+    }
+
+    /**
+     * This method initializes txtFontSize
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtFontSize() {
+        if (txtFontSize == null) {
+            txtFontSize = new JTextField();
+            txtFontSize.setBounds(158, 162, 60, 17);
+            txtFontSize.setEnabled(fframetext.isFontSizeFixed());
+            if (txtFontSize.isEnabled()) {
+                txtFontSize.setText(fframetext.getFontSize() + "");
+            }
+            txtFontSize.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    ensureInteger(txtFontSize);
+                }
+            });
+        }
+        return txtFontSize;
+    }
+
+    /**
+     * This method initializes chkTitle2
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChkTitle() {
+        if (chkTitle == null) {
+            chkTitle = new JCheckBox();
+            chkTitle.setText(PluginServices.getText(this, "usar_titulo"));
+            chkTitle.setSelected(fframetext.hasTitle());
+            chkTitle.setBounds(36, 20, 118, 19);
+            chkTitle.addChangeListener(new javax.swing.event.ChangeListener() {
+
+                public void stateChanged(javax.swing.event.ChangeEvent e) {
+                    getTxtTitle().setEnabled(chkTitle.isSelected());
+                    getTxtTitleSize().setEnabled(chkTitle.isSelected());
+                    jLabel3.setEnabled(chkTitle.isSelected());
+                }
+            });
+        }
+        return chkTitle;
+    }
+
+    /**
+     * This method initializes txtTitle
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtTitle() {
+        if (txtTitle == null) {
+            txtTitle = new JTextField();
+            txtTitle.setEnabled(fframetext.hasTitle());
+            if (fframetext.hasTitle()) {
+                txtTitle.setText(fframetext.getTitle());
+            }
+            txtTitle.setBounds(35, 47, 254, 20);
+        }
+        return txtTitle;
+    }
+
+    /**
+     * This method initializes jPanel
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel() {
+        if (jPanel == null) {
+            jPanel = new JPanel();
+            jLabel3 = new JLabel();
+            jPanel.setLayout(null);
+            jPanel.setBounds(4, 303, 403, 105);
+            jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
+                PluginServices.getText(this, "titulo_fframetext"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+            jLabel3.setBounds(35, 73, 175, 20);
+            jLabel3.setText(PluginServices.getText(this, "tamanyo_fuente"));
+            jLabel3.setEnabled(fframetext.hasTitle());
+            jPanel.add(getTxtTitleSize(), null);
+            jPanel.add(jLabel3, null);
+            jPanel.add(getChkTitle(), null);
+            jPanel.add(getTxtTitle(), null);
+            jLabel4 = new JLabel();
+            jLabel4.setBounds(245, 73, 96, 20);
+            jPanel.add(jLabel4, null);
+            jLabel4.setText(PluginServices.getText(this, "pixeles"));
+            jPanel.add(getColorTitle(), null);
+        }
+        return jPanel;
+    }
+
+    /**
+     * This method initializes txtTitleSize
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtTitleSize() {
+        if (txtTitleSize == null) {
+            txtTitleSize = new JTextField();
+            txtTitleSize.setBounds(190, 73, 50, 20);
+            txtTitleSize.setEnabled(fframetext.hasTitle());
+            int i = fframetext.getTitleSize();
+            if (i == 0 && !txtTitleSize.isEnabled()) {
+                i = 5;
+            }
+            txtTitleSize.setText(i + "");
+            txtTitleSize.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    ensureInteger(txtTitleSize);
+                }
+            });
+        }
+        return txtTitleSize;
+    }
+
+    /**
+     * Asegura cutremente que no se meten valores que no sean. El funcionamiento
+     * consiste en si el �ltimo car�cter escrito no vale para formar un int
+     * entonces se elimina.
+     * 
+     * enteros.
+     * 
+     * @param tf
+     */
+    private void ensureInteger(JTextField tf) {
+        String s = tf.getText();
+        try {
+            Integer.parseInt(s);
+        } catch (Exception e) {
+            if (s.length() != 0) {
+                tf.setText(s.substring(0, s.length() - 1));
+            } else {
+                tf.setText("");
+            }
+        }
+    }
+
+    /**
+     * This method initializes jPanel1
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel1() {
+        if (jPanel1 == null) {
+            jPanel1 = new JPanel();
+            jLabel5 = new JLabel();
+            jLabel6 = new JLabel();
+            jLabel7 = new JLabel();
+            jPanel1.setLayout(null);
+            jPanel1.setBounds(5, 185, 403, 115);
+            jPanel1.add(getTxtCellPadding(), null);
+            jPanel1.add(getChkSurroundingRectangle(), null);
+            jPanel1.add(jLabel, null);
+            jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null, PluginServices.getText(this, "marco"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+            jLabel5.setText(PluginServices.getText(this, "Milimetros"));
+            jLabel5.setLocation(244, 46);
+            jLabel5.setSize(110, 16);
+            jLabel5.setPreferredSize(new java.awt.Dimension(40, 16));
+            jLabel6.setBounds(34, 47, 204, 20);
+            jLabel6.setText(PluginServices.getText(this, "tamanyo_borde"));
+            jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+            jLabel7.setBounds(34, 73, 202, 20);
+            jLabel7.setText(PluginServices.getText(this, "margenes"));
+            jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+            jPanel1.add(getTxtFrameSize(), null);
+            jPanel1.add(jLabel6, null);
+            jPanel1.add(jLabel7, null);
+            jPanel1.add(jLabel5, null);
+            jPanel1.add(getColorFrame(), null);
+        }
+        return jPanel1;
+    }
+
+    /**
+     * This method initializes txtFrameSize
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtFrameSize() {
+        if (txtFrameSize == null) {
+            txtFrameSize = new JTextField();
+            txtFrameSize.setEnabled(fframetext.isSurrounded());
+            // if (txtFrameSize.isEnabled()){
+            double i = fframetext.getFrameBorderSize() * 100;
+            if (i == 0) {
+                i = 1;
+            }
+            txtFrameSize.setText(i + "");
+            // }
+            txtFrameSize.setLocation(155, 47);
+            txtFrameSize.setSize(60, 20);
+        }
+        return txtFrameSize;
+    }
+
+    /**
+     * This method initializes jButton1
+     * 
+     * @return javax.swing.JButton
+     */
+    private ColorChooserPanel getColorFrame() {
+        if (m_colorChooser == null) {
+            m_colorChooser = new ColorChooserPanel();
+            m_colorChooser.setAlpha(255);
+            m_colorChooser.setBounds(new java.awt.Rectangle(155, 15, 80, 30));
+            m_colorChooser
+                .addActionListener(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(ActionEvent e) {
+                        frameColor = m_colorChooser.getColor();
+                    }
+                });
+        }
+        return m_colorChooser;
+    }
+
+    /**
+     * This method initializes jButton1
+     * 
+     * @return javax.swing.JButton
+     */
+    private ColorChooserPanel getColorFont() {
+        if (m_colorFont == null) {
+            m_colorFont = new ColorChooserPanel();
+            m_colorFont.setAlpha(255);
+            m_colorFont.setLocation(new java.awt.Point(158, 129));
+            m_colorFont.setSize(new java.awt.Dimension(80, 30));
+            m_colorFont.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(ActionEvent e) {
+                    textcolor = m_colorFont.getColor();
+                }
+            });
+        }
+        return m_colorFont;
+    }
+
+    /**
+     * This method initializes jButton1
+     * 
+     * @return javax.swing.JButton
+     */
+    private ColorChooserPanel getColorTitle() {
+        if (m_colorTitle == null) {
+            m_colorTitle = new ColorChooserPanel();
+            m_colorTitle.setAlpha(255);
+            m_colorTitle.setBounds(new java.awt.Rectangle(155, 15, 80, 30));
+            m_colorTitle.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(ActionEvent e) {
+                    titleColor = m_colorTitle.getColor();
+                }
+            });
+        }
+        return m_colorTitle;
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(281, 0, 125, 131);
+        }
+        return pRotation;
+    }
+
+    /**
+     * This method initializes jPanel21
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel21() {
+        if (jPanel21 == null) {
+            jPanel21 = new JPanel();
+            jPanel21.setBounds(new java.awt.Rectangle(6, 95, 126, 60));
+            jPanel21.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null, PluginServices.getText(this, "alinear"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+            jPanel21.add(getBIzquierda(), null);
+            jPanel21.add(getBCentro(), null);
+            jPanel21.add(getBDerecha(), null);
+        }
+        return jPanel21;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameText;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGridDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGridDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGridDialog.java	(revision 590)
@@ -0,0 +1,719 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.geom.Rectangle2D;
+import java.text.DecimalFormat;
+
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.gui.panels.ColorChooserPanel;
+import org.gvsig.app.gui.utils.FontChooser;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGrid;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.numberFormat.DecimalFormatDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.numberFormat.DecimalFormatPanel;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.legend.gui.PanelEditSymbol;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.gui.awt.text.RotatedTextUtils;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+import org.gvsig.gui.beans.numberTextField.NumberTextField;
+import org.gvsig.gui.beans.simplecombobox.SimpleComboBox;
+import org.gvsig.gui.beans.swing.JNumberSpinner;
+import org.gvsig.i18n.Messages;
+import org.gvsig.math.intervals.IntervalUtils;
+
+public class FFrameGridDialog extends AbstractFFrameDialog implements
+IFFrameDialog {
+
+    private static final long serialVersionUID = 1L;
+    private JPanel pnlMain = null;
+    private JTextField txtIntervalX = null;
+    private JPanel pnlIntervalGroup = null;
+    private JTextField txtIntervalY = null;
+    private JLabel lblUnitsX = null;
+    private JLabel lblUnitsY = null;
+    private JPanel jPanel8 = null;
+    private JPanel jPanel9 = null;
+    private JRadioButton rbPoints = null;
+    private JRadioButton rbLines = null;
+    private JButton bSymbol = null;
+    private JPanel pnlLabelGroup = null;
+    private JPanel pnlFont = null;
+    private JButton jButton = null;
+    private ColorChooserPanel colorChooserPanel = null;
+
+    private FFrameGrid fframegrid;
+    private FFrameView fframeview;
+    private AcceptCancelPanel accept;
+    private FFrameGrid newFFrameGrid;
+    // private Color textcolor;
+    private ISymbol symbol;
+    private Font m_font;
+    private ButtonGroup bg = new ButtonGroup();
+	private NumberTextField tfNumDivHoriz = null;
+	private NumberTextField tfNumDivVert = null;
+	private JRadioButton rbHorizDiv = null;
+	private JRadioButton rbVertDiv = null;
+	private JPanel pnlDistance = null;
+	private JRadioButton rbDistance = null;
+	private JButton btnNumberFormat = null;
+	private JNumberSpinner nfRotationHoriz = null; 
+	private JNumberSpinner nfRotationVert = null;
+	private ButtonGroup btGrpInterval = null;
+	private static final Insets defaultInsets = new Insets(4, 4, 4, 4);
+	private DecimalFormat format = new DecimalFormat();
+	private SimpleComboBox cbLblAnchor=null;
+
+    public FFrameGridDialog(LayoutPanel layout, FFrameGrid fframe) {
+        super(layout, fframe);
+        this.fframegrid = fframe;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        this.setLayout(new BorderLayout());
+        this.add(getPnlMain(), java.awt.BorderLayout.CENTER);
+        this.add(getAcceptCancelPanel(), java.awt.BorderLayout.SOUTH);
+    }
+
+    /**
+     * This method initializes jPanel1
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlMain() {
+        if (pnlMain == null) {
+            pnlMain = new JPanel(new GridBagLayout());
+            GridBagConstraints c = new GridBagConstraints();
+            c.insets = defaultInsets;
+            c.fill = GridBagConstraints.HORIZONTAL;
+            c.anchor = GridBagConstraints.FIRST_LINE_START;
+            c.gridx = 0;
+            int row = 0;
+            c.gridy = row++;
+            c.gridwidth = 1;
+            pnlMain.add(getPnlIntervalGroup(), c);
+            c.gridx = 1;
+            c.fill = GridBagConstraints.NONE;
+            pnlMain.add(getPnlSymbologyGroup(), c);
+            
+            c.gridy = row++;
+            c.gridx = 0;
+            c.gridwidth = 2;
+            c.fill = GridBagConstraints.HORIZONTAL;
+            pnlMain.add(getPnlLabelGroup(), c);
+
+        }
+        return pnlMain;
+    }
+
+    /**
+     * This method initializes txtIntervalX
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtIntervalX() {
+        if (txtIntervalX == null) {
+            txtIntervalX = new JTextField(10);
+            txtIntervalX.setText(String.valueOf(fframegrid.getIntervalX()));
+            txtIntervalX.setName("txtIntervalX");
+        }
+        return txtIntervalX;
+    }
+
+    /**
+     * This method initializes jPanel6
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlIntervalGroup() {
+        if (pnlIntervalGroup == null) {
+            pnlIntervalGroup = new JPanel(new GridBagLayout());
+            pnlIntervalGroup.setBorder(BorderFactory.createTitledBorder(Messages.getText( "Interval")));
+            GridBagConstraints c = new GridBagConstraints();
+            
+            c.anchor = GridBagConstraints.FIRST_LINE_START;
+            c.gridx = 0;
+            c.insets = defaultInsets;
+            int row = 0;
+            c.gridy = row++;
+            c.gridwidth = 2;
+            pnlIntervalGroup.add(getRbDistance(), c); 
+            c.gridx = 0;
+            c.gridwidth = 2;
+            c.gridy = row++;
+            c.insets = new Insets(defaultInsets.top, 25, defaultInsets.bottom, defaultInsets.right);
+            pnlIntervalGroup.add(getPnlDistance(), c);
+            
+            c.gridx = 0;
+            c.gridy = row++;
+            c.insets = defaultInsets;
+            c.gridwidth = 1;
+            pnlIntervalGroup.add(getRbHorizDiv(), c);
+            c.gridx = 1;
+            pnlIntervalGroup.add(getTfNumDivHoriz(), c);
+            
+            c.gridy = row++;
+            c.gridx = 0;
+            pnlIntervalGroup.add(getRbVertDiv(), c);
+            c.gridx = 1;
+            pnlIntervalGroup.add(getTfNumDivVert(), c);
+            getBtnGrpInterval().add(getRbDistance());
+            getBtnGrpInterval().add(getRbVertDiv());
+            getBtnGrpInterval().add(getRbHorizDiv());
+        }
+        return pnlIntervalGroup;
+    }
+    
+    private JRadioButton getRbHorizDiv() {
+    	if (rbHorizDiv==null) {
+    		rbHorizDiv = new JRadioButton(Messages.getText("Number_of_horizontal_divisions"));
+    		rbHorizDiv.setSelected(fframegrid.getUseNumDivisions()==FFrameGrid.NUM_DIVISIONS_HORIZ_MODE);
+    	}
+    	return rbHorizDiv;
+    }
+    
+    private JRadioButton getRbVertDiv() {
+    	if (rbVertDiv==null) {
+    		rbVertDiv = new JRadioButton(Messages.getText("Number_of_vertical_divisions"));
+    		rbVertDiv.setSelected(fframegrid.getUseNumDivisions()==FFrameGrid.NUM_DIVISIONS_VERT_MODE);
+    	}
+    	return rbVertDiv;
+    }
+    
+    private JRadioButton getRbDistance() {
+    	if (rbDistance==null) {
+    		rbDistance = new JRadioButton(Messages.getText("Distance"));
+    		rbDistance.setSelected(fframegrid.getUseNumDivisions()==FFrameGrid.FIXED_DISTANCE_MODE);
+    	}
+    	return rbDistance;
+    }
+    
+    private JPanel getPnlDistance() {
+    	if (pnlDistance==null) {
+    		pnlDistance = new JPanel(new GridBagLayout());
+    		GridBagConstraints c = new GridBagConstraints();
+    		
+    		int row = 0;
+    		c.insets = new Insets(0, 0, 4, 4);
+    		c.gridy = row++;
+            c.gridx = 0;
+            c.anchor = GridBagConstraints.LINE_START;
+            JLabel labelX = new JLabel("x");
+    		pnlDistance.add(labelX, c);
+    		c.gridx = 1;
+    		c.insets = defaultInsets;
+    		pnlDistance.add(getTxtIntervalX(), c);
+    		lblUnitsX = new JLabel();
+    		c.insets = new Insets(0, 4, 4, 0);
+    		c.gridx = 2;
+    		pnlDistance.add(lblUnitsX, c);
+    		
+    		c.insets = new Insets(4, 0, 0, 4);
+    		c.gridy = row++;
+            c.gridx = 0;
+            JLabel labelY = new JLabel("y");
+    		pnlDistance.add(labelY, c);
+            c.insets = defaultInsets;
+    		c.gridx = 1;
+    		pnlDistance.add(getTxtIntervalY(), c);
+    		lblUnitsY = new JLabel();
+    		c.gridx = 2;
+    		c.insets = new Insets(4, 4, 0, 0);
+    		pnlDistance.add(lblUnitsY, c);
+    		
+    	}
+    	return pnlDistance;
+    }
+    
+    private ButtonGroup getBtnGrpInterval() {
+    	if (btGrpInterval==null) {
+    		btGrpInterval = new ButtonGroup();
+    	}
+    	return btGrpInterval;
+    }
+    
+    private NumberTextField getTfNumDivHoriz() {
+    	if (tfNumDivHoriz==null) {
+    		tfNumDivHoriz = new NumberTextField(3);
+    		tfNumDivHoriz.addFocusListener(new FocusListener() {
+				public void focusLost(FocusEvent e) {
+					if (getRbHorizDiv().isSelected()) {
+						calculateDistance(1, tfNumDivHoriz.getIntValue());
+					}
+				}
+				public void focusGained(FocusEvent e) {}
+			});
+    		tfNumDivHoriz.setValue(new Integer(fframegrid.getNumDivisionsHoriz()));
+    	}
+    	return tfNumDivHoriz;
+    }
+    protected void calculateDistance(int axis, int numDivisions) {
+    	if (fframeview!=null &&
+    			fframeview.getMapContext().getViewPort().getAdjustedEnvelope()!=null) {
+    		Envelope env = fframeview.getMapContext().getViewPort().getAdjustedEnvelope();
+    		double interval = IntervalUtils.roundIntervalDivision(env.getLength(axis), numDivisions);
+    		getTxtIntervalX().setText(String.valueOf(interval));
+    		getTxtIntervalY().setText(String.valueOf(interval));
+    	}
+    }
+    
+    private NumberTextField getTfNumDivVert() {
+    	if (tfNumDivVert==null) {
+    		tfNumDivVert = new NumberTextField(3);
+    		tfNumDivVert.addFocusListener(new FocusListener() {
+				public void focusLost(FocusEvent e) {
+					if (getRbVertDiv().isSelected()) {
+						calculateDistance(0, tfNumDivVert.getIntValue());
+					}
+				}
+				public void focusGained(FocusEvent e) {}
+			});
+    		tfNumDivVert.setValue(new Integer(fframegrid.getNumDivisionsVert()));
+    	}
+    	return tfNumDivVert;
+    }
+
+    /**
+     * This method initializes txtIntervalY
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtIntervalY() {
+        if (txtIntervalY == null) {
+            txtIntervalY = new JTextField(10);
+            txtIntervalY.setText(String.valueOf(fframegrid.getIntervalY()));
+        }
+        return txtIntervalY;
+    }
+
+    /**
+     * This method initializes jPanel8
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlSymbologyGroup() {
+        if (jPanel8 == null) {
+            jPanel8 = new JPanel(new GridBagLayout());
+            GridBagConstraints c = new GridBagConstraints(); 
+
+            jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(
+            			Messages.getText("Simbologia")));
+            c.anchor = GridBagConstraints.FIRST_LINE_START;
+            c.gridy = 0;
+            c.gridx = 0;
+            jPanel8.add(getJPanel9(), c);
+            c.anchor = GridBagConstraints.FIRST_LINE_END;
+            c.gridy = 1;
+            jPanel8.add(getBSymbol(), c);
+        }
+        return jPanel8;
+    }
+
+    /**
+     * This method initializes jPanel9
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel9() {
+        if (jPanel9 == null) {
+            jPanel9 = new JPanel(new GridBagLayout());
+            GridBagConstraints c = new GridBagConstraints(); 
+            c.gridx = 0;
+            c.gridy = 0;
+            c.anchor = GridBagConstraints.FIRST_LINE_START;
+
+            c.insets = new Insets(0, 0, 0, 8);
+            jPanel9.add(getRbPoints(), c);
+            c.insets = new Insets(0, 0, 0, 0);
+            c.gridx = 1;
+            jPanel9.add(getRbLines(), c);
+        }
+        return jPanel9;
+    }
+
+    /**
+     * This method initializes rbPoints
+     * 
+     * @return javax.swing.JRadioButton
+     */
+    private JRadioButton getRbPoints() {
+        if (rbPoints == null) {
+            rbPoints = new JRadioButton();
+            bg.add(rbPoints);
+            rbPoints.setSelected(!fframegrid.isLine());
+            rbPoints.setText(PluginServices.getText(this, "points"));
+        }
+        return rbPoints;
+    }
+
+    /**
+     * This method initializes rbLines
+     * 
+     * @return javax.swing.JRadioButton
+     */
+    private JRadioButton getRbLines() {
+        if (rbLines == null) {
+            rbLines = new JRadioButton();
+            bg.add(rbLines);
+            rbLines.setSelected(fframegrid.isLine());
+            rbLines.setText(PluginServices.getText(this, "lines"));
+        }
+        return rbLines;
+    }
+
+    /**
+     * This method initializes bSymbol
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getBSymbol() {
+        if (bSymbol == null) {
+            bSymbol = new JButton();
+            bSymbol.setText(PluginServices.getText(this, "symbol"));
+            bSymbol.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    PanelEditSymbol pes = new PanelEditSymbol();
+                    if (getRbLines().isSelected()) {
+                        pes.setSymbol(fframegrid.getSymbolLine());
+                        pes.setShapeType(Geometry.TYPES.CURVE);
+                    } else {
+                        pes.setSymbol(fframegrid.getSymbolPoint());
+                        pes.setShapeType(Geometry.TYPES.POINT);
+                    }
+                    PluginServices.getMDIManager().addWindow(pes);
+                    symbol = pes.getSymbol();
+                }
+            });
+        }
+        return bSymbol;
+    }
+
+    /**
+     * This method initializes jPanel10
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlLabelGroup() {
+        if (pnlLabelGroup == null) {
+            pnlLabelGroup = new JPanel(new GridBagLayout());
+            pnlLabelGroup.setBorder(BorderFactory.createTitledBorder(
+            		Messages.getText("Label")));
+            
+            GridBagConstraints c = new GridBagConstraints();
+            int row = 0;
+            
+            c.insets = defaultInsets;
+            c.gridx = 0;
+            c.gridy = row++;
+            c.gridwidth = 1;
+            c.anchor = GridBagConstraints.LINE_START;
+            pnlLabelGroup.add(new JLabel(Messages.getText("Number_format")), c);
+            c.gridx = 1;
+            pnlLabelGroup.add(getBtnNumberFormat(), c);
+            
+            c.gridx = 0;
+            c.gridy = row++;
+            c.gridwidth = 1;
+            pnlLabelGroup.add(new JLabel(Messages.getText("Horizontal_label_rotation")), c);
+            c.gridx = 1;
+            pnlLabelGroup.add(getNfRotationHoriz(), c);
+            
+            c.gridy = row++;
+            c.gridx = 0;
+            pnlLabelGroup.add(new JLabel(Messages.getText("Vertical_label_rotation")), c);
+            c.gridx = 1;
+            pnlLabelGroup.add(getNfRotationVert(), c);
+            
+            c.gridy = row++;
+            c.gridx = 0;
+            c.fill = GridBagConstraints.NONE;
+            pnlLabelGroup.add(new JLabel(Messages.getText("Anchor")), c);
+            c.gridx = 1;
+            c.fill = GridBagConstraints.HORIZONTAL;
+            pnlLabelGroup.add(getCbLblAnchor(), c);
+            
+            c.gridx = 0;
+            c.gridy = row++;
+            c.gridwidth = 2;
+            pnlLabelGroup.add(getPnlFont(), c);
+        }
+        return pnlLabelGroup;
+    }
+    
+    private SimpleComboBox getCbLblAnchor() {
+    	if (cbLblAnchor==null) {
+        	cbLblAnchor = new SimpleComboBox();
+        	cbLblAnchor.addItem(Messages.getText("Corner"), RotatedTextUtils.ANCHOR_CORNER);
+        	cbLblAnchor.addItem(Messages.getText("Center"), RotatedTextUtils.ANCHOR_CENTER);
+        	cbLblAnchor.setSelectedCode(fframegrid.getLabelAnchor());
+    	}
+    	return cbLblAnchor;
+    }
+    
+    private JButton getBtnNumberFormat() {
+    	if (btnNumberFormat==null) {
+    		btnNumberFormat = new JButton(Messages.getText("Format"));
+    		format = fframegrid.getLabelFormat();
+    		btnNumberFormat.addActionListener(new java.awt.event.ActionListener() {
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                	openDecimalFormatDialog();
+                }
+    		});
+    	}
+    	return btnNumberFormat;
+    }
+    
+    protected void openDecimalFormatDialog() {
+    	final DecimalFormatDialog dialog = new DecimalFormatDialog(null, null);
+    	dialog.addOkButtonActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				applyDecimalFormatSettings(dialog.getPanel());
+			}
+    		
+    	});
+    	dialog.getPanel().setFormat(fframegrid.getLabelFormat());
+    	PluginServices.getMDIManager().addWindow(dialog);
+    }
+    
+    protected void applyDecimalFormatSettings(DecimalFormatPanel p) {
+    	format = p.getFormat();
+    }
+    
+    private JNumberSpinner getNfRotationHoriz() {
+    	if (nfRotationHoriz==null) {
+    		nfRotationHoriz = new JNumberSpinner(0, 3, 0, 360, 1);
+    		nfRotationHoriz.setInteger((int)fframegrid.getHorizLabelRotation());
+    	}
+    	return nfRotationHoriz;
+    }
+    
+    private JNumberSpinner getNfRotationVert() {
+    	if (nfRotationVert==null) {
+    		nfRotationVert = new JNumberSpinner(0, 3, 0, 360, 1);
+    		nfRotationVert.setInteger((int)fframegrid.getVertLabelRotation());
+    	}
+    	return nfRotationVert;
+    }
+
+    /**
+     * This method initializes jPanel11
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlFont() {
+        if (pnlFont == null) {
+            pnlFont = new JPanel(new GridBagLayout());
+            GridBagConstraints c = new GridBagConstraints();
+            c.anchor = GridBagConstraints.FIRST_LINE_START;
+            c.insets = new Insets(0, 0, 0, 4);
+            c.gridy = 0;
+            c.gridx = 0;
+            pnlFont.add(new JLabel(Messages.getText("Font_type")), c);
+            c.gridx = 1;
+            c.insets = new Insets(0, 4, 0, 4);
+            pnlFont.add(getJButton(), c);
+            c.gridx = 2;
+            c.insets = new Insets(0, 4, 0, 0);
+            pnlFont.add(getColorChooserPanel(), c);
+        }
+        return pnlFont;
+    }
+
+    /**
+     * This method initializes jButton
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getJButton() {
+        if (jButton == null) {
+            jButton = new JButton();
+            jButton.setText(PluginServices.getText(this, "Font"));
+            m_font = fframegrid.getFont();
+            jButton.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    Font font =
+                        FontChooser.showDialog(PluginServices.getText(this,
+                        "__seleccion_de_fuente"), m_font);
+                    if (font != null)
+                        m_font = font; // fchoser=new
+                    // FontChooser();
+                    // //$NON-NLS-1$
+                }
+            });
+        }
+        return jButton;
+    }
+
+    /**
+     * This method initializes colorChooserPanel
+     * 
+     * @return com.iver.cit.gvsig.gui.panels.ColorChooserPanel
+     */
+    private ColorChooserPanel getColorChooserPanel() {
+        if (colorChooserPanel == null) {
+            colorChooserPanel = new ColorChooserPanel();
+            colorChooserPanel.setAlpha(255);
+            colorChooserPanel.setColor(fframegrid.getFontColor());
+        }
+        return colorChooserPanel;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameGrid;
+    }
+
+    private AcceptCancelPanel getAcceptCancelPanel() {
+        if (accept == null) {
+            ActionListener okAction, cancelAction;
+            okAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    try {
+                        newFFrameGrid = (FFrameGrid) fframegrid.clone();
+                        newFFrameGrid.setFFrameDependence(fframeview);
+                        
+                        newFFrameGrid
+                        .setIntervalX(Double.parseDouble(getTxtIntervalX()
+                            .getText().toString()));
+                        newFFrameGrid
+                        .setIntervalY(Double.parseDouble(getTxtIntervalY()
+                            .getText().toString()));
+
+                        if (getRbLines().isSelected()) {
+                            if (symbol != null)
+                                newFFrameGrid.setSymbolLine(symbol);
+                        } else {
+                            if (symbol != null)
+                                newFFrameGrid.setSymbolPoint(symbol);
+                        }
+
+                        newFFrameGrid.setTextColor(getColorChooserPanel()
+                            .getColor());
+                        newFFrameGrid.setSizeFont(m_font.getSize());
+                        newFFrameGrid.setIsLine(getRbLines().isSelected());
+                        newFFrameGrid.setFont(m_font);
+                        newFFrameGrid.setRotation(fframeview.getRotation());
+                        newFFrameGrid.setHorizLabelRotation(getNfRotationHoriz().getInteger());
+                        newFFrameGrid.setVertLabelRotation(getNfRotationVert().getInteger());
+                        newFFrameGrid.setLabelAnchor(getCbLblAnchor().getSelectedCode());
+                        newFFrameGrid.setLabelFormat(format);
+                        if (getRbDistance().isSelected()) {
+                        	newFFrameGrid.setUseNumDivisions(FFrameGrid.FIXED_DISTANCE_MODE); 
+                        }
+                        else if (getRbHorizDiv().isSelected()) {
+                        	newFFrameGrid.setUseNumDivisions(FFrameGrid.NUM_DIVISIONS_HORIZ_MODE);
+                        	newFFrameGrid.setNumDivisionsHoriz(getTfNumDivHoriz().getIntValue());
+                        }
+                        else if (getRbVertDiv().isSelected()) {
+                        	newFFrameGrid.setUseNumDivisions(FFrameGrid.NUM_DIVISIONS_VERT_MODE);
+                        	newFFrameGrid.setNumDivisionsVert(getTfNumDivVert().getIntValue());
+                        }
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameGridDialog.this);
+                    notifyDialogClosed();
+                }
+            };
+            cancelAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    newFFrameGrid = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameGridDialog.this);
+                    notifyDialogClosed();
+                }
+            };
+            accept = new AcceptCancelPanel(okAction, cancelAction);
+            accept.setEnabled(true);
+            accept.setVisible(true);
+        }
+        return accept;
+    }
+
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo =
+            new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE);
+        m_viewinfo.setTitle(PluginServices.getText(this, "Grid_settings"));
+        m_viewinfo.setWidth(620);
+        m_viewinfo.setHeight(440);
+
+        return m_viewinfo;
+    }
+
+    public boolean getIsAcepted() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public void setFFrameView(FFrameView fview) {
+        fframeview = fview;
+        //Set the label
+        if (fframeview.getMapContext() != null){
+            lblUnitsX.setText(Messages.getText(MapContext.getDistanceNames()[
+                   fframeview.getMapContext().getViewPort().getMapUnits()]));
+            lblUnitsY.setText(Messages.getText(MapContext.getDistanceNames()[
+                   fframeview.getMapContext().getViewPort().getMapUnits()]));
+        }
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+	public void setRectangle(Rectangle2D r) {
+		// nothing to do as this fframe takes the size from the associated fframeview
+	}
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameDialogNotification.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameDialogNotification.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameDialogNotification.java	(revision 590)
@@ -0,0 +1,12 @@
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import org.gvsig.tools.observer.BaseNotification;
+
+public class FFrameDialogNotification extends BaseNotification {
+    
+	public FFrameDialogNotification(String type) {
+    	super(type, new Object[0]);
+    }
+	public static final String DIALOG_CLOSED = "DialogClosed";
+	public static final String FRAME_CREATED = "FrameCreated";
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameOverViewDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameOverViewDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameOverViewDialog.java	(revision 590)
@@ -0,0 +1,399 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JList;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.fframes.ListWithoutOverViewModel;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Di�logo para a�adir una localizador al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameOverViewDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 4912177399119383422L;
+    private javax.swing.JPanel jContentPane = null; // @jve:decl-index=0:visual-constraint="37,10"
+    private javax.swing.JLabel lVistas = null;
+    private javax.swing.JScrollPane jScrollPane = null;
+    private javax.swing.JList liVistas = null; // @jve:visual-info decl-index=0
+                                               // visual-constraint="98,-3"
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private javax.swing.JLabel lCalidad = null;
+    private javax.swing.JComboBox cbCalidad = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameOverView fframeoverview = null; // new FFrameView();
+    private boolean isAcepted = false;
+    private JPRotation rotation = null;
+    private FFrameOverView newFFrameView;
+    private FFrameView fframeDependence;
+    private FFrameView fframeview;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe vista.
+     */
+    public FFrameOverViewDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframeoverview = (FFrameOverView) frame;
+        fframeDependence = (FFrameView) fframeoverview.getFFrameDependence()[0];
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.add(getJContentPane(), null);
+        this.setSize(463, 222);
+
+        getPRotation().setRotation(fframeoverview.getRotation());
+    }
+
+    /**
+     * Inserta el rect�ngulo que ocupar� el fframe vista.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.add(getLVistas(), null);
+            jContentPane.add(getJScrollPane(), null);
+            jContentPane.add(getLCalidad(), null);
+            jContentPane.add(getCbCalidad(), null);
+            jContentPane.add(getbAceptar(), null);
+            jContentPane.add(getBCancelar(), null);
+            jContentPane.setSize(462, 184);
+            jContentPane.setPreferredSize(new java.awt.Dimension(60, 60));
+            jContentPane.setLocation(0, 0);
+            jContentPane.add(getPRotation(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes lVistas
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLVistas() {
+        if (lVistas == null) {
+            lVistas = new javax.swing.JLabel();
+            lVistas.setSize(85, 19);
+            lVistas.setText(PluginServices.getText(this, "Vista"));
+            lVistas.setLocation(10, 10);
+        }
+
+        return lVistas;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setViewportView(getLiVistas());
+            jScrollPane.setBounds(99, 8, 224, 64);
+            jScrollPane.setPreferredSize(new java.awt.Dimension(250, 60));
+        }
+
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes liVistas
+     * 
+     * @return javax.swing.JList
+     */
+    private javax.swing.JList getLiVistas() {
+        if (liVistas == null) {
+            ListViewModel listmodel = new ListWithoutOverViewModel();
+
+            listmodel.addViews(layoutPanel);
+            
+            // ================ Remove frames with view = null
+            List<FFrameView> toremove = new ArrayList();
+            int sz = listmodel.getSize();
+            Object item = null;
+            FFrameView item_fv = null;
+            for (int i=0; i<sz; i++) {
+                item = listmodel.getElementAt(i);
+                if (item instanceof FFrameView) {
+                    item_fv = (FFrameView) item;
+                    if (item_fv.getView() == null) {
+                        toremove.add(item_fv);
+                    }
+                }
+            }
+            for (int i=0; i<toremove.size(); i++) {
+                listmodel.removeFrameView(toremove.get(i));
+            }
+            // ================
+
+            liVistas = new javax.swing.JList();
+            liVistas.setModel(listmodel);
+
+            for (int i = 0; i < liVistas.getModel().getSize(); i++) {
+                if (fframeDependence != null) {
+                    fframeview =
+                        (FFrameView) liVistas.getModel().getElementAt(i);
+
+                    if (fframeview == fframeoverview.getFFrameDependence()[0]) {
+                        liVistas.setSelectedIndex(i);
+                    }
+                }
+            }
+
+            liVistas
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+
+                    private int selectIndex = -1;
+
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                        IFFrame[] fframes =
+                            layoutPanel.getLayoutContext().getFFrames();
+                        int selectInt =
+                            ((JList) e.getSource()).getSelectedIndex();
+                        if (selectInt != selectIndex) {
+                            selectIndex = selectInt;
+                            if (selectIndex == -1) {
+                                return;
+                            }
+                            fframeview =
+                                (FFrameView) liVistas.getModel().getElementAt(
+                                    selectInt);
+
+                            for (int i = 0; i < fframes.length; i++) {
+                                IFFrame f = fframes[i];
+
+                                if (f instanceof FFrameView) {
+                                    if (((FFrameView) f).getView() == fframeview
+                                        .getView()) {
+                                        fframeDependence = fframeview;
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                });
+        }
+
+        return liVistas;
+    }
+
+    /**
+     * This method initializes jButton
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getbAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setSize(85, 26);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.setLocation(59, 136);
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    try {
+                        newFFrameView = (FFrameOverView) fframeoverview.clone();
+                        newFFrameView.setBoundBox(FLayoutUtilities.toSheetRect(
+                            rect, layoutPanel.getLayoutControl().getAT()));
+                        newFFrameView.setRotation(getPRotation().getRotation());
+                        if (fframeDependence != null) {
+                            newFFrameView.setFFrameDependence(fframeDependence);
+                            newFFrameView.setView(fframeDependence.getView());
+
+                            newFFrameView.setQuality(getCbCalidad()
+                                .getSelectedIndex());
+                            newFFrameView.setBoundBox(FLayoutUtilities
+                                .toSheetRect(rect, layoutPanel
+                                    .getLayoutControl().getAT()));
+
+                        }
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+
+                    isAcepted = true;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameOverViewDialog.this);
+                    notifyDialogClosed();
+                    layoutPanel.getLayoutControl().setDefaultTool();
+                    fframeoverview.refresh();
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setSize(85, 26);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.setLocation(199, 136);
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    newFFrameView = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameOverViewDialog.this);
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /**
+     * This method initializes lCalidad
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLCalidad() {
+        if (lCalidad == null) {
+            lCalidad = new javax.swing.JLabel();
+            lCalidad.setSize(86, 16);
+            lCalidad.setText(PluginServices.getText(this, "calidad"));
+            lCalidad.setLocation(14, 112);
+        }
+
+        return lCalidad;
+    }
+
+    /**
+     * This method initializes cbCalidad
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbCalidad() {
+        if (cbCalidad == null) {
+            // String[] s={"Presentaci�n","Borrador"};
+            cbCalidad = new javax.swing.JComboBox();
+            cbCalidad.setSize(220, 20);
+            cbCalidad.addItem(PluginServices.getText(this, "presentacion"));
+            cbCalidad.addItem(PluginServices.getText(this, "borrador"));
+            cbCalidad.setSelectedIndex(fframeoverview.getQuality());
+            cbCalidad.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbCalidad.setLocation(104, 112);
+        }
+
+        return cbCalidad;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+
+        // vi.setResizable(false);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "propiedades_marco_localizador"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes rotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (rotation == null) {
+            rotation = new JPRotation();
+            rotation.setBounds(330, 30, 120, 130);
+        }
+        return rotation;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameView;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameBoxDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameBoxDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameBoxDialog.java	(revision 590)
@@ -0,0 +1,307 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.fframes.FFrameTable;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+
+public class FFrameBoxDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 8263909754475456840L;
+
+    /*
+     * This class is a workaround to eliminate the dependency with
+     * the package de.ios.framework.
+     */
+    private class NumberField extends JTextField {
+        private static final long serialVersionUID = 2011942753522279875L;
+
+        public Integer getIntegerValue() {
+            try{
+                return Integer.valueOf(getText());
+            }catch(NumberFormatException e){
+                if (getText().equals("")){
+                    return 0;
+                }                
+                return 0;
+            }
+        }
+    }
+
+    private JPanel jPanel = null;
+    private JLabel jLabel = null;
+    private JLabel jLabel1 = null;
+    private NumberField txtNumColumns = null;
+    private NumberField txtNumRows = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameTable fframebox;
+    private boolean isAcepted = false;
+    private JPanel pBox = null;
+    private FFrameTable thefframebox;
+    private JPRotation pRotation;
+    private AcceptCancelPanel acceptCancel = null;
+    private FFrameTable newFFrameBox;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe del cajet�n.
+     * @throws CloneNotSupportedException
+     */
+    public FFrameBoxDialog(LayoutPanel layoutPanel, IFFrame frame)
+        throws CloneNotSupportedException {
+        super(layoutPanel, frame);
+        fframebox = (FFrameTable) frame;
+        thefframebox = (FFrameTable) fframebox.clone();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.setSize(380, 185);
+        this.add(getJPanel(), null);
+        this.add(getPRotation(), null);
+        this.add(getAcceptCancel());
+        getPRotation().setRotation(fframebox.getRotation());
+    }
+
+    private AcceptCancelPanel getAcceptCancel() {
+        if (this.acceptCancel == null) {
+            this.acceptCancel =
+                new AcceptCancelPanel(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        try {
+                            newFFrameBox = (FFrameTable) fframebox.clone();
+                            if (getTxtNumColumns().getText().equals("")) {
+                                getTxtNumColumns().setText("0");
+                            }
+                            if (getTxtNumRows().getText().equals("")) {
+                                getTxtNumRows().setText("0");
+                            }
+                            newFFrameBox.setNumColumns(getTxtNumColumns().getIntegerValue());                               
+                            newFFrameBox.setNumRows(getTxtNumRows().getIntegerValue());                            
+                            newFFrameBox.setRotation(getPRotation()
+                                .getRotation());
+                            Rectangle2D r = fframebox.getBoundBox();
+                            newFFrameBox.calculateTable(r);
+                        } catch (CloneNotSupportedException e1) {
+                            LOG.error("It is not possible clonate the object",
+                                e);
+                        }
+                        PluginServices.getMDIManager().closeWindow(
+                            FFrameBoxDialog.this);
+                        isAcepted = true;
+                        notifyDialogClosed();
+                        layoutPanel.getLayoutControl().setDefaultTool();
+                    }
+                },
+
+                new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        newFFrameBox = null;
+                        PluginServices.getMDIManager().closeWindow(
+                            FFrameBoxDialog.this);
+                        notifyDialogClosed();
+                    }
+                });
+            this.acceptCancel.setBounds(5, 150, this.getWidth() - 10, 30);
+
+        }
+        return this.acceptCancel;
+    }
+
+    /**
+     * This method initializes jPanel
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel() {
+        if (jPanel == null) {
+            jLabel1 = new JLabel();
+            jLabel1.setBounds(new java.awt.Rectangle(5, 32, 165, 19));
+            jLabel1.setText(PluginServices.getText(this, "num_filas"));
+            jLabel = new JLabel();
+            jLabel.setBounds(new java.awt.Rectangle(5, 8, 165, 19));
+            jLabel.setText(PluginServices.getText(this, "num_columnas"));
+            jPanel = new JPanel();
+            jPanel.setLayout(null);
+            jPanel.setBounds(new java.awt.Rectangle(12, 9, 220, 140));
+            jPanel.add(jLabel, null);
+            jPanel.add(jLabel1, null);
+            jPanel.add(getTxtNumColumns(), null);
+            jPanel.add(getTxtNumRows(), null);
+            jPanel.add(getPBox(), null);
+
+        }
+        return jPanel;
+    }
+
+    /**
+     * This method initializes txtNumColumns
+     * 
+     * @return javax.swing.JTextField
+     */
+    private NumberField getTxtNumColumns() {
+        if (txtNumColumns == null) {
+            txtNumColumns = new NumberField();
+            txtNumColumns.setText(String.valueOf(fframebox.getNumColumns()));
+            txtNumColumns.setBounds(new java.awt.Rectangle(175, 8, 35, 19));
+            txtNumColumns.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    if (getTxtNumColumns().getText().equals("")
+                        || getTxtNumColumns().getText().equals("0")) {
+                        return;
+                    }
+                    thefframebox.setNumColumns(txtNumColumns.getIntegerValue()
+                        .intValue());
+                    getPBox().repaint();
+                }
+            });
+        }
+        return txtNumColumns;
+    }
+
+    /**
+     * This method initializes txtNumRows
+     * 
+     * @return javax.swing.JTextField
+     */
+    private NumberField getTxtNumRows() {
+        if (txtNumRows == null) {
+            txtNumRows = new NumberField();
+            txtNumRows.setText(String.valueOf(fframebox.getNumRows()));
+            txtNumRows.setBounds(new java.awt.Rectangle(175, 32, 35, 19));
+            txtNumRows.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {                  
+                    if (getTxtNumRows().getText().equals("")
+                        || getTxtNumRows().getText().equals("0")) {
+                        return;
+                    }                       
+                    thefframebox.setNumRows(txtNumRows.getIntegerValue().intValue());
+                    getPBox().repaint();
+                }
+            });
+        }
+        return txtNumRows;
+    }
+
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo
+            .setTitle(PluginServices.getText(this, "propiedades_cajetin"));
+
+        return m_viewinfo;
+    }
+
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * This method initializes jPanel1
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPBox() {
+        if (pBox == null) {
+            pBox = new PanelBox();
+            pBox.setBackground(java.awt.Color.white);
+            pBox.setSize(new java.awt.Dimension(202, 75));
+            pBox.setLocation(new java.awt.Point(5, 55));
+            pBox.addMouseListener(new java.awt.event.MouseAdapter() {
+
+                public void mouseReleased(java.awt.event.MouseEvent e) {
+                    // /Rectangle2D r = new Rectangle2D.Double(5, 5, 155, 65);
+                }
+            });
+        }
+        return pBox;
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(240, 14, 120, 120);
+        }
+        return pRotation;
+    }
+
+    class PanelBox extends JPanel {
+
+        /**
+         * 
+         */
+        private static final long serialVersionUID = 7266620645304277646L;
+
+        protected void paintComponent(Graphics g) {
+            super.paintComponent(g);
+            Rectangle2D r =
+                new Rectangle2D.Double(5, 5, this.getWidth() - 10,
+                    this.getHeight() - 10);
+            thefframebox.drawBox(r, (Graphics2D) g);
+        }
+
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameBox;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/IFFrameDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/IFFrameDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/IFFrameDialog.java	(revision 590)
@@ -0,0 +1,63 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.tools.observer.Observable;
+
+/**
+ * Interface para la creaci�n de los di�logos que a�aden elementos al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface IFFrameDialog extends IWindow, Observable {
+
+    /**
+     * Sets the bounding box of the fframe being created, in screen
+     * coordinates (pixels), defining the position and size of the frame
+     * within the Layout control.
+     * 
+     * @param r
+     *            BoundingBox of the fframe.
+     */
+    public void setRectangle(Rectangle2D r);
+
+    /**
+     * Devuelve la informaci�n de la ventana.
+     * 
+     * @return Informaci�n referente a la ventana.
+     */
+    public WindowInfo getWindowInfo();
+
+    /**
+     * Devuelve true si ha sido aceptado el di�logo.
+     * 
+     * @return True si se ha aceptado.
+     */
+    public boolean getIsAcepted();
+
+    public IFFrame getFFrame();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameNorthDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameNorthDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameNorthDialog.java	(revision 590)
@@ -0,0 +1,388 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.geom.Rectangle2D;
+import java.io.File;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.extension.AddLayer;
+import org.gvsig.app.gui.styling.SLDListBoxCellRenderer;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameNorth;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+
+/**
+ * Di�logo para a�adir un gr�fico para se�alizar el norte.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameNorthDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = -6320517042548835036L;
+    private JScrollPane scrollImages = null;
+    private JPanel pImages = null;
+    private FFrameNorth fframenorth;
+    private JList listNorth = null;
+    private File m_file = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private boolean isAcepted = false;
+    private JScrollPane scrollViews = null;
+    private JList listViews = null;
+    private FFrameView fframeview = null;
+    private JLabel lblView = null;
+    private AcceptCancelPanel acceptCancel = null;
+    private FFrameView fframeDependence;
+    private FFrameNorth newFFrameNorth;
+    private String path;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param l
+     *            DOCUMENT ME!
+     * @param f
+     *            DOCUMENT ME!
+     */
+    public FFrameNorthDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframenorth = (FFrameNorth) frame;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        lblView = new JLabel();
+        lblView.setBounds(new java.awt.Rectangle(5, 193, 325, 18));
+        lblView.setText(PluginServices.getText(this, "marco_vista"));
+        this.setLayout(null);
+        this.setSize(370, 335);
+        this.add(getScrollImages(), null);
+
+        this.add(getAcceptCancel());
+
+        this.add(getScrollViews(), null);
+        this.add(lblView, null);
+    }
+
+    private AcceptCancelPanel getAcceptCancel() {
+        if (this.acceptCancel == null) {
+            this.acceptCancel =
+                new AcceptCancelPanel(new java.awt.event.ActionListener() { // Accept
+
+                        public void actionPerformed(java.awt.event.ActionEvent e) {
+                            try {
+                                newFFrameNorth =
+                                    (FFrameNorth) fframenorth.clone();
+                                if (m_file != null) {
+
+                                    Dimension dimension = null;
+
+                                    try {
+                                        dimension =
+                                            fframenorth.getBound(m_file
+                                                .getAbsolutePath());
+                                    } catch (Exception ex) {
+                                        NotificationManager.addError(
+                                            "Excepci�n :", ex);
+                                    }
+                                    newFFrameNorth
+                                        .setFFrameDependence(fframeDependence);
+                                    newFFrameNorth.setPath(path);
+                                    newFFrameNorth.setViewing(0);
+                                    newFFrameNorth.setQuality(0);
+                                    // newFFrameNorth.setName(m_file.getName());
+                                    newFFrameNorth.load(path);
+
+                                    // Ajustamos la relaci�n de aspecto a la
+                                    // altura.
+                                    double ratio =
+                                        (float) (dimension.getWidth())
+                                            / (float) (dimension.getHeight());
+
+                                    double newWidth = rect.getHeight() * ratio;
+                                    Rectangle2D.Double rAdjust =
+                                        new Rectangle2D.Double(rect.getMinX(),
+                                            rect.getMinY(), newWidth, rect
+                                                .getHeight());
+                                    rect = rAdjust;
+                                }
+                                newFFrameNorth.setBoundBox(FLayoutUtilities
+                                    .toSheetRect(rect, layoutPanel
+                                        .getLayoutControl().getAT()));
+                                newFFrameNorth.setRotation(0);
+                            } catch (CloneNotSupportedException e1) {
+                                LOG.error(
+                                    "It is not possible clonate the object", e);
+                            }
+
+                            PluginServices.getMDIManager().closeWindow(
+                                FFrameNorthDialog.this);
+                            isAcepted = true;
+                            notifyDialogClosed();
+                            layoutPanel.getLayoutControl().setDefaultTool();
+                        }
+                    }, new java.awt.event.ActionListener() { // Cancel
+
+                        public void actionPerformed(java.awt.event.ActionEvent e) {
+                            PluginServices.getMDIManager().closeWindow(
+                                FFrameNorthDialog.this);
+                            notifyDialogClosed();
+                        }
+                    }
+
+                );
+            this.acceptCancel.setBounds(3, 290, 357, 30);
+
+        }
+        return this.acceptCancel;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param r
+     *            DOCUMENT ME!
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "propiedades_marco_imagenes"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * This method initializes scrollImages
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private JScrollPane getScrollImages() {
+        if (scrollImages == null) {
+            scrollImages = new JScrollPane();
+            scrollImages.setBounds(new java.awt.Rectangle(3, 3, 357, 174));
+            scrollImages.setBackground(java.awt.Color.white);
+            scrollImages.setViewportView(getPImages());
+        }
+
+        return scrollImages;
+    }
+
+    /**
+     * This method initializes pImages
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPImages() {
+        if (pImages == null) {
+            pImages = new JPanel();
+            pImages.setBackground(java.awt.Color.white);
+            pImages.add(getListNorth(), null);
+        }
+
+        return pImages;
+    }
+
+    /**
+     * This method initializes listNorth
+     * 
+     * @return javax.swing.JList
+     */
+    private JList getListNorth() {
+        if (listNorth == null) {
+            listNorth = new JList();
+
+            listNorth
+                .setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+            listNorth.setLayoutOrientation(JList.HORIZONTAL_WRAP);
+            listNorth.setVisibleRowCount(-1);
+
+            String ni_folder = "images" + File.separator + "northimages";
+            File north_images_folder = new File(getClass().getClassLoader()
+                    .getResource(ni_folder).getFile());
+            listNorth.setSize(new java.awt.Dimension(300, 242));
+            listNorth
+                .setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
+
+            File[] files = north_images_folder.listFiles();
+            DefaultListModel listModel = new DefaultListModel();
+
+            for (int i = 0; i < files.length; i++) {
+                listModel.addElement(files[i].getAbsolutePath());
+            }
+
+            listNorth.setModel(listModel);
+
+            SLDListBoxCellRenderer renderer = new SLDListBoxCellRenderer();
+            renderer.setPreferredSize(new Dimension(60, 50));
+            listNorth.setCellRenderer(renderer);
+            if (fframenorth.getName() != null) {
+                for (int i = 0; i < listNorth.getModel().getSize(); i++) {
+                    if (((String) listNorth.getModel().getElementAt(i))
+                        .endsWith(fframenorth.getName())) {
+                        listNorth.setSelectedIndex(i);
+                        m_file =
+                            new File((String) listNorth.getSelectedValue());
+                    }
+                }
+
+            }
+
+            listNorth
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                        m_file =
+                            new File((String) ((JList) e.getSource())
+                                .getSelectedValue());
+                        path = m_file.getAbsolutePath();
+                    }
+                });
+        }
+
+        return listNorth;
+    }
+
+    /**
+     * This method initializes scrollViews
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private JScrollPane getScrollViews() {
+        if (scrollViews == null) {
+            scrollViews = new JScrollPane();
+            scrollViews.setBackground(Color.white);
+            scrollViews.setBounds(new java.awt.Rectangle(3, 212, 357, 65));
+            scrollViews.setViewportView(getListViews());
+        }
+
+        return scrollViews;
+    }
+
+    /**
+     * This method initializes listViews
+     * 
+     * @return javax.swing.JList
+     */
+    private JList getListViews() {
+        if (listViews == null) {
+            ListViewModel listmodel = new ListViewModel();
+            listmodel.addViews(layoutPanel);
+            listViews = new javax.swing.JList();
+            listViews.setModel(listmodel);
+
+            for (int i = 0; i < listViews.getModel().getSize(); i++) {
+                if (fframenorth.getFFrameDependence() != null) {
+                    fframeview =
+                        (FFrameView) listViews.getModel().getElementAt(i);
+
+                    if (fframeview == fframenorth.getFFrameDependence()[0]) {
+                        listViews.setSelectedIndex(i);
+                    }
+                }
+            }
+
+            listViews
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+
+                    private int selectIndex = -1;
+
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                        IFFrame[] fframes =
+                            layoutPanel.getLayoutContext().getFFrames();
+                        int selectInt =
+                            ((JList) e.getSource()).getSelectedIndex();
+                        if (selectInt != selectIndex) {
+                            selectIndex = selectInt;
+                            if (selectIndex == -1) {
+                                return;
+                            }
+                            fframeview =
+                                (FFrameView) listViews.getModel().getElementAt(
+                                    selectInt);
+
+                            for (int i = 0; i < fframes.length; i++) {
+                                IFFrame f = fframes[i];
+
+                                if (f instanceof FFrameView) {
+                                    if (((FFrameView) f).getView() == fframeview
+                                        .getView()) {
+                                        fframeDependence = fframeview;
+                                        // fframenorth
+                                        // .setFFrameDependence(fframeview);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                });
+        }
+
+        return listViews;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameNorth;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameViewDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameViewDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameViewDialog.java	(revision 590)
@@ -0,0 +1,820 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.SingletonWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGrid;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap.SCALE_TYPE;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.fframes.gui.EnvelopePanel;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FConfigLayoutDialog;
+import org.gvsig.app.project.documents.view.DefaultViewDocument;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.i18n.Messages;
+import org.gvsig.tools.swing.api.usability.UsabilitySwingManager;
+
+/**
+ * Dialog to add a view to the Layout document, by means of a FFrameView
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izquierdo
+ */
+public class FFrameViewDialog extends AbstractFFrameDialog implements
+    IFFrameDialog, SingletonWindow {
+
+    private static final long serialVersionUID = -7223804566537544559L;
+    
+    private final LayoutManager layoutManager;
+    private javax.swing.JLabel lViews = null;
+    private javax.swing.JScrollPane jScrollPane = null;
+    private javax.swing.JList liViews = null; // @jve:visual-info decl-index=0
+                                               // visual-constraint="98,-3"
+    private javax.swing.JCheckBox chbSyncLayers = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private javax.swing.JLabel lCalidad = null;
+    private javax.swing.JComboBox cbCalidad = null;
+    private ViewDocument m_projectView = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameView fframeview = null;
+    private boolean isAcepted = false;
+    private JPRotation rotation = null;
+    private FFrameView newFFrameView = null;
+    private javax.swing.JButton bGrid = null;
+    private javax.swing.JCheckBox chbShowGrid = null;
+	private JPanel pnlFirstRow = null;
+	private JCheckBox chbSyncExtent = null;
+	
+	private WindowInfo windowInfo = null;
+
+	private GridBagLayoutPanel pnlSyncGroup = null;
+	private GridBagLayoutPanel pnlScaleTypeGroup = null;
+	private ButtonGroup grpScaleType = null;
+	private JRadioButton btnNormalScale = null;
+	private JRadioButton btnFixedScale = null;
+	private JRadioButton btnFixedExtent = null;
+	private JTextField fldScale = null;
+	private EnvelopePanel pnlExtent = null;
+	private JButton btConfigView = null;
+	private JPanel pnlScale = null;
+	private ViewDocument createdView = null;
+
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe vista.
+     */
+    public FFrameViewDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframeview = (FFrameView) frame;
+        try {
+			newFFrameView = (FFrameView) fframeview.clone();
+		} catch (CloneNotSupportedException e) {
+			LOG.error("It is not possible to clone the object", e);
+		}
+        initComponents();
+        layoutManager = (LayoutManager) ProjectManager.getInstance()
+            .getDocumentManager("project.document.layout");
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initComponents() {
+        this.setLayout(new GridBagLayout());
+        GridBagConstraints c = new GridBagConstraints();
+        Insets insets = new Insets(5, 5, 5, 5);
+        int row = 0;
+        c.gridx = 0;
+        c.gridy = row++;
+        c.insets = new Insets(0,0,0,0);
+        c.anchor = GridBagConstraints.LINE_START;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        add(getFirstRowPnl(), c);
+        c.insets = insets;
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        c.fill = GridBagConstraints.HORIZONTAL;
+        
+        GridBagLayoutPanel pnl = getPnlSyncGroup();
+        pnl.addComponent(getChbSyncLayers(), insets);
+        pnl.addComponent(getChbSyncExtent(), insets);
+        add(pnl, c);
+        
+        getGrpScaleType().add(getBtnNormalScale());
+        getGrpScaleType().add(getBtnFixedScale());
+        getGrpScaleType().add(getBtnFixedExtent());
+        
+        pnl = getPnlScaleTypeGroup();
+        pnl.addComponent(getBtnNormalScale(), insets);
+        pnl.addComponent(getPnlScale(), insets); // pnlScale() contains btnFixedScale
+        pnl.addComponent(getBtnFixedExtent(), new Insets(5, 5, 0, 5));
+        pnl.addComponent(getPnlExtent(), GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5));
+        if (fframeview.getScaleType()==SCALE_TYPE.FIXED_SCALE) {
+        	getBtnFixedScale().setSelected(true);
+        	setScaleType(SCALE_TYPE.FIXED_SCALE);
+        	getChbSyncExtent().setEnabled(false);
+        }
+        else if (fframeview.getScaleType()==SCALE_TYPE.FIXED_EXTENT) {
+        	getBtnFixedExtent().setSelected(true);
+        	setScaleType(SCALE_TYPE.FIXED_EXTENT);
+        	getChbSyncExtent().setEnabled(false);
+        }
+        else {
+        	getBtnNormalScale().setSelected(true);
+        	setScaleType(SCALE_TYPE.NORMAL);
+        }
+        
+        c.gridy = row++;
+        add(pnl, c);
+        
+        c.fill = GridBagConstraints.NONE;
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = 1;
+        add(getLCalidad(), c);
+        c.gridx = 1;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        add(getCbCalidad(), c);
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = 1;
+        add(getChbShowGrid(), c);
+        c.gridx = 1;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        add(getBGrid(), c);
+        JPanel acceptCancelPnl = new JPanel(new GridBagLayout());
+        c.anchor = GridBagConstraints.LINE_START;
+        c.gridx = 0;
+        c.gridy = 0;
+        c.gridwidth = 1;
+        acceptCancelPnl.add(getbAceptar(), c);
+        c.gridx = 1;
+        acceptCancelPnl.add(getBCancelar(), c);
+        c.gridx = 0;
+        c.gridy = row++;
+        c.anchor = GridBagConstraints.LINE_END;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        add(acceptCancelPnl, c);
+    }
+
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+    
+    private JPanel getFirstRowPnl() {
+    	if (pnlFirstRow==null) {
+    		pnlFirstRow  = new JPanel(new GridBagLayout());
+    		GridBagConstraints c = new GridBagConstraints();
+            Insets insets = new Insets(5, 5, 5, 5);
+            Insets insetsTop = new Insets(12, 5, 5, 5);
+            c.gridx = 0;
+            c.gridy = 0;
+            c.insets = insetsTop;
+            c.anchor = GridBagConstraints.PAGE_START;
+            pnlFirstRow.add(getLViews(), c);
+            c.gridx = 1;
+            pnlFirstRow.add(getScrolledViewList(), c);
+            c.insets = insets;
+            c.gridx = 2;
+            c.gridheight = 2;
+            pnlFirstRow.add(getPRotation(), c);
+            c.anchor = GridBagConstraints.LINE_END;
+            c.gridy = 1;
+            c.gridx = 1;
+            c.gridheight = 1;
+            pnlFirstRow.add(getBtnConfigView(), c);
+    	}
+    	return pnlFirstRow; 
+    }
+
+    
+    private JButton getBtnConfigView() {
+		UsabilitySwingManager manager = org.gvsig.tools.swing.api.ToolsSwingLocator.getUsabilitySwingManager();
+		btConfigView = manager.createJButton(Messages.getText("Configure_view"));
+		btConfigView.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				ViewDocument view = getSelectedView();
+				if (view!=null) {
+					IWindow propWin = view.getPropertiesWindow();
+					ApplicationManager manager = ApplicationLocator.getManager();
+					manager.getUIManager().addWindow(propWin);
+				}
+			}
+		});
+    	return btConfigView;
+    }
+
+    /**
+     * This method initializes lVistas
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLViews() {
+        if (lViews == null) {
+            lViews = new javax.swing.JLabel();
+            lViews.setText(Messages.getText("Vista"));
+        }
+
+        return lViews;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getScrolledViewList() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setViewportView(getViewList());
+            jScrollPane.setPreferredSize(new java.awt.Dimension(300, 100));
+        }
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes liVistas
+     * 
+     * @return javax.swing.JList
+     */
+    private javax.swing.JList getViewList() {
+        if (liViews == null) {
+            ListViewModel listmodel = new ListViewModel();
+            listmodel.addCreateNewViewObj();
+            
+            if (listmodel.addViews()) {
+               JOptionPane.showMessageDialog(
+                   ApplicationLocator.getManager().getRootComponent(),
+                   Messages.getText("_Some_views_excluded_from_list_because_have_editing_layers"),
+                   Messages.getText("propiedades_marco_vista"),
+                   JOptionPane.WARNING_MESSAGE); 
+            }
+            
+            liViews = new javax.swing.JList();
+            liViews.setModel(listmodel);
+            // default value: create new view
+            liViews.setSelectedIndex(0);
+            viewSelected();
+
+            for (int i = 1; i < liViews.getModel().getSize(); i++) {
+                if (fframeview.getMapContext() != null) {
+
+                    DefaultViewDocument pvaux =
+                        (DefaultViewDocument) liViews.getModel().getElementAt(
+                            i);
+
+                    if (pvaux.getMapContext()
+                        .equals(fframeview.getMapContext())) {
+                        liViews.setSelectedIndex(i);
+                        m_projectView =
+                            (DefaultViewDocument) liViews.getModel()
+                                .getElementAt(i);
+                    }
+                }
+            }
+
+            liViews
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                    	FFrameViewDialog.this.viewSelected();
+                    }
+                });
+        }
+
+        return liViews;
+    }
+    
+    protected void viewSelected() {
+    	ViewDocument v = getSelectedView();
+    	if (v!=m_projectView) {
+    		m_projectView = v;
+    		if (m_projectView!=null && m_projectView.getMapContext()!=null) {
+    			newFFrameView.setViewMapContext(m_projectView.getMapContext());
+    		}
+    		else {
+    			newFFrameView.setViewMapContext(null);
+    		}
+    	}
+    }
+
+    protected ViewDocument getSelectedView() {
+	    	Object selected = this.getViewList().getSelectedValue();
+    	ViewDocument view = null;
+    	if (selected instanceof ViewDocument) {
+    		view = (ViewDocument) selected;
+    	}
+    	else if (selected==ListViewModel.CREATE_NEW_VIEW_OBJECT) {
+    		if (this.createdView==null) {
+    			view = createView();
+    		}
+    		else {
+    			view = this.createdView;
+    		}
+    	}
+    	return view;
+    }
+    
+    private ViewDocument createView() {
+        ProjectManager projectManager = ApplicationLocator.getProjectManager();
+        ViewManager viewManager = (ViewManager) projectManager.getDocumentManager(ViewManager.TYPENAME);
+        createdView = (ViewDocument) viewManager.createDocument();
+    	ProjectManager.getInstance().getCurrentProject().addDocument(createdView);
+    	return createdView;
+    }
+    
+    private void deleteView() {
+    	ProjectManager projectManager = ApplicationLocator.getProjectManager();
+        ProjectManager.getInstance().getCurrentProject().removeDocument(createdView);
+        createdView = null;
+    }
+    
+
+    /**
+     * This method initializes chbEnlaceVivo
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbSyncLayers() {
+        if (chbSyncLayers == null) {
+            chbSyncLayers = new javax.swing.JCheckBox();
+            chbSyncLayers.setText(Messages.getText("Synchronize_layers"));
+            chbSyncLayers.setSelected(fframeview.getLayerSynced());
+            chbSyncLayers.addActionListener(new ActionListener() {
+
+				public void actionPerformed(ActionEvent e) {
+					if (chbSyncLayers.isSelected()) {
+						JOptionPane.showMessageDialog(FFrameViewDialog.this,
+						Messages.getText("Warning_Enabling_layer_synchronization_will_discard_any_change_not_present_in_associated_view"),
+						Messages.getText("Warning_Layer_sync"),
+					    JOptionPane.WARNING_MESSAGE);
+					}
+				}
+            	
+            });
+        }
+
+        return chbSyncLayers;
+    }
+    
+    private javax.swing.JCheckBox getChbSyncExtent() {
+    	if (chbSyncExtent==null) {
+    		chbSyncExtent  = new  javax.swing.JCheckBox();
+    		chbSyncExtent.setText(Messages.getText("Synchronize_extents"));
+    		chbSyncExtent.setSelected(fframeview.getExtentSynced());
+    	}
+    	return chbSyncExtent;
+    }
+    
+    protected void disableChbSyncExtent() {
+    	getChbSyncExtent().setEnabled(false);
+    	getChbSyncExtent().setToolTipText(Messages.getText("Extent_cant_be_synchronized_when_using_fixed_scale_or_fixed_extent"));
+    }
+    
+    protected void enableChbSyncExtent() {
+    	getChbSyncExtent().setEnabled(true);
+    	getChbSyncExtent().setToolTipText(null);
+    }
+
+    /**
+     * This method initializes jButton
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getbAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setText(Messages.getText("Aceptar"));
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+            	public void actionPerformed(java.awt.event.ActionEvent e) {
+            		newFFrameView.setBoundBox(FLayoutUtilities.toSheetRect(
+            				rect, layoutPanel.getLayoutControl().getAT()));
+            		newFFrameView.setRotation(getPRotation().getRotation());
+            		newFFrameView.setHasToc(true);
+            		newFFrameView.setLayerSynced(getChbSyncLayers()
+            				.isSelected());
+            		newFFrameView.setExtentSynced((getChbSyncExtent().isEnabled()&&getChbSyncExtent().isSelected()));
+            		try {
+            			if (getBtnFixedScale().isSelected()) {
+            				Double d = Double.parseDouble(getFldScale().getText());
+            				newFFrameView.setScaleType(SCALE_TYPE.FIXED_SCALE, d);
+            			}
+            			else if (getBtnFixedExtent().isSelected()) {
+            				Envelope envelope = getPnlExtent().getEnvelope();
+            				if (envelope!=null) {
+            					newFFrameView.setScaleType(SCALE_TYPE.FIXED_EXTENT, envelope);
+            				}
+            				else {
+            					newFFrameView.setScaleType(SCALE_TYPE.NORMAL);
+            				}
+            			}
+            			else {
+            				newFFrameView.setScaleType(SCALE_TYPE.NORMAL);
+            			}
+            		}
+            		catch (Exception ex) {
+            			newFFrameView.setScaleType(SCALE_TYPE.NORMAL);
+            		}
+        	        if (createdView!=null && createdView!=getSelectedView()) { // a view was created but later de-selected
+        	        	deleteView();
+        	        }
+            		if (m_projectView != null) {
+                        newFFrameView.setView(m_projectView);
+            			newFFrameView.setQuality(getCbCalidad()
+            					.getSelectedIndex());
+            			if (newFFrameView.getGrid()!=null) {
+            				((FFrameGrid)newFFrameView.getGrid()).setFFrameDependence(newFFrameView);
+            			}
+            			newFFrameView.showGrid(getChbShowGrid()
+            					.isSelected());
+            			newFFrameView.setBoundBox(FLayoutUtilities
+            					.toSheetRect(rect, layoutPanel
+            							.getLayoutControl().getAT()));
+            		}
+            		isAcepted = true;
+            		ApplicationLocator.getManager().getUIManager().closeWindow(
+            				FFrameViewDialog.this);
+            		notifyDialogClosed();
+            		PluginsLocator.getMainFrame().refreshControls();
+            		layoutPanel.getLayoutControl().setDefaultTool();
+            	}
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setText(Messages.getText("Cancelar"));
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    if (createdView!=null) {
+                    	deleteView();
+                    }
+                    newFFrameView = null;
+                    ApplicationLocator.getManager().getUIManager().closeWindow(
+                        FFrameViewDialog.this);
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /**
+     * This method initializes lCalidad
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLCalidad() {
+        if (lCalidad == null) {
+            lCalidad = new javax.swing.JLabel();
+            lCalidad.setText(Messages.getText("calidad"));
+        }
+
+        return lCalidad;
+    }
+
+    /**
+     * This method initializes cbCalidad
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbCalidad() {
+        if (cbCalidad == null) {
+            // String[] s={"Presentaci�n","Borrador"};
+            cbCalidad = new javax.swing.JComboBox();
+            cbCalidad.addItem(Messages.getText("presentacion"));
+            cbCalidad.addItem(Messages.getText("borrador"));
+            cbCalidad.setSelectedIndex(fframeview.getQuality());
+        }
+
+        return cbCalidad;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+    	if (windowInfo==null) {
+    		windowInfo = new WindowInfo(WindowInfo.RESIZABLE);
+    		windowInfo.setHeight(620);
+    		windowInfo.setWidth(600);
+    		windowInfo.setTitle(Messages.getText(
+    				"propiedades_marco_vista"));
+    	}
+    	return windowInfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * This method initializes rotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (rotation == null) {
+            rotation = new JPRotation();
+            rotation.setRotation(fframeview.getRotation());
+        }
+        return rotation;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameView;
+    }
+
+    /**
+     * This method initializes bGrid
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getBGrid() {
+        if (bGrid == null) {
+            bGrid = new JButton();
+            bGrid.setText(Messages.getText("configurar"));
+            bGrid.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {                
+                    FFrameGrid fframeGrid = null;
+
+                    if (newFFrameView.getGrid() != null) {
+                        fframeGrid = (FFrameGrid) newFFrameView.getGrid();
+                    } else {                       
+                        fframeGrid = (FFrameGrid) layoutManager.createFrame(FFrameGrid.PERSISTENCE_DEFINITION_NAME);                
+                        fframeGrid.setFFrameDependence(fframeview);
+                    }
+
+                    FFrameGridDialog fframeGridDialog = 
+                        (FFrameGridDialog)layoutManager.createFFrameDialog(fframeGrid, layoutPanel);
+                    fframeGridDialog.setFFrameView(newFFrameView);
+   
+                    if (fframeGridDialog != null) {
+                        ApplicationLocator.getManager().getUIManager().addWindow(fframeGridDialog);
+                    }
+                    IFFrame newFrame = fframeGridDialog.getFFrame();
+                    if (newFrame != null) {
+                        newFFrameView.setGrid(newFrame);
+                    }
+                }
+            });
+        }
+        return bGrid;
+    }
+    
+    /**
+     * This method initializes chbShowGrid
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbShowGrid() {
+        if (chbShowGrid == null) {
+            chbShowGrid = new JCheckBox();
+            chbShowGrid.setSelected(fframeview.isShowGrid());
+            chbShowGrid.setText(Messages.getText("Show_grid"));
+            chbShowGrid.addActionListener(new ActionListener() {
+
+				public void actionPerformed(ActionEvent e) {
+					if (e.getSource() instanceof JCheckBox) {
+						JCheckBox cb = (JCheckBox) e.getSource();
+						if (cb.isSelected()) {
+							if (newFFrameView.getGrid()==null) {
+								// ensure we have a non-null grid if the checkbox is selected
+								FFrameGrid fframeGrid = (FFrameGrid) layoutManager.createFrame(FFrameGrid.PERSISTENCE_DEFINITION_NAME);                
+		                        fframeGrid.setFFrameDependence(newFFrameView);
+		                        newFFrameView.setGrid(fframeGrid);
+							}
+						}
+					}
+				}
+            });
+        }
+        return chbShowGrid;
+    }
+    
+    private GridBagLayoutPanel getPnlSyncGroup() {
+    	if (pnlSyncGroup ==null) {
+    		pnlSyncGroup = new GridBagLayoutPanel();
+    		pnlSyncGroup.setBorder(BorderFactory.createTitledBorder(Messages.getText("Synchronization_of_the_view_and_the_frame_view")));
+    	}
+    	return pnlSyncGroup;
+    }
+    
+    private GridBagLayoutPanel getPnlScaleTypeGroup() {
+    	if (pnlScaleTypeGroup ==null) {
+    		pnlScaleTypeGroup  = new GridBagLayoutPanel();
+    		pnlScaleTypeGroup.setBorder(BorderFactory.createTitledBorder(Messages.getText("Fixed_scale_and_extent")));
+    	}
+    	return pnlScaleTypeGroup;
+    }
+    
+    private ButtonGroup getGrpScaleType() {
+    	if (grpScaleType==null) {
+    		grpScaleType  = new ButtonGroup();
+    	}
+    	return grpScaleType;
+    }
+    
+    private JRadioButton getBtnNormalScale() {
+    	if (btnNormalScale==null) {
+    		btnNormalScale  = new JRadioButton(Messages.getText("Non_fixed"));
+    		btnNormalScale.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					FFrameViewDialog.this.setScaleType(SCALE_TYPE.NORMAL);
+					FFrameViewDialog.this.enableChbSyncExtent();
+				}
+			});
+    	}
+    	return btnNormalScale;
+    }
+    
+    private JRadioButton getBtnFixedScale() {
+    	if (btnFixedScale==null) {
+    		btnFixedScale  = new JRadioButton(Messages.getText("Fixed_scale"));
+    		btnFixedScale.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					FFrameViewDialog.this.setScaleType(SCALE_TYPE.FIXED_SCALE);
+					FFrameViewDialog.this.disableChbSyncExtent();
+				}
+			});
+    	}
+    	return btnFixedScale;
+    }
+    
+    private JPanel getPnlScale() {
+    	if (pnlScale==null) {
+    		pnlScale  = new JPanel(new GridBagLayout());
+    		GridBagConstraints c = new GridBagConstraints();
+    		c.insets = new Insets(0, 0, 0, 0);
+    		c.gridx = 0;
+    		pnlScale.add(getBtnFixedScale());
+    		c.anchor = GridBagConstraints.LINE_START;
+    		c.gridx = 1;
+    		c.insets = new Insets(0, 25, 0, 5);
+    		c.anchor = GridBagConstraints.LINE_END;
+    		pnlScale.add(getLblScale(), c);
+    		c.gridx = 2;
+    		c.insets = new Insets(0, 5, 0, 5);;
+    		c.anchor = GridBagConstraints.LINE_START;
+    		pnlScale.add(getFldScale(), c);
+    	}
+    	return pnlScale;
+    }
+    
+    private JTextField getFldScale() {
+		if (fldScale==null) {
+    		fldScale  = new JTextField(8);
+    		if (fframeview!=null &&
+    				fframeview.getMapContext()!=null &&
+    				fframeview.getMapContext().getViewPort().getEnvelope()!=null) {
+    			fldScale.setText(Long.toString(fframeview.getMapContext().getScaleView()));
+    		}
+    	}
+    	return fldScale;
+    }
+    
+    private JLabel getLblScale() {
+    	return new JLabel(Messages.getText("1__"));
+    }
+    
+    private JRadioButton getBtnFixedExtent() {
+    	if (btnFixedExtent==null) {
+    		btnFixedExtent   = new JRadioButton(Messages.getText("Fixed_extent"));
+    		btnFixedExtent.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					FFrameViewDialog.this.setScaleType(SCALE_TYPE.FIXED_EXTENT);
+					FFrameViewDialog.this.disableChbSyncExtent();
+				}
+			});
+    	}
+    	return btnFixedExtent;
+    }
+    
+    private EnvelopePanel getPnlExtent() {
+    	if (pnlExtent==null) {
+    		pnlExtent  = new EnvelopePanel();
+    		if (fframeview!=null &&
+    				fframeview.getMapContext()!=null &&
+    				fframeview.getMapContext().getViewPort().getEnvelope()!=null) {
+    			pnlExtent.setEnvelope(fframeview.getMapContext().getViewPort().getEnvelope());
+    		}
+    	}
+    	return pnlExtent;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+	public Object getWindowModel() {
+		return fframeview;
+	}
+	
+	protected void setScaleType(SCALE_TYPE type) {
+		if (type==SCALE_TYPE.NORMAL) {
+			getFldScale().setEditable(false);
+			getFldScale().setEnabled(false);
+			getPnlExtent().setEditable(false);
+			getPnlExtent().setEnabled(false);
+		}
+		else if (type==SCALE_TYPE.FIXED_SCALE) {
+			getFldScale().setEditable(true);
+			getFldScale().setEnabled(true);
+			getPnlExtent().setEditable(false);
+			getPnlExtent().setEnabled(false);
+		}
+		else if (type==SCALE_TYPE.FIXED_EXTENT) {
+			getFldScale().setEditable(false);
+			getFldScale().setEnabled(false);
+			getPnlExtent().setEditable(true);
+			getPnlExtent().setEnabled(true);
+		}
+		
+	}
+	
+	protected SCALE_TYPE getSelectedScaleType() {
+		if (getBtnFixedScale().isSelected()) {
+			return SCALE_TYPE.FIXED_SCALE;
+		}
+		else if (getBtnFixedExtent().isSelected()) {
+			return SCALE_TYPE.FIXED_EXTENT;
+		}
+		return SCALE_TYPE.NORMAL;		
+	}
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFramePictureDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFramePictureDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFramePictureDialog.java	(revision 590)
@@ -0,0 +1,427 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.geom.Rectangle2D;
+import java.io.File;
+
+import javax.swing.JFileChooser;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFramePicture;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.utils.GenericFileFilter;
+
+/**
+ * Dialogo para a�adir una imagen al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFramePictureDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = -5270176004672972463L;
+    private javax.swing.JPanel jContentPane = null;
+    private javax.swing.JLabel lFichero = null;
+    private javax.swing.JTextField tFichero = null;
+    private javax.swing.JButton bExaminar = null;
+    private javax.swing.JLabel lVisualizacion = null;
+    private javax.swing.JComboBox cbVisualizacion = null;
+    private javax.swing.JLabel lCalidad = null;
+    private javax.swing.JComboBox cbCalidad = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFramePicture fframepicture = null; // = new FFramePicture();
+    private String namefile = null;
+    private boolean isAcepted = false;
+    private JPRotation pRotation = null;
+    private String path;
+    private FFramePicture newFFramePicture = null;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe de imagen.
+     */
+    public FFramePictureDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframepicture = (FFramePicture) frame;
+        initialize();
+    }
+
+    /**
+     * Inserta el rect�ngulo que ocupar� el fframe de imagen.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.add(getJContentPane(), null);
+        this.setSize(505, 142);
+        getPRotation().setRotation(fframepicture.getRotation());
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.add(getLFichero(), null);
+            jContentPane.add(getLCalidad(), null);
+            jContentPane.add(getCbCalidad(), null);
+            jContentPane.add(getTFichero(), null);
+            jContentPane.add(getBExaminar(), null);
+            jContentPane.add(getLVisualizacion(), null);
+            jContentPane.add(getCbVisualizacion(), null);
+            jContentPane.add(getBAceptar(), null);
+            jContentPane.add(getBCancelar(), null);
+            jContentPane.setSize(499, 139);
+            jContentPane.setLocation(3, 0);
+            jContentPane.add(getPRotation(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes lFichero
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLFichero() {
+        if (lFichero == null) {
+            lFichero = new javax.swing.JLabel();
+            lFichero.setSize(42, 20);
+            lFichero.setText(PluginServices.getText(this, "Fichero"));
+            lFichero.setLocation(10, 9);
+        }
+
+        return lFichero;
+    }
+
+    /**
+     * This method initializes tFichero
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTFichero() {
+        if (tFichero == null) {
+            tFichero = new javax.swing.JTextField();
+            tFichero.setBounds(62, 8, 200, 20);
+            tFichero.setPreferredSize(new java.awt.Dimension(200, 20));
+        }
+
+        if (fframepicture.getPath() != null) {
+            tFichero.setText(fframepicture.getPath());
+        }
+
+        return tFichero;
+    }
+
+    /**
+     * This method initializes bExaminar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBExaminar() {
+        if (bExaminar == null) {
+            bExaminar = new javax.swing.JButton();
+            bExaminar.setSize(88, 23);
+            bExaminar.setText(PluginServices.getText(this, "Examinar"));
+            bExaminar.setLocation(275, 6);
+            bExaminar.setPreferredSize(new java.awt.Dimension(88, 23));
+            bExaminar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    String[] extensions =
+                        { "jpeg", "jpg", "gif", "png", "bmp", "svg" };
+                    GenericFileFilter filter =
+                        new GenericFileFilter(extensions,
+                            "Image files (jpeg, jpg, gif, png, bmp, svg)");
+
+                    JFileChooser jfc = new JFileChooser();
+                    jfc.addChoosableFileFilter(filter);
+                    if (jfc.showOpenDialog((Component) PluginServices
+                        .getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+                        File file = jfc.getSelectedFile();
+                        namefile = file.getName();
+                        getTFichero().setText(file.getAbsolutePath());
+                        path = file.getAbsolutePath();
+                        // fframepicture.setPath(file.getAbsolutePath());
+                    }
+                }
+            });
+        }
+
+        return bExaminar;
+    }
+
+    /**
+     * Inserta el path al TFichero.
+     * 
+     * @param val
+     *            path del fichero.
+     */
+    public void setText(String val) {
+        getTFichero().setText(val);
+    }
+
+    /**
+     * This method initializes lVisualizacion
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLVisualizacion() {
+        if (lVisualizacion == null) {
+            lVisualizacion = new javax.swing.JLabel();
+            lVisualizacion.setBounds(9, 62, 105, 20);
+            lVisualizacion.setText(PluginServices
+                .getText(this, "visualizacion"));
+            lVisualizacion.setVisible(false);
+        }
+
+        return lVisualizacion;
+    }
+
+    /**
+     * This method initializes cbVisualizacion
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbVisualizacion() {
+        if (cbVisualizacion == null) {
+            cbVisualizacion = new javax.swing.JComboBox();
+            cbVisualizacion.setSize(245, 20);
+            cbVisualizacion.addItem(PluginServices.getText(this,
+                "cuando_activo"));
+            cbVisualizacion.addItem(PluginServices.getText(this, "siempre"));
+            cbVisualizacion.setSelectedIndex(fframepicture.getViewing());
+            cbVisualizacion.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbVisualizacion.setLocation(118, 62);
+            cbVisualizacion.setEnabled(false);
+            cbVisualizacion.setVisible(false);
+        }
+
+        return cbVisualizacion;
+    }
+
+    /**
+     * This method initializes lCalidad
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLCalidad() {
+        if (lCalidad == null) {
+            lCalidad = new javax.swing.JLabel();
+            lCalidad.setSize(103, 20);
+            lCalidad.setText(PluginServices.getText(this, "calidad"));
+            lCalidad.setPreferredSize(new java.awt.Dimension(73, 16));
+            lCalidad.setLocation(10, 35);
+        }
+
+        return lCalidad;
+    }
+
+    /**
+     * This method initializes cbCalidad
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbCalidad() {
+        if (cbCalidad == null) {
+            cbCalidad = new javax.swing.JComboBox();
+            cbCalidad.setSize(245, 20);
+            cbCalidad.addItem(PluginServices.getText(this, "presentacion"));
+            cbCalidad.addItem(PluginServices.getText(this, "borrador"));
+            cbCalidad.setSelectedIndex(fframepicture.getQuality());
+            cbCalidad.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbCalidad.setLocation(118, 35);
+        }
+
+        return cbCalidad;
+    }
+
+    /**
+     * This method initializes bAceptar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setSize(85, 26);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.setLocation(70, 89);
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    Dimension dimension = null;
+                    try {
+                        // ImageIcon imageIcon = new
+                        // ImageIcon(getTFichero().getText());
+                        dimension =
+                            fframepicture.getBound(getTFichero().getText());
+                    } catch (Exception ex) {
+                        NotificationManager.addError("Excepci�n :", ex);
+                    }
+                    try {
+                        newFFramePicture =
+                            (FFramePicture) fframepicture.clone();
+                        if (path == null) {
+                            path = getTFichero().getText();
+                        }
+                        newFFramePicture.setPath(path);
+                        newFFramePicture.setViewing(getCbVisualizacion()
+                            .getSelectedIndex());
+                        newFFramePicture.setQuality(getCbCalidad()
+                            .getSelectedIndex());
+
+                        // if (namefile != null) {
+                        // newFFramePicture.setName(namefile);
+                        // }
+                        // // Ajustamos la relaci�n de aspecto a la altura.
+                        double ratio =
+                            (float) (dimension.getWidth())
+                                / (float) (dimension.getHeight());
+
+                        double newWidth = rect.getHeight() * ratio;
+                        Rectangle2D.Double rAdjust =
+                            new Rectangle2D.Double(rect.getMinX(), rect
+                                .getMinY(), newWidth, rect.getHeight());
+                        rect = rAdjust;
+
+                        newFFramePicture.setBoundBox(FLayoutUtilities
+                            .toSheetRect(rect, layoutPanel.getLayoutControl()
+                                .getAT()));
+                        newFFramePicture.setRotation(getPRotation()
+                            .getRotation());
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+                    isAcepted = true;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFramePictureDialog.this);
+                    notifyDialogClosed();
+                    layoutPanel.getLayoutControl().setDefaultTool();
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setSize(85, 26);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.setLocation(219, 89);
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    newFFramePicture = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFramePictureDialog.this);
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "propiedades_marco_imagenes"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(373, 14, 120, 120);
+        }
+        return pRotation;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFramePicture;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGroupDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGroupDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameGroupDialog.java	(revision 590)
@@ -0,0 +1,212 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Di�logo de un grupo de fframe del Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGroupDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = -7614158074124712725L;
+    private javax.swing.JPanel jContentPane = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameGroup fframegroup = null;
+    private boolean isAcepted = false;
+    private JPRotation pRotation = null;
+    private FFrameGroup newFFrameGroup;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al fframe de imagen.
+     */
+    public FFrameGroupDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframegroup = (FFrameGroup) frame;
+        initialize();
+    }
+
+    /**
+     * Inserta el rect�ngulo que ocupar� el fframe de imagen.
+     * 
+     * @param r
+     *            Rect�ngulo.
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.add(getJContentPane(), null);
+        this.setSize(196, 191);
+        getPRotation().setRotation(fframegroup.getRotation());
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.add(getBAceptar(), null);
+            jContentPane.add(getBCancelar(), null);
+            jContentPane.setSize(192, 186);
+            jContentPane.setLocation(0, 0);
+            jContentPane.add(getPRotation(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes bAceptar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setSize(85, 26);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.setLocation(7, 147);
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    try {
+                        newFFrameGroup = (FFrameGroup) fframegroup.clone();
+                        newFFrameGroup.setBoundBox(FLayoutUtilities
+                            .toSheetRect(rect, layoutPanel.getLayoutControl()
+                                .getAT()));
+                        newFFrameGroup
+                            .setRotation(getPRotation().getRotation());
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameGroupDialog.this);
+                    isAcepted = true;
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setSize(85, 26);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.setLocation(99, 147);
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameGroupDialog.this);
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "propiedades_marco_imagenes"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(30, 10, 120, 120);
+        }
+        return pRotation;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameGroup;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
+
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameScaleBarDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameScaleBarDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameScaleBarDialog.java	(revision 590)
@@ -0,0 +1,1195 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.event.KeyEvent;
+import java.awt.geom.Rectangle2D;
+import java.text.ParseException;
+
+import javax.swing.ImageIcon;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.ListCellRenderer;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.gui.panels.ColorChooserPanel;
+import org.gvsig.app.gui.utils.FontChooser;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameScaleBar;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontext.MapContext;
+
+/**
+ * Dialogo para a�adir una barra de escala al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameScaleBarDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = 484826623711988784L;
+
+    private static final ImageIcon inumero = PluginServices.getIconTheme().get(
+        "numero-icon");
+
+    private static final ImageIcon ibarra1 = PluginServices.getIconTheme().get(
+        "barra1-icon");
+
+    private static final ImageIcon ibarra2 = PluginServices.getIconTheme().get(
+        "barra2-icon");
+
+    private static final ImageIcon ibarra3 = PluginServices.getIconTheme().get(
+        "barra3-icon");
+
+    private javax.swing.JPanel jContentPane = null;
+    private javax.swing.JScrollPane jScrollPane = null;
+    private javax.swing.JList liVistas = null;
+    private javax.swing.JCheckBox chbMantenerIntervalo = null;
+    private javax.swing.JComboBox cbEscala = null;
+    private javax.swing.JComboBox cbUnidades = null;
+    private javax.swing.JLabel lIntervalo = null;
+    private javax.swing.JTextField tIntervalo = null;
+    private javax.swing.JLabel lNumIntervalos = null;
+    private javax.swing.JTextField tNumIntervalos = null;
+    private javax.swing.JLabel lDivIzquierda = null;
+    private javax.swing.JTextField tDivIzquierda = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+
+    // private ProjectView m_projectView=null;
+    private FFrameView fframeview = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameScaleBar fframescalebar = null; // new FFrameScaleBar();
+    private boolean isAcepted = false;
+    private ImageIcon[] images = new ImageIcon[4];
+    private javax.swing.JButton bFuente = null;
+    private JPanel pMarcoVista = null;
+    private JPanel pDescripcion = null;
+    private JTextField tfDescripcion = null;
+    private JPanel pUnidades = null;
+    private JCheckBox chbSobreDescripcion = null;
+    private JCheckBox chbMostrarUnidades = null;
+    private JCheckBox chbSobreUnidades = null;
+    private JPanel pEtiquetas = null;
+    private JCheckBox chbEtiquetas = null;
+    private JPanel pBarra = null;
+    private JPanel jPanel5 = null;
+    private JPanel jPanel6 = null;
+    private JPanel jPanel7 = null;
+    private ColorChooserPanel bUnidadesColor = null;
+    private ColorChooserPanel bBarraColor = null;
+    private Color barcolor = null;
+    private Color textcolor = null;
+
+    // private JPanel jPanel = null;
+    // private JPanel jPanel1 = null;
+    private JPanel jPanel2 = null;
+    private JCheckBox jCheckBox = null;
+    private JPRotation pRotation = null;
+    private JLabel lblBarColor = null;
+    private JTextField txtNumDec = null;
+    private JLabel lblNumDec = null;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            DOCUMENT ME!
+     * @param fframe
+     *            DOCUMENT ME!
+     * @throws CloneNotSupportedException
+     */
+    public FFrameScaleBarDialog(LayoutPanel layoutPanel, IFFrame frame)
+        throws CloneNotSupportedException {
+        super(layoutPanel, frame);
+        fframescalebar = (FFrameScaleBar) frame.clone();
+        barcolor = fframescalebar.getBarColor();
+        textcolor = fframescalebar.getTextColor();
+
+        if (fframescalebar.getFFrameDependence() != null
+            && fframescalebar.getDescription().equals("")) {
+            getTfNumberScale().setText(
+                "1:"
+                    + String.valueOf(((FFrameView) fframescalebar
+                        .getFFrameDependence()[0]).getScale()));
+        }
+
+        initialize();
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param r
+     *            DOCUMENT ME!
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.add(getJContentPane(), null);
+        this.setSize(621, 400);
+
+        if (fframescalebar.getStyle() == 0) {
+            getChbMantenerIntervalo().setEnabled(false);
+
+            // /getLUnidades().setEnabled(false);
+            getCbUnidades().setEnabled(false);
+            getChbEtiquetas().setEnabled(false);
+            getBBarraColor().setEnabled(false);
+            getChbMostrarUnidades().setEnabled(false);
+            getChbSobreUnidades().setEnabled(false);
+            getLIntervalo().setEnabled(false);
+            getTIntervalo().setEnabled(false);
+            getLNumIntervalos().setEnabled(false);
+            getTNumIntervalos().setEnabled(false);
+            getLDivIzquierda().setEnabled(false);
+            getTDivIzquierda().setEnabled(false);
+            getJCheckBox().setEnabled(false);
+            getChbSobreDescripcion().setEnabled(false);
+        }
+        getPRotation().setRotation(fframescalebar.getRotation());
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.add(getBAceptar(), null);
+            jContentPane.add(getBCancelar(), null);
+            jContentPane.add(getPRotation(), null);
+            jContentPane.setSize(617, 386);
+            jContentPane.setPreferredSize(new java.awt.Dimension(50, 50));
+            jContentPane.setLocation(0, 6);
+            jContentPane.add(getPMarcoVista(), null);
+            jContentPane.add(getPDescripcion(), null);
+            jContentPane.add(getPUnidades(), null);
+            jContentPane.add(getPBarra(), null);
+            jContentPane.add(getPEtiquetas(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setPreferredSize(new java.awt.Dimension(250, 55));
+            jScrollPane.setViewportView(getLiVistas());
+        }
+
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes liVistas
+     * 
+     * @return javax.swing.JList
+     */
+    private javax.swing.JList getLiVistas() {
+        if (liVistas == null) {
+            ListViewModel listmodel = new ListViewModel();
+            listmodel.addViews(layoutPanel);
+
+            // /ArrayList list = listmodel.getViews();
+
+            liVistas = new javax.swing.JList();
+
+            liVistas.setSize(new java.awt.Dimension(250, 52));
+            liVistas.setModel(listmodel);
+
+            for (int i = 0; i < liVistas.getModel().getSize(); i++) {
+                if (fframescalebar.getFFrameDependence() != null) {
+                    FFrameView fframeviewAux =
+                        (FFrameView) liVistas.getModel().getElementAt(i);
+
+                    if (fframeviewAux == fframescalebar.getFFrameDependence()[0]) {
+                        liVistas.setSelectedIndex(i);
+                        fframeview = fframeviewAux;
+                    }
+                }
+            }
+
+            liVistas
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+
+                    private int selectIndex = -1;
+
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                        IFFrame[] fframes =
+                            layoutPanel.getLayoutContext().getFFrames();
+                        int selectInt =
+                            ((JList) e.getSource()).getSelectedIndex();
+                        if (selectInt != selectIndex) {
+                            selectIndex = selectInt;
+                            if (selectIndex == -1) {
+                                return;
+                            }
+                            fframeview =
+                                (FFrameView) liVistas.getModel().getElementAt(
+                                    selectInt);
+
+                            for (int i = 0; i < fframes.length; i++) {
+                                IFFrame f = fframes[i];
+
+                                if (f instanceof FFrameView) {
+                                    if (((FFrameView) f).getView() == fframeview
+                                        .getView()) {
+                                        fframescalebar
+                                            .setFFrameDependence(fframeview);
+                                    }
+                                }
+                            }
+
+                            getTNumIntervalos()
+                                .setText(
+                                    String.valueOf(fframescalebar
+                                        .getNumInterval()));
+                            getTDivIzquierda().setText(
+                                String.valueOf(fframescalebar.getNumLeft()));
+                            getTIntervalo().setText(
+                                fframescalebar.obtainInterval());
+                            getTfNumberScale().setText(
+                                fframescalebar.getDescription());
+                        }
+                    }
+                });
+        }
+
+        return liVistas;
+    }
+
+    /**
+     * This method initializes chbMantenerIntervalo
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbMantenerIntervalo() {
+        if (chbMantenerIntervalo == null) {
+            chbMantenerIntervalo = new javax.swing.JCheckBox();
+            chbMantenerIntervalo.setSelected(fframescalebar.isbIntervalSet());
+            chbMantenerIntervalo.setText(PluginServices.getText(this,
+                "mantener_intervalo"));
+            chbMantenerIntervalo.setPreferredSize(new java.awt.Dimension(200,
+                20));
+            chbMantenerIntervalo
+                .addActionListener(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        fframescalebar.setIntervalSet(getChbMantenerIntervalo()
+                            .isSelected());
+                    }
+                });
+        }
+
+        return chbMantenerIntervalo;
+    }
+
+    /**
+     * This method initializes cbEscala
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbEscala() {
+        if (cbEscala == null) {
+            // String[] s={"n�merico","barra1","barra2","barra3","barra4"};
+            cbEscala = new javax.swing.JComboBox();
+            images[0] = inumero;
+            images[1] = ibarra1;
+            images[2] = ibarra2;
+            images[3] = ibarra3;
+
+            /*
+             * Image img=img = new BufferedImage(100, 25,
+             * BufferedImage.TYPE_INT_ARGB);
+             * img.getGraphics().drawImage(images[3].getImage(),0,0,null);
+             * img.getGraphics().setXORMode(Color.yellow);
+             * images[3]=new ImageIcon(img);
+             */
+            ComboBoxRenderer renderer = new ComboBoxRenderer();
+            renderer.setPreferredSize(new Dimension(100, 25));
+            cbEscala.setRenderer(renderer);
+            cbEscala.setMaximumRowCount(4);
+
+            cbEscala.addItem("0");
+            cbEscala.addItem("1");
+            cbEscala.addItem("2");
+            cbEscala.addItem("3");
+            cbEscala.setSelectedIndex(fframescalebar.getStyle());
+            cbEscala.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbEscala.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    fframescalebar.setStyle(getCbEscala().getSelectedIndex());
+
+                    if (cbEscala.getSelectedIndex() == 0) {
+                        getChbMantenerIntervalo().setEnabled(false);
+                        getChbMostrarUnidades().setEnabled(false);
+                        getChbSobreUnidades().setEnabled(false);
+                        getCbUnidades().setEnabled(false);
+                        getChbEtiquetas().setEnabled(false);
+                        getBBarraColor().setEnabled(false);
+                        getLIntervalo().setEnabled(false);
+                        getTIntervalo().setEnabled(false);
+                        getLNumIntervalos().setEnabled(false);
+                        getTNumIntervalos().setEnabled(false);
+                        getLDivIzquierda().setEnabled(false);
+                        getTDivIzquierda().setEnabled(false);
+                        getJCheckBox().setEnabled(false);
+                        getChbSobreDescripcion().setEnabled(false);
+                    } else {
+                        getChbMantenerIntervalo().setEnabled(true);
+                        getChbMostrarUnidades().setEnabled(true);
+                        getChbSobreUnidades().setEnabled(true);
+                        getCbUnidades().setEnabled(true);
+                        getChbEtiquetas().setEnabled(true);
+                        getBBarraColor().setEnabled(true);
+                        getLIntervalo().setEnabled(true);
+                        getTIntervalo().setEnabled(true);
+                        getLNumIntervalos().setEnabled(true);
+                        getTNumIntervalos().setEnabled(true);
+                        getLDivIzquierda().setEnabled(true);
+                        getTDivIzquierda().setEnabled(true);
+                        getJCheckBox().setEnabled(true);
+                        getChbSobreDescripcion().setEnabled(true);
+                    }
+                }
+            });
+        }
+
+        return cbEscala;
+    }
+
+    /**
+     * This method initializes cbUnidades
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbUnidades() {
+        if (cbUnidades == null) {
+            // String[]
+            // s={"Kil�metros","metros","cent�metros","mil�metros","millas","yardas","pies","pulgadas"};
+            String[] names = MapContext.getDistanceNames();
+            for (int i = 0; i < names.length; i++) {
+                names[i] = PluginServices.getText(this, names[i]);
+            }
+            cbUnidades = new javax.swing.JComboBox(names);
+            cbUnidades.setSelectedIndex(fframescalebar.getUnits());
+            cbUnidades.setPreferredSize(new java.awt.Dimension(150, 20));
+            cbUnidades.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    fframescalebar.setUnits(getCbUnidades().getSelectedIndex());
+                    getTIntervalo().setText(fframescalebar.obtainInterval());
+                }
+            });
+        }
+
+        return cbUnidades;
+    }
+
+    /**
+     * This method initializes lIntervalo
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLIntervalo() {
+        if (lIntervalo == null) {
+            lIntervalo = new javax.swing.JLabel();
+            lIntervalo.setText(PluginServices.getText(this, "Intervalo"));
+            lIntervalo.setPreferredSize(new java.awt.Dimension(155, 20));
+        }
+
+        return lIntervalo;
+    }
+
+    /**
+     * This method initializes tIntervalo
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTIntervalo() {
+        if (tIntervalo == null) {
+            tIntervalo = new javax.swing.JTextField();
+            tIntervalo.setPreferredSize(new java.awt.Dimension(80, 20));
+            tIntervalo.setText(fframescalebar.getInterval());
+            tIntervalo.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    if (!tIntervalo.getText().toString().equals("")) {
+                        String s = tIntervalo.getText().toString();
+                        try {
+                            fframescalebar
+                                .setInterval(FFrameScaleBar.numberFormat.parse(
+                                    s).doubleValue());
+                        } catch (ParseException e1) {
+                            e1.printStackTrace();
+                        }
+                        getTNumIntervalos().setText(
+                            String.valueOf(fframescalebar.getNumInterval()));
+                    }
+                }
+            });
+        }
+
+        return tIntervalo;
+    }
+
+    /**
+     * This method initializes lNumIntervalos
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLNumIntervalos() {
+        if (lNumIntervalos == null) {
+            lNumIntervalos = new javax.swing.JLabel();
+            lNumIntervalos.setText(PluginServices.getText(this,
+                "Num_intervalos"));
+            lNumIntervalos.setPreferredSize(new java.awt.Dimension(155, 20));
+        }
+
+        return lNumIntervalos;
+    }
+
+    /**
+     * This method initializes tNumIntervalos
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTNumIntervalos() {
+        if (tNumIntervalos == null) {
+            tNumIntervalos = new javax.swing.JTextField();
+            tNumIntervalos.setPreferredSize(new java.awt.Dimension(80, 20));
+            tNumIntervalos.setText(Integer.toString(fframescalebar
+                .getNumInterval()));
+            tNumIntervalos.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    if (!tNumIntervalos.getText().toString().equals("")) {
+                        fframescalebar.setNumInterval(Integer
+                            .parseInt(tNumIntervalos.getText().toString()));
+                        getTIntervalo()
+                            .setText(fframescalebar.obtainInterval());
+                    }
+                }
+            });
+        }
+
+        return tNumIntervalos;
+    }
+
+    /**
+     * This method initializes lDivIzquierda
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDivIzquierda() {
+        if (lDivIzquierda == null) {
+            lDivIzquierda = new javax.swing.JLabel();
+            lDivIzquierda.setText(PluginServices.getText(this,
+                "divisiones_izquierda"));
+            lDivIzquierda.setPreferredSize(new java.awt.Dimension(155, 20));
+        }
+
+        return lDivIzquierda;
+    }
+
+    /**
+     * This method initializes tDivIzquierda
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTDivIzquierda() {
+        if (tDivIzquierda == null) {
+            tDivIzquierda = new javax.swing.JTextField();
+            tDivIzquierda.setPreferredSize(new java.awt.Dimension(80, 20));
+            tDivIzquierda
+                .setText(Integer.toString(fframescalebar.getNumLeft()));
+            tDivIzquierda.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(java.awt.event.KeyEvent e) {
+                    if (tDivIzquierda.getText().toString().equals("")) {
+                        tDivIzquierda.setText("0");
+                    } else {
+                        fframescalebar.setNumLeft(Integer
+                            .parseInt(tDivIzquierda.getText()));
+                    }
+                }
+            });
+        }
+
+        return tDivIzquierda;
+    }
+
+    /**
+     * This method initializes bAceptar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setSize(85, 26);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.setLocation(106, 347);
+            bAceptar.setPreferredSize(new java.awt.Dimension(79, 23));
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    fframescalebar.setUnits(getCbUnidades().getSelectedIndex());
+                    fframescalebar.setBoundBox(FLayoutUtilities.toSheetRect(
+                        rect, layoutPanel.getLayoutControl().getAT()));
+                    fframescalebar.setFFrameDependence(fframeview);
+                    fframescalebar.setBarColor(barcolor);
+                    fframescalebar.setTextColor(textcolor);
+                    fframescalebar.setShowNameUnits(getChbMostrarUnidades()
+                        .isSelected());
+                    fframescalebar.setShowDescription(getJCheckBox()
+                        .isSelected());
+                    fframescalebar.setAboveDescription(getChbSobreDescripcion()
+                        .isSelected());
+                    fframescalebar.setAboveIntervals(getChbEtiquetas()
+                        .isSelected());
+                    fframescalebar.setAboveName(getChbSobreUnidades()
+                        .isSelected());
+                    fframescalebar.setRotation(getPRotation().getRotation());
+                    fframescalebar.setNumDec(Integer.parseInt(getNumDec()
+                        .getText()));
+                    fframescalebar.setNumLeft(Integer
+                        .parseInt(getTDivIzquierda().getText()));
+                    isAcepted = true;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameScaleBarDialog.this);
+                    notifyDialogClosed();
+                    layoutPanel.getLayoutControl().setDefaultTool();
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setSize(85, 26);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.setLocation(297, 347);
+            bCancelar.setPreferredSize(new java.awt.Dimension(85, 23));
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    fframescalebar = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameScaleBarDialog.this);
+                    notifyDialogClosed();
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "Propiedades_escala_grafica"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes bFuente
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBFuente() {
+        if (bFuente == null) {
+            bFuente = new javax.swing.JButton();
+            bFuente.setText(PluginServices.getText(this, "fuente"));
+            bFuente.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    Font font =
+                        FontChooser.showDialog(
+                            PluginServices.getText(this, "seleccion_fuente"),
+                            fframescalebar.getFont());
+                    if (font != null) {
+                        fframescalebar.setFont(font); // fchoser=new
+                                                      // FontChooser();
+                    }
+                }
+            });
+        }
+
+        return bFuente;
+    }
+
+    /**
+     * This method initializes pMarcoVista
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPMarcoVista() {
+        if (pMarcoVista == null) {
+            pMarcoVista = new JPanel();
+            pMarcoVista.setBounds(7, 9, 263, 86);
+            pMarcoVista.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null,
+                PluginServices.getText(this,
+                    PluginServices.getText(this, "marco_vista")),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION,
+                new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
+                java.awt.Color.black));
+            pMarcoVista.add(getJScrollPane(), null);
+        }
+
+        return pMarcoVista;
+    }
+
+    /**
+     * This method initializes pDescripcion
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPDescripcion() {
+        if (pDescripcion == null) {
+            FlowLayout flowLayout1 = new FlowLayout();
+            flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);
+            pDescripcion = new JPanel();
+            pDescripcion.setLayout(flowLayout1);
+            pDescripcion.setBounds(275, 9, 204, 110);
+            pDescripcion.setBorder(javax.swing.BorderFactory
+                .createTitledBorder(null,
+                    PluginServices.getText(this, "Escala"),
+                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                    javax.swing.border.TitledBorder.DEFAULT_POSITION,
+                    new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
+                    java.awt.Color.black));
+            pDescripcion.add(getTfNumberScale(), null);
+            pDescripcion.add(getJCheckBox(), null);
+            pDescripcion.add(getChbSobreDescripcion(), null);
+        }
+
+        return pDescripcion;
+    }
+
+    /**
+     * This method initializes tfDescripcion
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTfNumberScale() {
+        if (tfDescripcion == null) {
+            tfDescripcion = new JTextField();
+            tfDescripcion.setPreferredSize(new java.awt.Dimension(180, 20));
+
+            tfDescripcion.setEditable(false);
+            /*
+             * if (fframeview!=null){
+             * getTfDescripcion().setText("escala 1:"+String.valueOf(fframeview.
+             * getScale()));
+             * }
+             */
+            tfDescripcion.setText(fframescalebar.getDescription());
+        }
+
+        return tfDescripcion;
+    }
+
+    /**
+     * This method initializes pUnidades
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPUnidades() {
+        if (pUnidades == null) {
+            FlowLayout flowLayout = new FlowLayout();
+            flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
+            pUnidades = new JPanel();
+            pUnidades.setLayout(flowLayout);
+            pUnidades.setLocation(274, 122);
+            pUnidades.setSize(204, 110);
+            pUnidades.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null, PluginServices.getText(this, "unidades"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION,
+                new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
+                java.awt.Color.black));
+            pUnidades.add(getCbUnidades(), null);
+            pUnidades.add(getChbMostrarUnidades(), null);
+            pUnidades.add(getChbSobreUnidades(), null);
+        }
+
+        return pUnidades;
+    }
+
+    /**
+     * This method initializes chbSobreDescripcion
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbSobreDescripcion() {
+        if (chbSobreDescripcion == null) {
+            chbSobreDescripcion = new JCheckBox();
+            chbSobreDescripcion
+                .setSelected(fframescalebar.isAboveDescription());
+            chbSobreDescripcion
+                .setPreferredSize(new java.awt.Dimension(180, 24));
+            chbSobreDescripcion.setText(PluginServices.getText(this,
+                "sobre_la_barra"));
+        }
+
+        return chbSobreDescripcion;
+    }
+
+    /**
+     * This method initializes chbMostrarUnidades
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbMostrarUnidades() {
+        if (chbMostrarUnidades == null) {
+            chbMostrarUnidades = new JCheckBox();
+            chbMostrarUnidades.setText(PluginServices.getText(this,
+                "mostrar_unidades"));
+            chbMostrarUnidades.setSelected(fframescalebar.isShowNameUnits());
+            chbMostrarUnidades
+                .setPreferredSize(new java.awt.Dimension(150, 24));
+        }
+
+        return chbMostrarUnidades;
+    }
+
+    /**
+     * This method initializes chbSobreUnidades
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbSobreUnidades() {
+        if (chbSobreUnidades == null) {
+            chbSobreUnidades = new JCheckBox();
+            chbSobreUnidades.setSelected(fframescalebar.isAboveName());
+            chbSobreUnidades.setText(PluginServices.getText(this,
+                "sobre_la_barra"));
+            chbSobreUnidades.setPreferredSize(new java.awt.Dimension(150, 24));
+        }
+
+        return chbSobreUnidades;
+    }
+
+    /**
+     * This method initializes pEtiquetas
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPEtiquetas() {
+        if (pEtiquetas == null) {
+            FlowLayout flowLayout2 = new FlowLayout();
+            flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);
+            pEtiquetas = new JPanel();
+            pEtiquetas.setLayout(flowLayout2);
+            pEtiquetas.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null, PluginServices.getText(this, "etiquetas"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION,
+                new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
+                java.awt.Color.black));
+            pEtiquetas.setBounds(276, 235, 204, 104);
+            pEtiquetas.add(getChbEtiquetas(), null);
+            pEtiquetas.add(getJPanel2(), null);
+        }
+
+        return pEtiquetas;
+    }
+
+    /**
+     * This method initializes chbEtiquetas
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbEtiquetas() {
+        if (chbEtiquetas == null) {
+            chbEtiquetas = new JCheckBox();
+            chbEtiquetas.setSelected(fframescalebar.isAboveIntervals());
+            chbEtiquetas
+                .setText(PluginServices.getText(this, "sobre_la_barra"));
+        }
+
+        return chbEtiquetas;
+    }
+
+    /**
+     * This method initializes pBarra
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPBarra() {
+        if (pBarra == null) {
+            FlowLayout flowLayout3 = new FlowLayout();
+            flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);
+            lblNumDec = new JLabel();
+            lblNumDec.setText(PluginServices.getText(this,
+                "numero_decimales_mostrar"));
+            lblBarColor = new JLabel();
+            lblBarColor.setText(PluginServices.getText(this, "color"));
+            pBarra = new JPanel();
+            pBarra.setLayout(flowLayout3);
+            pBarra.setBounds(8, 98, 263, 241);
+            pBarra.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
+                PluginServices.getText(this, "barra"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION,
+                new java.awt.Font("Dialog", java.awt.Font.BOLD, 12),
+                java.awt.Color.black));
+            pBarra.add(getChbMantenerIntervalo(), null);
+            pBarra.add(getCbEscala(), null);
+            pBarra.add(lblNumDec, null);
+            pBarra.add(getNumDec(), null);
+            pBarra.add(getJPanel5(), null);
+            pBarra.add(getJPanel7(), null);
+            pBarra.add(getJPanel6(), null);
+            pBarra.add(lblBarColor, null);
+            pBarra.add(getBBarraColor(), null);
+        }
+
+        return pBarra;
+    }
+
+    /**
+     * This method initializes jPanel5
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel5() {
+        if (jPanel5 == null) {
+            jPanel5 = new JPanel();
+            jPanel5.setPreferredSize(new java.awt.Dimension(245, 30));
+            jPanel5.add(getLIntervalo(), null);
+            jPanel5.add(getTIntervalo(), null);
+        }
+
+        return jPanel5;
+    }
+
+    /**
+     * This method initializes jPanel6
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel6() {
+        if (jPanel6 == null) {
+            jPanel6 = new JPanel();
+            jPanel6.setPreferredSize(new java.awt.Dimension(245, 30));
+            jPanel6.add(getLDivIzquierda(), null);
+            jPanel6.add(getTDivIzquierda(), null);
+        }
+
+        return jPanel6;
+    }
+
+    /**
+     * This method initializes jPanel7
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel7() {
+        if (jPanel7 == null) {
+            jPanel7 = new JPanel();
+            jPanel7.setPreferredSize(new java.awt.Dimension(245, 30));
+            jPanel7.add(getLNumIntervalos(), null);
+            jPanel7.add(getTNumIntervalos(), null);
+        }
+
+        return jPanel7;
+    }
+
+    /**
+     * This method initializes bUnidadesColor
+     * 
+     * @return javax.swing.JButton
+     */
+    private ColorChooserPanel getBUnidadesColor() {
+        if (bUnidadesColor == null) {
+            bUnidadesColor = new ColorChooserPanel();
+            bUnidadesColor.setAlpha(255);
+            bUnidadesColor.setColor(textcolor);
+            bUnidadesColor.setPreferredSize(new java.awt.Dimension(100, 25));
+            bUnidadesColor
+                .addActionListener(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        textcolor = getBUnidadesColor().getColor();
+                    }
+                });
+        }
+
+        return bUnidadesColor;
+    }
+
+    /**
+     * This method initializes bBarraColor
+     * 
+     * @return javax.swing.JButton
+     */
+    private ColorChooserPanel getBBarraColor() {
+        if (bBarraColor == null) {
+            bBarraColor = new ColorChooserPanel();
+            bBarraColor.setPreferredSize(new java.awt.Dimension(100, 25));
+            bBarraColor.setAlpha(255);
+            bBarraColor.setColor(barcolor);
+            bBarraColor.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    // JDialog dlg;
+                    // JColorChooser colorChooser;
+                    // colorChooser = new JColorChooser();
+                    // dlg = JColorChooser.createDialog((JFrame) null,
+                    // PluginServices.getText(this, "Elegir_Color"),
+                    // true, colorChooser, null, null);
+                    // dlg.show(true);
+                    //
+                    barcolor = getBBarraColor().getColor();
+
+                    // bBarraColor.setBackground(barcolor);
+                    // bBarraColor.setForeground(barcolor);
+                }
+            });
+        }
+
+        return bBarraColor;
+    }
+
+    /**
+     * This method initializes jPanel
+     * 
+     * @return javax.swing.JPanel
+     */
+
+    /*
+     * private JPanel getJPanel() {
+     * if (jPanel == null) {
+     * jPanel = new JPanel();
+     * jPanel.setPreferredSize(new java.awt.Dimension(44,24));
+     * jPanel.setForeground(barcolor);
+     * jPanel.setBackground(barcolor);
+     * }
+     * return jPanel;
+     * }
+     */
+
+    /**
+     * This method initializes jPanel1
+     * 
+     * @return javax.swing.JPanel
+     */
+
+    /*
+     * private JPanel getJPanel1() {
+     * if (jPanel1 == null) {
+     * jPanel1 = new JPanel();
+     * jPanel1.setBackground(textcolor);
+     * jPanel1.setPreferredSize(new java.awt.Dimension(44,24));
+     * }
+     * return jPanel1;
+     * }
+     */
+
+    /**
+     * This method initializes jPanel2
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel2() {
+        if (jPanel2 == null) {
+            jPanel2 = new JPanel();
+            jPanel2.add(getBFuente(), null);
+            jPanel2.add(getBUnidadesColor(), null);
+
+            // jPanel2.add(getJPanel1(), null);
+        }
+
+        return jPanel2;
+    }
+
+    /**
+     * This method initializes jCheckBox
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getJCheckBox() {
+        if (jCheckBox == null) {
+            jCheckBox = new JCheckBox();
+            jCheckBox.setSelected(fframescalebar.isShowDescription());
+            jCheckBox.setPreferredSize(new java.awt.Dimension(180, 24));
+            jCheckBox.setText(PluginServices.getText(this,
+                "mostrar_escala_numerica"));
+        }
+
+        return jCheckBox;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @author Vicente Caballero Navarro
+     */
+    class ComboBoxRenderer extends JLabel implements ListCellRenderer {
+
+        private static final long serialVersionUID = -3169953982752103303L;
+
+        /**
+         * Crea un nuevo ComboBoxRenderer.
+         */
+        public ComboBoxRenderer() {
+            setOpaque(true);
+            setHorizontalAlignment(CENTER);
+            setVerticalAlignment(CENTER);
+        }
+
+        /*
+         * This method finds the image and text corresponding
+         * to the selected value and returns the label, set up
+         * to display the text and image.
+         */
+        public Component getListCellRendererComponent(JList list, Object value,
+            int index, boolean isSelected, boolean cellHasFocus) {
+            // Get the selected index. (The index param isn't
+            // always valid, so just use the value.)
+            // /int selectedIndex = ((Integer)value).intValue();
+            if (isSelected) {
+                setBackground(list.getSelectionBackground());
+                setForeground(list.getSelectionForeground());
+            } else {
+                setBackground(list.getBackground());
+                setForeground(list.getForeground());
+            }
+
+            ImageIcon icon = images[Integer.parseInt((String) value)];
+            setIcon(icon);
+
+            return this;
+        }
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(480, 10, 120, 120);
+        }
+        return pRotation;
+    }
+
+    /**
+     * This method initializes numDec
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getNumDec() {
+        if (txtNumDec == null) {
+            txtNumDec = new JTextField();
+            txtNumDec.setPreferredSize(new java.awt.Dimension(30, 20));
+            txtNumDec.setText(String.valueOf(fframescalebar.getNumDec()));
+            txtNumDec.addKeyListener(new java.awt.event.KeyAdapter() {
+
+                public void keyReleased(KeyEvent arg0) {
+                    super.keyReleased(arg0);
+                    if (!getNumDec().getText().toString().equals("")) {
+                        fframescalebar.setNumDec(Integer.parseInt(getNumDec()
+                            .getText().toString()));
+                        getTIntervalo()
+                            .setText(fframescalebar.obtainInterval());
+                    }
+                }
+            });
+        }
+        return txtNumDec;
+    }
+
+    public IFFrame getFFrame() {
+        return fframescalebar;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="17,10"
+// @jve:visual-info decl-index=0 visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameLegendDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameLegendDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs/FFrameLegendDialog.java	(revision 590)
@@ -0,0 +1,599 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes.gui.dialogs;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.gui.utils.FontChooser;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.fframes.gui.JPRotation;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+
+/**
+ * Dialogo para a�adir la leyenda de alguna vista al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameLegendDialog extends AbstractFFrameDialog implements
+    IFFrameDialog {
+
+    private static final long serialVersionUID = -4661317813255825195L;
+    private javax.swing.JPanel jContentPane = null;
+    private javax.swing.JLabel lMarcoVista = null;
+    private javax.swing.JScrollPane jScrollPane = null;
+    private javax.swing.JLabel lVisualizacion = null;
+    private javax.swing.JComboBox cbVisualizacion = null;
+    private javax.swing.JLabel lCalidad = null;
+    private javax.swing.JComboBox cbCalidad = null;
+    private javax.swing.JList liVistas = null;
+    private Rectangle2D rect = new Rectangle2D.Double();
+    private FFrameLegend fframelegend = null; // new FFrameLegend();
+    private List<String> nameLayers = new ArrayList<String>();
+    private List<Boolean> areVisible = new ArrayList<Boolean>();
+    private boolean isAcepted = false;
+    private JButton bFuente = null;
+    private FFrameView fframeview = null;
+    private JPRotation pRotation = null;
+    // private JLabel lblNumColum = null;
+    // private JTextField txtNumColum = null;
+    // private ColumPanel pNumColum = null;
+    private JScrollPane jScrollPane1 = null;
+    private JPanel jPanel = null;
+    private AcceptCancelPanel accept;
+    private IFFrame fframeDependence;
+    private Font font;
+    private FFrameLegend newFFrameLegend;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layoutPanel
+     *            Referencia al Layout.
+     * @param fframe
+     *            Referencia al FFrameLegend.
+     */
+    public FFrameLegendDialog(LayoutPanel layoutPanel, IFFrame frame) {
+        super(layoutPanel, frame);
+        fframelegend = (FFrameLegend) frame;
+        font = fframelegend.getFont();
+        fframeDependence = fframelegend.getFFrameDependence()[0];
+        initialize();
+    }
+
+    /**
+     * Inserta el rect�ngulo que ocupar� el fframe de leyenda.
+     * 
+     * @param r
+     *            extent.
+     */
+    public void setRectangle(Rectangle2D r) {
+        rect.setRect(r);
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+        this.add(getJContentPane(), null);
+        this.setSize(616, 199);
+        this.setSize(new java.awt.Dimension(616, 189));
+        getPRotation().setRotation(fframelegend.getRotation());
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+            jContentPane.setLayout(null);
+            jContentPane.setBounds(new java.awt.Rectangle(3, 1, 609, 183));
+            jContentPane.add(getLMarcoVista(), null);
+            jContentPane.add(getJScrollPane(), null);
+            jContentPane.add(getLVisualizacion(), null);
+            jContentPane.add(getCbVisualizacion(), null);
+            jContentPane.add(getLCalidad(), null);
+            jContentPane.add(getCbCalidad(), null);
+            // jContentPane.add(getBAceptar(), null);
+            // jContentPane.add(getBCancelar(), null);
+            jContentPane.add(getAcceptCancelPanel(), null);
+            jContentPane.add(getBFuente(), null);
+            jContentPane.setBounds(3, 1, 609, 241);
+            jContentPane.add(getPRotation(), null);
+            // jContentPane.add(lblNumColum, null);
+            jContentPane.add(getJScrollPane1(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes lMarcoVista
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLMarcoVista() {
+        if (lMarcoVista == null) {
+            lMarcoVista = new javax.swing.JLabel();
+            lMarcoVista.setSize(115, 63);
+            lMarcoVista.setText(PluginServices.getText(this, "marco_vista"));
+            lMarcoVista.setLocation(5, 10);
+        }
+
+        return lMarcoVista;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setViewportView(getLiVistas());
+            jScrollPane.setSize(179, 65);
+            jScrollPane.setPreferredSize(new java.awt.Dimension(70, 60));
+            jScrollPane.setLocation(129, 10);
+        }
+
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes lVisualizacion
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLVisualizacion() {
+        if (lVisualizacion == null) {
+            lVisualizacion = new javax.swing.JLabel();
+            lVisualizacion.setSize(115, 16);
+            lVisualizacion.setText(PluginServices
+                .getText(this, "visualizacion"));
+            lVisualizacion.setLocation(6, 83);
+            lVisualizacion.setVisible(false);
+        }
+
+        return lVisualizacion;
+    }
+
+    /**
+     * This method initializes cbVisualizacion
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbVisualizacion() {
+        if (cbVisualizacion == null) {
+            cbVisualizacion = new javax.swing.JComboBox();
+            cbVisualizacion.addItem(PluginServices.getText(this,
+                "cuando_activo"));
+            cbVisualizacion.addItem(PluginServices.getText(this, "siempre"));
+            cbVisualizacion.setSelectedIndex(fframelegend.getViewing());
+            cbVisualizacion.setSize(179, 20);
+            cbVisualizacion.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbVisualizacion.setLocation(129, 83);
+            cbVisualizacion.setEnabled(false);
+            cbVisualizacion.setVisible(false);
+        }
+
+        return cbVisualizacion;
+    }
+
+    /**
+     * This method initializes lCalidad
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLCalidad() {
+        if (lCalidad == null) {
+            lCalidad = new javax.swing.JLabel();
+            lCalidad.setSize(115, 20);
+            lCalidad.setText(PluginServices.getText(this, "calidad"));
+            lCalidad.setLocation(6, 103);
+        }
+
+        return lCalidad;
+    }
+
+    /**
+     * This method initializes cbCalidad
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbCalidad() {
+        if (cbCalidad == null) {
+            cbCalidad = new javax.swing.JComboBox();
+            cbCalidad.addItem(PluginServices.getText(this, "presentacion"));
+            cbCalidad.addItem(PluginServices.getText(this, "borrador"));
+            cbCalidad.setSelectedIndex(fframelegend.getQuality());
+            cbCalidad.setSize(179, 20);
+            cbCalidad.setPreferredSize(new java.awt.Dimension(200, 20));
+            cbCalidad.setLocation(129, 103);
+        }
+
+        return cbCalidad;
+    }
+
+    private AcceptCancelPanel getAcceptCancelPanel() {
+        if (accept == null) {
+            ActionListener okAction, cancelAction;
+            okAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    try {
+                        newFFrameLegend = (FFrameLegend) fframelegend.clone();
+                        newFFrameLegend.setFFrameDependence(fframeDependence);
+                        newFFrameLegend.setFont(font);
+                        newFFrameLegend.setNameLayers(nameLayers);
+                        newFFrameLegend.setAreVisible(areVisible);
+                        newFFrameLegend.setViewing(cbVisualizacion
+                            .getSelectedIndex());
+                        newFFrameLegend
+                            .setQuality(cbCalidad.getSelectedIndex());
+                        newFFrameLegend.setBoundBox(FLayoutUtilities
+                            .toSheetRect(rect, layoutPanel.getLayoutControl()
+                                .getAT()));
+                        newFFrameLegend.setRotation(getPRotation()
+                            .getRotation());
+
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameLegendDialog.this);
+                    notifyDialogClosed();
+                    layoutPanel.getLayoutControl().setDefaultTool();
+                    isAcepted = true;
+                }
+            };
+            cancelAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    newFFrameLegend = null;
+                    PluginServices.getMDIManager().closeWindow(
+                        FFrameLegendDialog.this);
+                    notifyDialogClosed();
+                }
+            };
+            accept = new AcceptCancelPanel(okAction, cancelAction);
+            accept.setPreferredSize(new java.awt.Dimension(300, 34));
+            accept.setBounds(new java.awt.Rectangle(5, 140, 200, 30));
+            // accept.setLocation(5, 200);
+        }
+        return accept;
+    }
+
+    /**
+     * This method initializes liVistas
+     * 
+     * @return javax.swing.JList
+     */
+    private javax.swing.JList getLiVistas() {
+        if (liVistas == null) {
+            ListViewModel listmodel = new ListViewModel();
+
+            // listmodel.addViews();
+            listmodel.addViews(layoutPanel);
+
+            // /ArrayList list = listmodel.getViews();
+            liVistas = new javax.swing.JList();
+            liVistas.setModel(listmodel);
+
+            for (int i = 0; i < liVistas.getModel().getSize(); i++) {
+                if (fframeDependence != null) {
+                    fframeview =
+                        (FFrameView) liVistas.getModel().getElementAt(i);
+
+                    if (fframeview == fframelegend.getFFrameDependence()[0]) {
+                        liVistas.setSelectedIndex(i);
+                        nameLayers = fframelegend.getNameLayers();
+                        areVisible = fframelegend.getAreVisible();
+                        refreshLayerPanel();
+                    }
+
+                    /*
+                     * m_projectView=(ProjectView)liVistas.getModel().getElementAt
+                     * (i);
+                     * if
+                     * (m_projectView.getMapContext()==fframelegend.getFMap()){
+                     * liVistas.setSelectedIndex(i);
+                     * }
+                     */
+                }
+            }
+
+            liVistas
+                .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+
+                    private int selectIndex = -1;
+
+                    public void valueChanged(
+                        javax.swing.event.ListSelectionEvent e) {
+                        IFFrame[] fframes =
+                            layoutPanel.getLayoutContext().getFFrames();
+                        int selectInt =
+                            ((JList) e.getSource()).getSelectedIndex();
+                        if (selectInt != selectIndex) {
+                            selectIndex = selectInt;
+                            if (selectIndex == -1) {
+                                return;
+                            }
+                            fframeview =
+                                (FFrameView) liVistas.getModel().getElementAt(
+                                    selectInt);
+
+                            for (int i = 0; i < fframes.length; i++) {
+                                IFFrame f = fframes[i];
+
+                                if (f instanceof FFrameView) {
+                                    if (((FFrameView) f).getView() == fframeview
+                                        .getView()) {
+                                        fframeDependence = fframeview;
+                                        // fframelegend
+                                        // .setFFrameDependence(fframeview);
+                                        refreshLayerPanel();
+                                    }
+                                }
+                            }
+
+                            // fframelegend.setFFrameView(fframeview);
+                        }
+                    }
+
+                });
+        }
+
+        return liVistas;
+    }
+
+    private void refreshLayerPanel() {
+        getJPanel().removeAll();
+        if (fframeview == null || fframeview.getMapContext() == null) {
+            return;
+        }
+        FLayers layers = fframeview.getMapContext().getLayers();
+        refreshLayers(layers, true);
+    }
+
+    private void refreshLayers(FLayers layers, boolean first) {
+        boolean clear = false;
+        // //Comprobar si ha variado
+        if (layers.getLayersCount() != nameLayers.size()) {
+            clear = true;
+        } else {
+            int j = 0;
+            for (int i = layers.getLayersCount() - 1; i >= 0; i--) {
+                String name = (String) nameLayers.get(j);
+                if (!(nameLayers.size() > j && nameLayers.get(j).equals(name))) {
+                    clear = true;
+                    break;
+                }
+                j++;
+            }
+        }
+        // //
+        if (clear && first) {
+            nameLayers.clear();
+            areVisible.clear();
+        }
+        int j = 0;
+        for (int i = layers.getLayersCount() - 1; i >= 0; i--) {
+            FLayer layer = layers.getLayer(i);
+            String name = layer.getName();
+
+            /*
+             * if (layer instanceof FLayers) {
+             * //refreshLayers((FLayers)layer,false);
+             * }else
+             */
+            {
+
+                if (nameLayers.size() > j && nameLayers.get(j).equals(name)) {
+                    boolean b = ((Boolean) areVisible.get(j)).booleanValue();
+                    addLayer(name, j, b);
+                    nameLayers.set(j, name);
+                    areVisible.set(j, new Boolean(b));
+                } else {
+                    addLayer(name, j, layer.isVisible());
+                    nameLayers.add(name);
+                    areVisible.add(new Boolean(layers.getLayer(i).isVisible()));
+
+                }
+            }
+            j++;
+
+        }
+        getJPanel().setSize(new Dimension(100, 100));
+    }
+
+    private void addLayer(String name, int i, boolean b) {
+        JCheckBox chbox = new JCheckBox(name, b);
+        // if (nameLayers.size()>i) {
+        // nameLayers.set(i,name);
+        // areVisible.set(i,new Boolean(b));
+        // }else {
+        // nameLayers.add(name);
+        // areVisible.add(new Boolean(b));
+        // }
+
+        chbox.addChangeListener(new ChangeListener() {
+
+            public void stateChanged(ChangeEvent arg0) {
+                JCheckBox ckb = (JCheckBox) arg0.getSource();
+                Component[] components = getJPanel().getComponents();
+                for (int i = components.length - 1; i >= 0; i--) {
+                    if (components[i].equals(ckb)) {
+                        areVisible.set(i, new Boolean(ckb.isSelected()));
+                    }
+                }
+                // hashVisible.put(ckb.getLabel(),new
+                // Boolean(ckb.isSelected()));
+            }
+
+        });
+        getJPanel().add(name, chbox);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "propiedades_marco_leyenda"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+     */
+    public boolean getIsAcepted() {
+        return isAcepted;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes bFuente
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getBFuente() {
+        if (bFuente == null) {
+            bFuente =
+                ToolsSwingLocator.getUsabilitySwingManager().createJButton();
+            bFuente.setSize(90, 23);
+            bFuente.setText(PluginServices.getText(this, "fuente"));
+            bFuente.setLocation(217, 146);
+            bFuente.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                	Font selectedFont = null;
+                    if (font != null) {
+                    	selectedFont =
+                            FontChooser.showDialog(PluginServices.getText(this,
+                                "seleccion_fuente"), font);
+                    } else {
+                    	selectedFont =
+                            FontChooser.showDialog(PluginServices.getText(this,
+                                "seleccion_fuente"), getFont());
+                    }
+                    if (selectedFont!=null) {
+                    	font = selectedFont;
+                    }
+                }
+            });
+        }
+
+        return bFuente;
+    }
+
+    /**
+     * This method initializes pRotation
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPRotation getPRotation() {
+        if (pRotation == null) {
+            pRotation = new JPRotation();
+            pRotation.setBounds(470, 19, 120, 120);
+        }
+        return pRotation;
+    }
+
+    /**
+     * This method initializes jScrollPane1
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private JScrollPane getJScrollPane1() {
+        if (jScrollPane1 == null) {
+            jScrollPane1 = new JScrollPane();
+            jScrollPane1.setBounds(new java.awt.Rectangle(314, 10, 137, 158));
+            jScrollPane1
+                .setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+            jScrollPane1
+                .setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+            jScrollPane1.setViewportView(getJPanel());
+        }
+        return jScrollPane1;
+    }
+
+    /**
+     * This method initializes jPanel
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel() {
+        if (jPanel == null) {
+            jPanel = new JPanel();
+            jPanel.setLayout(new BoxLayout(getJPanel(), BoxLayout.Y_AXIS));
+        }
+        return jPanel;
+    }
+
+    public IFFrame getFFrame() {
+        return newFFrameLegend;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui/dialogs
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/gui
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroupFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroupFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameGroupFactory.java	(revision 590)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.fframes;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * Factory of FFrameGroup.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameGroupFactory extends FrameFactory {
+
+    /**
+     * Create a new IFFrame.
+     * 
+     * @return IFFrame.
+     */
+    public IFFrame createFrame() {
+        FFrameGroup group = new FFrameGroup();
+        group.setFrameFactory(this);
+        return group;
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getRegisterName() {
+        return FFrameGroup.PERSISTENCE_DEFINITION_NAME;
+    }
+
+    /**
+     * Returns the name of IFFrame.
+     * 
+     * @return Name of IFFrame.
+     */
+    public String getNameType() {
+        return PluginServices.getText(this, "FFrameGroup");
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/MapProperties.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/MapProperties.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/MapProperties.java	(revision 590)
@@ -0,0 +1,724 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui;
+
+import java.awt.FlowLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionListener;
+
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+
+/**
+ * Dialogo con la informaci�n de los mapas
+ * 
+ * @author Fernando Gonz�lez Cort�s
+ */
+public class MapProperties extends JPanel implements IWindow {
+
+    private static final long serialVersionUID = 2354472110990301841L;
+    private javax.swing.JPanel jContentPane = null; // @jve:decl-index=0:visual-constraint="14,17"
+    private javax.swing.JLabel jLabel = null;
+    private javax.swing.JTextField txtName = null;
+    private javax.swing.JLabel jLabel1 = null;
+    private javax.swing.JTextField txtDate = null;
+    private javax.swing.JLabel jLabel2 = null;
+    private javax.swing.JTextField txtOwner = null;
+    private javax.swing.JLabel jLabel3 = null;
+    private javax.swing.JScrollPane jScrollPane = null;
+    private javax.swing.JTextArea txtComments = null;
+    private javax.swing.JLabel jLabel4 = null;
+    private javax.swing.JTextField txtHorizontal = null;
+    private javax.swing.JLabel jLabel5 = null;
+    private javax.swing.JTextField txtVertical = null;
+    private javax.swing.JCheckBox chkActiveGrid = null;
+    private LayoutDocument map;
+    private javax.swing.JPanel jPanel = null;
+    private javax.swing.JPanel jPanel1 = null;
+    private javax.swing.JPanel jPanel2 = null;
+    private javax.swing.JPanel jPanel3 = null;
+    private javax.swing.JPanel jPanel4 = null;
+    private javax.swing.JLabel jLabel7 = null;
+    private javax.swing.JLabel jLabel8 = null;
+    private javax.swing.JCheckBox activeRuler = null;
+    private javax.swing.JPanel jPanel5 = null;
+    private JCheckBox showGrid = null;
+    private JCheckBox chbEditable = null;
+    private AcceptCancelPanel accept;
+    private boolean isAccepted = false;
+    private JPanel jPanel6 = null;
+    private JLabel jLabel6 = null;
+    private JLabel jLabel9 = null;
+
+    /**
+     * This method initializes
+     * 
+     */
+    public MapProperties() {
+        super();
+        initialize();
+    }
+
+    /**
+     * This is the default constructor
+     * 
+     * @param f
+     *            frame padre del dialogo
+     * @param m
+     *            mapa cuya informaci�n se presenta
+     */
+    public MapProperties(LayoutDocument m) {
+        map = m;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setSize(425, 428);
+        this.setPreferredSize(new java.awt.Dimension(410, 400));
+        this.add(getJContentPane(), null);
+        getTxtName().setText(map.getName());
+        getTxtDate().setText(map.getCreationDate());
+        getTxtOwner().setText(map.getOwner());
+        getTxtComments().setText(map.getComment());
+
+        jLabel9.setText(map.getLayoutContext().getAttributes().getNameUnit());
+        jLabel6.setText(map.getLayoutContext().getAttributes().getNameUnit());
+
+        getTxtHorizontal().setText(
+            Double.toString(map.getLayoutContext().getAttributes()
+                .getHGridGapCm()));
+        getTxtVertical().setText(
+            Double.toString(map.getLayoutContext().getAttributes()
+                .getVGridGapCm()));
+
+        getChkActiveGrid().setSelected(
+            map.getLayoutContext().isAdjustingToGrid());
+        // map.getModel().setProjectMap(map);
+    }
+
+    /**
+     * This method initializes jContentPane
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJContentPane() {
+        if (jContentPane == null) {
+            jContentPane = new javax.swing.JPanel();
+
+            java.awt.FlowLayout layFlowLayout10 = new java.awt.FlowLayout();
+            layFlowLayout10.setHgap(0);
+            jContentPane.setLayout(layFlowLayout10);
+            jContentPane.add(getJPanel(), null);
+            jContentPane.add(getJPanel1(), null);
+            jContentPane.add(getJPanel2(), null);
+            jContentPane.add(getJPanel3(), null);
+            jContentPane.setPreferredSize(new java.awt.Dimension(400, 410));
+            jContentPane.setSize(new java.awt.Dimension(308, 375));
+            jContentPane.add(getJPanel6(), null);
+            jContentPane.add(getJPanel5(), null);
+            jContentPane.add(getJPanel4(), null);
+            jContentPane.add(getAcceptCancelPanel(), null);
+        }
+
+        return jContentPane;
+    }
+
+    /**
+     * This method initializes jLabel
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel() {
+        if (jLabel == null) {
+            jLabel = new javax.swing.JLabel();
+            jLabel.setText(PluginServices.getText(this, "nombre") + ":");
+            jLabel.setPreferredSize(new java.awt.Dimension(180, 20));
+            jLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+        }
+
+        return jLabel;
+    }
+
+    /**
+     * This method initializes txtName
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTxtName() {
+        if (txtName == null) {
+            txtName = new javax.swing.JTextField();
+            txtName.setPreferredSize(new java.awt.Dimension(190, 20));
+        }
+
+        return txtName;
+    }
+
+    /**
+     * This method initializes jLabel1
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel1() {
+        if (jLabel1 == null) {
+            jLabel1 = new javax.swing.JLabel();
+            jLabel1
+                .setText(PluginServices.getText(this, "creation_date") + ":");
+            jLabel1.setPreferredSize(new java.awt.Dimension(180, 20));
+            jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+        }
+
+        return jLabel1;
+    }
+
+    /**
+     * This method initializes txtDate
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTxtDate() {
+        if (txtDate == null) {
+            txtDate = new javax.swing.JTextField();
+            txtDate.setPreferredSize(new java.awt.Dimension(190, 20));
+            txtDate.setEditable(false);
+            txtDate.setBackground(java.awt.Color.white);
+        }
+
+        return txtDate;
+    }
+
+    /**
+     * This method initializes jLabel2
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel2() {
+        if (jLabel2 == null) {
+            jLabel2 = new javax.swing.JLabel();
+            jLabel2.setText(PluginServices.getText(this, "owner") + ":");
+            jLabel2.setPreferredSize(new java.awt.Dimension(180, 20));
+            jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+        }
+
+        return jLabel2;
+    }
+
+    /**
+     * This method initializes txtOwner
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTxtOwner() {
+        if (txtOwner == null) {
+            txtOwner = new javax.swing.JTextField();
+            txtOwner.setPreferredSize(new java.awt.Dimension(190, 20));
+        }
+
+        return txtOwner;
+    }
+
+    /**
+     * This method initializes jLabel3
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel3() {
+        if (jLabel3 == null) {
+            jLabel3 = new javax.swing.JLabel();
+            jLabel3.setText(PluginServices.getText(this, "comentarios") + ":");
+            jLabel3
+                .setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);
+            jLabel3.setVerticalAlignment(javax.swing.SwingConstants.TOP);
+            jLabel3.setPreferredSize(new java.awt.Dimension(180, 20));
+            jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+        }
+
+        return jLabel3;
+    }
+
+    /**
+     * This method initializes jScrollPane
+     * 
+     * @return javax.swing.JScrollPane
+     */
+    private javax.swing.JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new javax.swing.JScrollPane();
+            jScrollPane.setPreferredSize(new java.awt.Dimension(190, 50));
+            jScrollPane.setViewportView(getTxtComments());
+        }
+
+        return jScrollPane;
+    }
+
+    /**
+     * This method initializes txtComments
+     * 
+     * @return javax.swing.JTextArea
+     */
+    private javax.swing.JTextArea getTxtComments() {
+        if (txtComments == null) {
+            txtComments = new javax.swing.JTextArea();
+        }
+
+        return txtComments;
+    }
+
+    /**
+     * This method initializes jLabel4
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel4() {
+        if (jLabel4 == null) {
+            jLabel4 = new javax.swing.JLabel();
+            jLabel4.setText(PluginServices
+                .getText(this, "espaciado_horizontal") + ":");
+            jLabel4.setPreferredSize(new java.awt.Dimension(130, 16));
+        }
+
+        return jLabel4;
+    }
+
+    /**
+     * This method initializes txtHorizontal
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTxtHorizontal() {
+        if (txtHorizontal == null) {
+            txtHorizontal = new javax.swing.JTextField();
+            txtHorizontal.setPreferredSize(new java.awt.Dimension(30, 20));
+            txtHorizontal.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+        }
+
+        return txtHorizontal;
+    }
+
+    /**
+     * This method initializes jLabel5
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel5() {
+        if (jLabel5 == null) {
+            jLabel5 = new javax.swing.JLabel();
+            jLabel5.setText(PluginServices.getText(this, "espaciado_vertical")
+                + ":");
+            jLabel5.setPreferredSize(new java.awt.Dimension(130, 16));
+        }
+
+        return jLabel5;
+    }
+
+    /**
+     * This method initializes txtVertical
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTxtVertical() {
+        if (txtVertical == null) {
+            txtVertical = new javax.swing.JTextField();
+            txtVertical.setPreferredSize(new java.awt.Dimension(30, 20));
+            txtVertical.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+        }
+
+        return txtVertical;
+    }
+
+    /**
+     * This method initializes chkMalla
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChkActiveGrid() {
+        if (chkActiveGrid == null) {
+            chkActiveGrid = new javax.swing.JCheckBox();
+            chkActiveGrid.setText(PluginServices
+                .getText(this, "malla_activada"));
+            chkActiveGrid.setSelected(true);
+            chkActiveGrid.setPreferredSize(new java.awt.Dimension(190, 24));
+            chkActiveGrid
+                .setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);
+            chkActiveGrid
+                .setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
+            chkActiveGrid
+                .addActionListener(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        // /map.getModel().setIsCuadricula(chkMalla.isSelected());
+                    }
+                });
+        }
+
+        return chkActiveGrid;
+    }
+
+    /**
+     * This method initializes jPanel
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel() {
+        if (jPanel == null) {
+            FlowLayout flowLayout2 = new FlowLayout();
+            flowLayout2.setHgap(4);
+            flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);
+            GridLayout gridLayout = new GridLayout();
+            gridLayout.setRows(4);
+            jPanel = new javax.swing.JPanel();
+
+            jPanel.setLayout(flowLayout2);
+            jPanel.setPreferredSize(new java.awt.Dimension(190, 150));
+            jPanel.add(getJLabel(), null);
+            jPanel.add(getJLabel1(), null);
+            jPanel.add(getJLabel2(), null);
+            jPanel.add(getJLabel3(), null);
+        }
+
+        return jPanel;
+    }
+
+    /**
+     * This method initializes jPanel1
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel1() {
+        if (jPanel1 == null) {
+            jPanel1 = new javax.swing.JPanel();
+
+            java.awt.FlowLayout layFlowLayout12 = new java.awt.FlowLayout();
+            layFlowLayout12.setAlignment(java.awt.FlowLayout.LEFT);
+            jPanel1.setLayout(layFlowLayout12);
+            jPanel1.add(getTxtName(), null);
+            jPanel1.add(getTxtDate(), null);
+            jPanel1.add(getTxtOwner(), null);
+            jPanel1.setPreferredSize(new java.awt.Dimension(200, 150));
+            jPanel1.add(getJScrollPane(), null);
+        }
+
+        return jPanel1;
+    }
+
+    /**
+     * This method initializes jPanel2
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel2() {
+        if (jPanel2 == null) {
+            GridLayout gridLayout4 = new GridLayout();
+            gridLayout4.setRows(2);
+            jPanel2 = new javax.swing.JPanel();
+
+            jPanel2.setLayout(gridLayout4);
+            jPanel2.setPreferredSize(new java.awt.Dimension(220, 50));
+            jPanel2.add(getJLabel4(), null);
+            jPanel2.add(getJLabel5(), null);
+        }
+
+        return jPanel2;
+    }
+
+    /**
+     * This method initializes jPanel3
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel3() {
+        if (jPanel3 == null) {
+            GridLayout gridLayout3 = new GridLayout();
+            gridLayout3.setRows(2);
+            GridLayout gridLayout2 = new GridLayout();
+            gridLayout2.setRows(2);
+            GridLayout gridLayout1 = new GridLayout();
+            gridLayout1.setRows(2);
+            jPanel3 = new javax.swing.JPanel();
+
+            jPanel3.setLayout(gridLayout3);
+            jPanel3.setPreferredSize(new java.awt.Dimension(40, 50));
+            jPanel3.add(getTxtHorizontal(), null);
+            jPanel3.add(getTxtVertical(), null);
+        }
+
+        return jPanel3;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this, "propiedades_mapa"));
+        return m_viewinfo;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes jPanel4
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel4() {
+        if (jPanel4 == null) {
+            FlowLayout flowLayout = new FlowLayout();
+            flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
+            jPanel4 = new javax.swing.JPanel();
+            jPanel4.setLayout(flowLayout);
+            jPanel4.setPreferredSize(new java.awt.Dimension(390, 24));
+            jPanel4.add(getJLabel7(), null);
+            jPanel4.add(getJLabel8(), null);
+        }
+        return jPanel4;
+    }
+
+    /**
+     * This method initializes jLabel7
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel7() {
+        if (jLabel7 == null) {
+            jLabel7 = new javax.swing.JLabel();
+            jLabel7.setText(PluginServices.getText(this, "map_units") + ": ");
+        }
+        return jLabel7;
+    }
+
+    /**
+     * This method initializes jLabel8
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getJLabel8() {
+        if (jLabel8 == null) {
+            jLabel8 = new javax.swing.JLabel();
+            jLabel8.setText(PluginServices.getText(this, map.getLayoutContext()
+                .getAttributes().getNameUnit()));
+        }
+        return jLabel8;
+    }
+
+    /**
+     * This method initializes jCheckBox
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbActiveRuler() {
+        if (activeRuler == null) {
+            activeRuler = new javax.swing.JCheckBox();
+            activeRuler.setText(PluginServices.getText(this, "activar_regla"));
+            activeRuler.setPreferredSize(new java.awt.Dimension(190, 24));
+            activeRuler.setSelected(map.getLayoutContext().getRuler());
+            activeRuler.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    // map.getModel().setRuler(jCheckBox.isSelected());
+                }
+            });
+        }
+        return activeRuler;
+    }
+
+    /**
+     * This method initializes jPanel5
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getJPanel5() {
+        if (jPanel5 == null) {
+            FlowLayout flowLayout1 = new FlowLayout();
+            flowLayout1.setAlignment(java.awt.FlowLayout.LEFT);
+            jPanel5 = new javax.swing.JPanel();
+            jPanel5.setLayout(flowLayout1);
+            jPanel5.setPreferredSize(new java.awt.Dimension(390, 120));
+            jPanel5.add(getChkActiveGrid(), null);
+            jPanel5.add(getChbActiveRuler(), null);
+            jPanel5.add(getChbShowGrid(), null);
+            jPanel5.add(getChbEditable(), null);
+        }
+        return jPanel5;
+    }
+
+    /**
+     * This method initializes jCheckBox1
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbShowGrid() {
+        if (showGrid == null) {
+            showGrid = new JCheckBox();
+            showGrid.setSelected(map.getLayoutContext().isGridVisible());
+            showGrid.setPreferredSize(new java.awt.Dimension(190, 24));
+            showGrid.setText(PluginServices.getText(this,
+                "visualizar_cuadricula"));
+            showGrid.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+
+                }
+            });
+        }
+        return showGrid;
+    }
+
+    /**
+     * @see org.gvsig.andami.ui.mdiManager.SingletonWindow#getWindowModel()
+     */
+    public Object getViewModel() {
+        return map;
+    }
+
+    /**
+     * This method initializes chbEditable
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private JCheckBox getChbEditable() {
+        if (chbEditable == null) {
+            chbEditable = new JCheckBox();
+            chbEditable.setSelected(map.getLayoutContext().isEditable());
+            chbEditable.setPreferredSize(new java.awt.Dimension(190, 24));
+            chbEditable.setText(PluginServices.getText(this, "editable"));
+        }
+        return chbEditable;
+    }
+
+    private AcceptCancelPanel getAcceptCancelPanel() {
+        if (accept == null) {
+            ActionListener okAction, cancelAction;
+            okAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    map.setName(txtName.getText());
+                    map.setOwner(txtOwner.getText());
+                    map.setComment(txtComments.getText());
+                    map.getLayoutContext().setAdjustToGrid(
+                        chkActiveGrid.isSelected());
+                    map.getLayoutContext()
+                        .setGridVisible(showGrid.isSelected());
+                    map.getLayoutContext().setRuler(activeRuler.isSelected());
+                    map.getLayoutContext()
+                        .setEditable(chbEditable.isSelected());
+                    try {
+                        String sh = txtHorizontal.getText();
+                        sh = sh.replace(',', '.');
+                        if (sh.length() != 0) {
+                            double f = new Double(sh).doubleValue();
+                            map.getLayoutContext().getAttributes()
+                                .setHGridGrapCm(f);
+                        }
+
+                        String sv = txtVertical.getText();
+                        sv = sv.replace(',', '.');
+                        if (sv.length() != 0) {
+                            double f = new Double(sv).doubleValue();
+                            map.getLayoutContext().getAttributes()
+                                .setVGridGrapCm(f);
+                        }
+
+                        PluginServices.getMDIManager().closeWindow(
+                            MapProperties.this);
+                        map.getLayoutContext().setGridVisible(
+                            getChbShowGrid().isSelected());
+                        IWindow win =
+                            PluginServices.getMDIManager().getActiveWindow();
+                        if (win instanceof LayoutPanel) {
+                            ((LayoutPanel) win).getLayoutControl().refresh();
+                        }
+                        PluginServices.getMainFrame().enableControls();
+                    } catch (NumberFormatException ex) {
+                        NotificationManager.addInfo("no es un double", ex);
+                    }
+                    isAccepted = true;
+                }
+            };
+            cancelAction = new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    isAccepted = false;
+                    PluginServices.getMDIManager().closeWindow(
+                        MapProperties.this);
+                }
+            };
+            accept = new AcceptCancelPanel(okAction, cancelAction);
+            accept.setPreferredSize(new java.awt.Dimension(300, 34));
+        }
+        return accept;
+    }
+
+    public boolean isAccepted() {
+        return isAccepted;
+    }
+
+    /**
+     * This method initializes jPanel6
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getJPanel6() {
+        if (jPanel6 == null) {
+            jLabel9 = new JLabel();
+            jLabel9.setPreferredSize(new java.awt.Dimension(130, 20));
+            jLabel9
+                .setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);
+            jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+            jLabel9.setText("");
+            GridLayout gridLayout5 = new GridLayout();
+            gridLayout5.setRows(2);
+            gridLayout5.setColumns(1);
+            jLabel6 = new JLabel();
+            jLabel6.setPreferredSize(new java.awt.Dimension(130, 20));
+            jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+            jLabel6.setText("");
+            jPanel6 = new JPanel();
+            jPanel6.setPreferredSize(new java.awt.Dimension(130, 50));
+            jPanel6.setLayout(gridLayout5);
+            jPanel6.add(jLabel9, null);
+            jPanel6.add(jLabel6, null);
+        }
+        return jPanel6;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+} // @jve:visual-info decl-index=0 visual-constraint="10,10"
+
+// @jve:visual-info decl-index=0 visual-constraint="10,10"
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanel.java	(revision 590)
@@ -0,0 +1,149 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui;
+
+import java.awt.Graphics2D;
+import java.awt.print.PrinterJob;
+
+import java.io.File;
+import javax.swing.JPanel;
+
+import org.gvsig.app.project.documents.gui.IDocumentWindow;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutControl;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public abstract class LayoutPanel extends JPanel implements IDocumentWindow,
+    Observer, Persistent {
+
+    private static final long serialVersionUID = 5961147362842287273L;
+
+    /**
+     * Returns the LayoutContext.
+     * 
+     * @return LayoutContext.
+     */
+    public abstract LayoutContext getLayoutContext();
+
+    /**
+     * Returns LayoutControl.
+     * 
+     * @return LayoutControl.
+     */
+    public abstract LayoutControl getLayoutControl();
+
+    /**
+     * @return Returns the bShowIconTag.
+     */
+    public abstract boolean isShowIconTag();
+
+    /**
+     * @param modeDebug
+     *            The bModeDebug to set.
+     */
+    public abstract void setShowIconTag(boolean modeDebug);
+
+    /**
+     * It opens a dialog to select pdf file where to save the Layout in this
+     * format.
+     */
+    public abstract void layoutToPDF();
+
+    /**
+     * Opens a dialog where to pick a PDF-file to save the current Layout
+     * suggesting a name for the file given by the first argument
+     * 
+     * @param suggestedName
+     */
+    public abstract void layoutToPDF(String suggestedName);
+
+    public abstract void layoutToPDF(File file);
+    /**
+     * It opens a dialog to select ps file where to save the Layout in this
+     * format.
+     */
+    public abstract void layoutToPS();
+
+    /**
+     * Opens a dialog where to pick a PS-file to save the current Layout
+     * suggesting a name for the file given by the first argument
+     * 
+     * @param suggestedName
+     */
+    public abstract void layoutToPS(String suggestedName);
+
+    /**
+     * The dialogs are created here each time that are needed.
+     * 
+     * @param fframe
+     *            Rectangle that represents the place that occupied the element
+     *            added.
+     * 
+     * @return IFFrame Returns the FFrame added or null if the fframe has not
+     *         been added.
+     */
+    public abstract IFFrameDialog createFFrameDialog(IFFrame fframe);
+
+    /**
+     * It obtains the rect�ngulo that represents the sheet with the
+     * characteristics
+     * that contains attributes and differentiating if is to visualize in screen
+     * or
+     * for print.
+     * 
+     */
+    public abstract void obtainRect(boolean isPrint);
+
+    /**
+     * It shows the dialog of configuration of the Layout.
+     */
+    public abstract void showFConfig();
+
+    /**
+     * It shows the dialog of Layout�s properties.
+     */
+    public abstract boolean showFProperties();
+
+    /**
+     * It shows the dialog of printing of the Layout.
+     * 
+     * @param job
+     *            PrinterJob
+     */
+    public abstract void showPrintDialog(PrinterJob job);
+
+    public abstract void setLayoutManager(LayoutManager layoutManager);
+    
+    public abstract void drawLayoutPrint(Graphics2D g2);
+	
+	public abstract void hideToc();
+
+	public abstract void showToc();
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/FPopupMenu.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/FPopupMenu.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/FPopupMenu.java	(revision 590)
@@ -0,0 +1,129 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui;
+
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.view.IContextMenuAction;
+
+/**
+ * Menu de bot�n derecho para el Layout.
+ * Se pueden a�adir entradas facilmente desde una extensi�n,
+ * creando una clase derivando de LayoutMenuEntry, y a�adiendola en
+ * est�tico (o en tiempo de carga de la extensi�n) a FPopupMenu.
+ * (Las entradas actuales est�n hechas de esa manera).
+ * 
+ * @author Vicente Caballero Navarro
+ * 
+ */
+
+public class FPopupMenu extends JPopupMenu {
+
+    /**
+	 *
+	 */
+    private static final long serialVersionUID = 5340224239252101704L;
+    // private static ArrayList menuEntrys = new ArrayList();
+    protected LayoutPanel layout;
+    private IFFrame[] selecteds;
+   
+    // private JMenuItem capa;
+    // Lo de fijar la fuente es porque en linux se ve�a mal si no se fija.
+    // TODO: Esto no funcionar� para idiomas como el chino. Hay que cambiarlo.
+    public final static Font theFont = new Font("SansSerif", Font.PLAIN, 10);
+
+
+    /**
+     * Creates a new FPopupMenu object.
+     * 
+     * @param nodo
+     *            DOCUMENT ME!
+     * @param vista
+     *            DOCUMENT ME!
+     */
+    public FPopupMenu(LayoutPanel layout) {
+        super();
+        this.initialize(layout);
+    }
+
+    private void initialize(LayoutPanel layout) {
+        this.layout = layout;
+        this.selecteds = this.layout.getLayoutContext().getSelectedFFrames();
+        LayoutManager layoutManager =
+            (LayoutManager) ProjectManager.getInstance()
+                .getDocumentManager("project.document.layout");
+        
+        IContextMenuAction[] actions = layoutManager.createLayoutMenuActions(layout);
+        this.createMenuElements(actions);
+    }
+  
+
+    private void createMenuElements(IContextMenuAction[] actions) {
+        String group = null;
+        for (int i = 0; i < actions.length; i++) {
+            IContextMenuAction action = actions[i];
+            MenuItem item = new MenuItem(action.getText(), action);
+            item.setFont(theFont);
+            item.setEnabled(action.isEnabled(null, this.selecteds));
+            if (!action.getGroup().equals(group)) {
+                if (group != null) {
+                    this.addSeparator();
+                }
+                group = action.getGroup();
+            }
+            this.add(item);
+        }
+
+    }
+
+    public class MenuItem extends JMenuItem implements ActionListener {
+
+        /**
+		 *
+		 */
+        private static final long serialVersionUID = 2518112362194914446L;
+        private IContextMenuAction action;
+
+        public MenuItem(String text, IContextMenuAction documentAction) {
+            super(text);
+            this.action = documentAction;
+            String tip = this.action.getDescription();
+            if (tip != null && tip.length() > 0) {
+                this.setToolTipText(tip);
+            }
+            this.addActionListener(this);
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            this.action.execute(layout.getLayoutContext(),
+                FPopupMenu.this.selecteds);
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanelImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanelImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/LayoutPanelImpl.java	(revision 590)
@@ -0,0 +1,67 @@
+package org.gvsig.app.project.documents.layout.gui;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.gui.preferencespage.PreferenceKeys;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FConfigLayoutDialog;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
+import org.gvsig.utils.XMLEntity;
+
+/**
+ * Layout document window. This class contain the specific behaviour of the layout window
+ * that is not suitable for other documents extending LayoutDocument (such as the
+ * mapsheets plugin).
+ * 
+ * If you need to extend a generic layout window in your document, extend
+ * LayoutPanel or DefauLayoutPanel instead of this class.
+ *
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public class LayoutPanelImpl extends DefaultLayoutPanel {
+    protected boolean isInitConfigDialogEnabled() {
+    	XMLEntity entity = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+    	if (entity.contains(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME)) {
+    		return entity.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME);
+    	}
+    	else {
+    		return PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT;
+    	}
+    }
+
+    
+    protected void onInitialConfigCanceled() {
+    	if (layoutDocument!=null) {
+    		ApplicationLocator.getManager().getUIManager().closeWindow(this);
+    		ApplicationLocator.getProjectManager().getCurrentProject().removeDocument(layoutDocument);
+    	}
+    }
+	
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void windowActivated() {
+		if (getLayoutContext()!=null && !getLayoutContext().hasDocBeenOpened()) {
+			getLayoutContext().setHasDocBeenOpened(true);
+            if (isInitConfigDialogEnabled()) {
+            	FConfigLayoutDialog configDialog = new FConfigLayoutDialog(this, true);
+                ToolsSwingLocator.getWindowManager().showWindow(configDialog,
+                		configDialog.getWindowInfo().getTitle(), WindowManager.MODE.TOOL);
+            	configDialog.addCancelButtonActionListener(new ActionListener() {
+
+					public void actionPerformed(ActionEvent e) {
+						LayoutPanelImpl.this.onInitialConfigCanceled();
+					}
+            		
+            	});
+            }
+            
+    	}
+		super.windowActivated();
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/DefaultLayoutPanel.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/DefaultLayoutPanel.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/DefaultLayoutPanel.java	(revision 590)
@@ -0,0 +1,650 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Graphics2D;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+
+import javax.print.Doc;
+import javax.print.DocFlavor;
+import javax.print.DocPrintJob;
+import javax.print.PrintException;
+import javax.print.PrintService;
+import javax.print.PrintServiceLookup;
+import javax.print.ServiceUI;
+import javax.print.SimpleDoc;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.event.PrintJobAdapter;
+import javax.print.event.PrintJobEvent;
+import javax.print.event.PrintJobListener;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+import javax.swing.filechooser.FileFilter;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.IWindowListener;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.gui.preferencespage.PreferenceKeys;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.gui.WindowLayout;
+import org.gvsig.app.project.documents.layout.DefaultLayoutControl;
+import org.gvsig.app.project.documents.layout.DefaultLayoutDocument;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutControl;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.TocModelChangedNotification;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.fframes.LayoutPanelListener;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FConfigLayoutDialog;
+import org.gvsig.app.project.documents.layout.toc.TocModelObserver;
+import org.gvsig.app.project.documents.view.toc.gui.TOC;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.events.ColorEvent;
+import org.gvsig.gui.beans.swing.JFileChooser;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
+import org.gvsig.utils.GenericFileFilter;
+import org.gvsig.utils.XMLEntity;
+
+/**
+ * Layout document window 
+ * 
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class DefaultLayoutPanel extends LayoutPanel {
+
+    private static final long serialVersionUID = 916830228032567624L;
+
+    private static final int DEFAULT_HEIGHT = 450;
+
+    private static final int DEFAULT_WIDTH = 700;
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "LayoutPanel";
+    private static final String LAYOUTCONTEXT_OBJECT = "LayoutContext";
+    private static final String LAYOUTDOCUMENT_OBJECT = "LayoutDocument";
+
+    public static final String PDF_AND_PS_FILECHOOSER =
+        "PDF_AND_PS_FILECHOOSER";
+
+    public static File defaultPDFFolderPath;
+
+    private MapProperties m_propertiesLayout = null;
+    private PrintService[] m_cachePrintServices = null;
+    private PrintService m_cachePrintService = null;
+    protected LayoutDocument layoutDocument = null;
+    private Doc doc = null;
+    private PrintRequestAttributeSet att = null;
+    private WindowInfo m_viewInfo = null;
+    /**
+     * We use it when we are doing a layout and assigning tags.
+     * It is put in debug when we do a VIEW_TAGS
+     */
+    private boolean bShowIconTag = false;
+    private LayoutControl layoutControl = null;
+    private LayoutContext layoutContext = null;
+    private LayoutManager layoutManager = null;
+	private JPanel leftPanel;
+	private TOC toc = null;
+
+	private JSplitPane splitPane;
+	private int lastPanePos = 150;
+
+	private Boolean b_isTocEnabled = null;
+
+    /**
+     * Creates a new Layout object.
+     */
+    public DefaultLayoutPanel() {
+        DefaultLayoutControl defaultLayoutControl = new DefaultLayoutControl();
+        this.layoutControl = defaultLayoutControl;
+        defaultLayoutControl.initialize(this);       
+        this.initComponents();
+    }
+
+    public void setDocument(Document document) {
+        layoutDocument = (LayoutDocument) document;
+        setLayoutContext(layoutDocument.getLayoutContext());
+        this.setName(document.getName());
+        layoutDocument.addPropertyChangeListener(new PropertyChangeListener() {
+
+            public void propertyChange(PropertyChangeEvent evt) {
+                if (evt.getPropertyName().equals("name")) {
+                    PluginServices
+                        .getMDIManager()
+                        .getWindowInfo(DefaultLayoutPanel.this)
+                        .setTitle(
+                            PluginServices.getText(this, "Mapa") + " : "
+                                + (String) evt.getNewValue());
+                }
+            }
+        });
+        
+        setToc();
+    }
+  
+    /**
+     * It initializes the components.
+     */
+    private void initComponents() {
+    	this.setLayout(new BorderLayout());
+    	if (isTocEnabled()) {
+    		leftPanel = new JPanel(new BorderLayout());
+    		splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
+    				leftPanel, layoutControl.getComponent());
+    		splitPane.setResizeWeight(0.2);
+    		splitPane.setOneTouchExpandable(true);
+    		splitPane.setContinuousLayout(true);
+    		setToc();
+    		add(splitPane, BorderLayout.CENTER);
+    	}
+    	else {
+    		add(layoutControl.getComponent(), BorderLayout.CENTER);
+    	}
+        layoutControl.getComponent().setDoubleBuffered(true);
+    }
+    
+    private boolean isTocEnabled() {
+    	if (b_isTocEnabled==null) {
+    		XMLEntity entity = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+    		if (entity.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME)) {
+    			b_isTocEnabled = entity.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_TOC_KEY_NAME);
+    		}
+    		else {
+    			b_isTocEnabled = PreferenceKeys.FACTORY_DEFAULT_SHOW_LAYOUT_TOC;
+    		}
+    	}
+    	return b_isTocEnabled;
+    }
+    
+    protected void createToc() {
+		if (toc==null) {
+			toc = new TOC();
+		}
+		toc.setMapContext(getLayoutContext().getTocModel());
+		leftPanel.removeAll();
+		leftPanel.add(toc);
+    }
+    
+    protected void setToc() {
+    	if (isTocEnabled()) {
+    		if (getLayoutContext()!=null) {
+    			if (getLayoutContext().getTocModel()!=null) {
+    				createToc();
+    			}
+    			else if (toc!=null) {
+    				DefaultLayoutPanel.this.leftPanel.remove(toc);
+    			}
+
+    			this.getLayoutContext().addTocObserver(new TocModelObserver() {
+
+    				public void tocUpdated(Object observable,
+    						TocModelChangedNotification notification) {
+    					if (TocModelChangedNotification.Type.ITEM_UPDATED==notification.getType()) {
+    						if (DefaultLayoutPanel.this.toc!=null){
+    							DefaultLayoutPanel.this.toc.repaint();
+    						}
+    					}
+    					else if (TocModelChangedNotification.Type.MODEL_CHANGED==notification.getType()) {
+    						if (DefaultLayoutPanel.this.toc!=null){
+    							DefaultLayoutPanel.this.toc.refresh();
+    						}
+    					}
+    					else if (TocModelChangedNotification.Type.MODEL_SET==notification.getType()) {
+    						MapContext mapContext = notification.getModel();
+    						if (mapContext!=null) {
+    							createToc();
+    						}
+    						else if (DefaultLayoutPanel.this.toc!=null){
+    							DefaultLayoutPanel.this.leftPanel.remove(DefaultLayoutPanel.this.toc);
+    							DefaultLayoutPanel.this.leftPanel.repaint();
+    						}
+    					}
+    				}
+    			});
+    		}
+    	}
+    }
+
+    /**
+     * Open the dialog of Layout properties.
+     * 
+     * @param job
+     *            PrinterJob
+     */
+    public void showPagePropertiesWindow(PrinterJob job) {
+        PageFormat pf1;
+
+        pf1 = layoutContext.getAttributes().getPageFormat();
+        pf1 = job.pageDialog(pf1);
+        layoutContext.getAttributes().setPageFormat(pf1);
+        layoutControl.refresh();
+    }
+
+    public void obtainRect(boolean isPrint) {
+    	Rectangle2D r = layoutControl.getRect(); 
+        layoutContext.getAttributes().obtainRect(isPrint,
+            r, getWidth(), getHeight());
+        layoutControl.setRect(r);
+    }
+    
+    public void showFConfig() {
+        FConfigLayoutDialog m_configLayout = new FConfigLayoutDialog(this);
+        ToolsSwingLocator.getWindowManager().showWindow(m_configLayout,
+        		m_configLayout.getWindowInfo().getTitle(), WindowManager.MODE.TOOL);
+    }
+
+    public boolean showFProperties() {
+        if (layoutDocument == null) {
+            layoutDocument = new DefaultLayoutDocument();
+            layoutDocument.setName(getName());
+        }
+
+        m_propertiesLayout = new MapProperties(layoutDocument);
+        PluginServices.getMDIManager().addWindow(m_propertiesLayout);
+        return m_propertiesLayout.isAccepted();
+    }
+
+    public void showPrintDialog(PrinterJob job) {
+        if (job != null) {
+            job.printDialog();
+
+            try {
+                job.setPrintable((Printable) PluginServices
+                    .getExtension(org.gvsig.app.extension.Print.class));
+                job.print();
+            } catch (PrinterException e) {
+                e.printStackTrace();
+            }
+        } else {
+            // Actualizar attributes
+            att = layoutContext.getAttributes().toPrintRequestAttributeSet();
+
+            // ------------------ The Printing things --------------------- //
+            DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
+
+            // returns the set of printers that support printing a specific
+            // document type (such as GIF)
+            // with a specific set of attributes (such as two sided).
+            // PrintRequestAttributeSet pras = new
+            // HashPrintRequestAttributeSet();
+            // interestingly, the printer dialog's default behavior has changed
+            // with the new API: by default the dialog is not shown.
+            // So we must use the ServiceUI class to create a print dialog
+            // returns the default print service.
+            if (m_cachePrintServices == null) {
+                m_cachePrintServices =
+                    PrintServiceLookup.lookupPrintServices(flavor, null);
+            }
+
+            PrintService defaultService = null;
+
+            if (m_cachePrintService == null) {
+                defaultService = PrintServiceLookup.lookupDefaultPrintService();
+            }
+
+            if ((defaultService == null) && (m_cachePrintService == null)) {
+                JOptionPane.showMessageDialog((Component) PluginServices
+                    .getMainFrame(), PluginServices.getText(this,
+                    "ninguna_impresora_configurada"));
+
+                return;
+            }
+
+            if (m_cachePrintService == null) {
+                m_cachePrintService =
+                    ServiceUI.printDialog(null, 200, 200, m_cachePrintServices,
+                        defaultService, flavor, att);
+            } else {
+                m_cachePrintService =
+                    ServiceUI.printDialog(null, 200, 200, m_cachePrintServices,
+                        m_cachePrintService, flavor, att);
+            }
+
+            if (m_cachePrintService != null) {
+                DocPrintJob jobNuevo = m_cachePrintService.createPrintJob();
+                PrintJobListener pjlistener = new PrintJobAdapter() {
+
+                    public void printDataTransferCompleted(PrintJobEvent e) {
+                        // System.out.println("Fin de impresi�n");
+                        layoutControl.fullRect();
+                    }
+                };
+
+                jobNuevo.addPrintJobListener(pjlistener);
+
+                Printable pb = null;
+                Class repClass = null;
+                try {
+                     repClass = Class.forName(flavor.getRepresentationClassName());
+                } catch (Throwable e) {
+                    throw new IllegalArgumentException("unknown representation class");
+                }
+
+                Object printData = PluginServices.getExtension(org.gvsig.app.extension.Print.class);
+                
+                doc = new SimpleDoc(printData, flavor, null);
+
+                try {
+                    jobNuevo.print(doc, att);
+
+                } catch (PrintException pe) {
+                    NotificationManager.addError(pe);
+                }
+            }
+        }
+    }
+
+    public IFFrameDialog createFFrameDialog(IFFrame fframe) {
+        return layoutManager.createFFrameDialog(fframe, this);
+    }
+
+    /**
+     * This method is used to get <strong>an initial</strong> ViewInfo object
+     * for this Map. It is not intended to retrieve the ViewInfo object in a
+     * later time. <strong>Use PluginServices.getMDIManager().getViewInfo(view)
+     * to retrieve the ViewInfo object at any time after the creation of the
+     * object.
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        if (m_viewInfo == null) {
+            m_viewInfo =
+                new WindowInfo(WindowInfo.ICONIFIABLE | WindowInfo.RESIZABLE
+                    | WindowInfo.MAXIMIZABLE);
+            m_viewInfo.setWidth(DEFAULT_WIDTH);
+            m_viewInfo.setHeight(DEFAULT_HEIGHT);
+
+            m_viewInfo.setTitle(PluginServices.getText(this, "Mapa") + " : "
+                + layoutDocument.getName());
+        }
+        return m_viewInfo;
+    }
+
+    public LayoutContext getLayoutContext() {
+        return layoutContext;
+    }
+
+    public LayoutControl getLayoutControl() {
+        return layoutControl;
+    }
+    
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void windowActivated() {
+		if (layoutControl.getRect().getWidth()<=0) {
+			layoutControl.fullRect();
+		}
+		else {
+			layoutControl.refresh();
+		}
+        PluginServices
+            .getMainFrame()
+            .getStatusBar()
+            .setMessage(
+                "units",
+                PluginServices.getText(this, layoutContext.getAttributes()
+                    .getNameUnit()));
+        // ensure requestFocus is enabled
+        if (!layoutControl.getComponent().isRequestFocusEnabled()) {
+            layoutControl.getComponent().setRequestFocusEnabled(true);
+        }
+        // notify fframes
+    	IFFrame[] frames = layoutContext.getFFrames();
+    	for (int i=0; i<frames.length; i++) {
+    		if (frames[i] instanceof LayoutPanelListener) {
+    			((LayoutPanelListener)frames[i]).windowActivated();
+    		}
+    	}
+        requestFocus();
+        layoutControl.getComponent().requestFocus();
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.SingletonWindow#getWindowModel()
+     */
+    public Object getWindowModel() {
+        return layoutDocument;
+    }
+
+    public Document getDocument() {
+        return layoutDocument;
+    }
+
+    /**
+     * @see org.gvsig.andami.ui.mdiManager.IWindowListener#windowClosed()
+     */
+    public void windowClosed() {
+    	IFFrame[] frames = layoutContext.getFFrames();
+    	for (int i=0; i<frames.length; i++) {
+    		if (frames[i] instanceof LayoutPanelListener) {
+    			((LayoutPanelListener)frames[i]).windowClosed();
+    		}
+    	}
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener#backColorChanged(org.gvsig.fmap.mapcontext.events.ColorEvent)
+     */
+    public void backColorChanged(ColorEvent e) {
+        // refresh();
+    }
+
+    public void layoutToPDF(File file) {
+        layoutControl.getLayoutDraw().toPDF(file);
+    }
+    
+    public void layoutToPDF(String suggestedName) {
+        FileFilter pdfFilter =
+            new GenericFileFilter("pdf", PluginServices.getText(this, "pdf"));
+
+        JFileChooser jfc =
+            new JFileChooser(PDF_AND_PS_FILECHOOSER, defaultPDFFolderPath);
+        if (suggestedName != null) {
+            jfc.setSelectedFile(new File(suggestedName));
+        }
+        jfc.addChoosableFileFilter(pdfFilter);
+        jfc.setFileFilter(pdfFilter);
+
+        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+            File f = jfc.getSelectedFile();
+            File faux = null;
+
+            if (f.getName().endsWith(".pdf") || f.getName().endsWith(".PDF")) {
+                faux = f;
+            } else {
+                faux = new File(f.getPath() + ".pdf");
+            }
+            this.layoutToPDF(faux);
+        }
+    }
+
+    public void layoutToPS(String suggestedName) {
+        FileFilter pdfFilter =
+            new GenericFileFilter("ps", PluginServices.getText(this, "ps"));
+
+        JFileChooser jfc =
+            new JFileChooser(PDF_AND_PS_FILECHOOSER, defaultPDFFolderPath);
+        if (suggestedName != null) {
+            jfc.setSelectedFile(new File(suggestedName));
+        }
+        jfc.addChoosableFileFilter(pdfFilter);
+        jfc.setFileFilter(pdfFilter);
+
+        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+            File f = jfc.getSelectedFile();
+            File faux = null;
+
+            if (f.getName().endsWith(".ps") || f.getName().endsWith(".PS")) {
+                faux = f;
+            } else {
+                faux = new File(f.getPath() + ".ps");
+            }
+
+            layoutControl.getLayoutDraw().toPS(faux);
+        }
+    }
+
+    public void layoutToPDF() {
+        layoutToPDF((String)null);
+    }
+
+    public void layoutToPS() {
+        layoutToPS(null);
+    }
+
+    public boolean isShowIconTag() {
+        return bShowIconTag;
+    }
+
+    public void setShowIconTag(boolean modeDebug) {
+        bShowIconTag = modeDebug;
+    }
+
+    public void update(Observable observable, Object notification) {
+    	this.layoutContext.updateFFrames();
+    	this.layoutControl.refresh();
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.EDITOR_PROFILE;
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(LAYOUTCONTEXT_OBJECT, layoutContext);
+        state.set(LAYOUTDOCUMENT_OBJECT, layoutDocument);
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        this.layoutContext = (LayoutContext) state.get(LAYOUTCONTEXT_OBJECT);
+        this.setDocument((LayoutDocument) state.get(LAYOUTDOCUMENT_OBJECT));
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(DefaultLayoutPanel.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Layout panel persistence definition", null, null);
+
+            definition.addDynFieldObject(LAYOUTCONTEXT_OBJECT)
+                .setClassOfValue(LayoutContext.class).setMandatory(true);
+            definition.addDynFieldObject(LAYOUTDOCUMENT_OBJECT)
+                .setClassOfValue(LayoutDocument.class).setMandatory(true);
+        }
+    }
+
+    public WindowLayout getWindowLayout() {
+        return null;
+    }
+
+    public void setWindowLayout(WindowLayout layout) {
+
+    }
+
+    private void setLayoutContext(LayoutContext theLayoutcontext) {
+        this.layoutContext = theLayoutcontext;
+        this.layoutControl.setLayoutContext(theLayoutcontext);
+        layoutContext.getAttributes().calculateGridGapX(layoutControl.getRect());
+        layoutContext.getAttributes().calculateGridGapY(layoutControl.getRect());
+        layoutControl.setDefaultTool();
+    }
+
+    @Override
+    public void setLayoutManager(LayoutManager layoutManager) {
+        this.layoutManager = layoutManager;
+    }
+    
+    
+    /**
+     * Method to print the Layout without modify the Affinetransform.
+     *
+     * @param g2 Geaphics2D
+     */
+    public void drawLayoutPrint(Graphics2D g2) {
+        layoutControl.setCancelDrawing(false);
+
+        double scale = 0;
+        scale = layoutControl.getRect().height / layoutContext.getAttributes().getPaperSize().getHeight() * 1;
+        AffineTransform escalado = new AffineTransform();
+        AffineTransform translacion = new AffineTransform();
+        translacion.setToTranslation(layoutControl.getRect().getMinX(), layoutControl.getRect().getMinY());
+        escalado.setToScale(scale, scale);
+        layoutControl.getAT().setToIdentity();
+        layoutControl.getAT().concatenate(translacion);
+        layoutControl.getAT().concatenate(escalado);
+        layoutContext.getAttributes().calculateGridGapX(layoutControl.getRect());
+        layoutContext.getAttributes().calculateGridGapY(layoutControl.getRect());
+        IFFrame[] fframes=layoutContext.getFFrames();
+        
+        for (int i = 0; i < fframes.length; i++) {
+            fframes[i].print(
+                g2,
+                layoutControl.getAT(),
+                null,
+                layoutContext.getAttributes().toPrintAttributes());
+        }
+    }
+	
+	public void hideToc() {
+		if (isTocEnabled()) {
+			lastPanePos = splitPane.getDividerLocation();
+			splitPane.setDividerLocation(0);
+		}
+	}
+
+	public void showToc() {
+		if (isTocEnabled()) {
+			splitPane.setDividerLocation(lastPanePos);
+		}
+	}
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FBorderDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FBorderDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FBorderDialog.java	(revision 590)
@@ -0,0 +1,801 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import java.awt.Color;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JPanel;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.app.project.documents.layout.DefaultLayoutNotification;
+import org.gvsig.app.project.documents.layout.FLayoutGraphics;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.LayoutNotification;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameGraphicsDialog;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.RectangleAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Di�logo con todas las opciones para crear un borde a los fframes.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FBorderDialog extends JPanel implements IWindow, Observable {
+
+    private static final long serialVersionUID = 8890787517445911425L;
+    private javax.swing.JRadioButton rbSeleccionados = null;
+    private javax.swing.JRadioButton rbTodos = null;
+    private javax.swing.JRadioButton rbMargen = null;
+    private javax.swing.JCheckBox chbAgrupar = null;
+    private javax.swing.JPanel pPosicion = null;
+    private javax.swing.JCheckBox chbIgualLados = null;
+    private javax.swing.JLabel lunidades = null;
+    private javax.swing.JTextField tTodosLados = null;
+    private javax.swing.JLabel lSuperior = null;
+    private javax.swing.JLabel lInferior = null;
+    private javax.swing.JTextField tSuperior = null;
+    private javax.swing.JTextField tInferior = null;
+    private javax.swing.JLabel lIzquierda = null;
+    private javax.swing.JLabel lDerecha = null;
+    private javax.swing.JTextField tIzquierda = null;
+    private javax.swing.JTextField tDerecha = null;
+    private javax.swing.JLabel lUnidades = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private LayoutPanel layout = null;
+    private IFFrame[] selecList;// = new ArrayList();
+    private FFrameGraphics fframegraphics = null;
+    private FLayoutGraphics flg = null;
+    private String m_NameUnit = null;
+    private javax.swing.JButton bConfigurar = null;
+    private GeometryAdapter geometry = new RectangleAdapter();
+    private boolean isAccepted = false;
+    private ISymbol symbol;
+
+    private LayoutManager layoutManager = null;
+    private ObservableHelper observers;
+    
+    /**
+     * This is the default constructor
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public FBorderDialog(LayoutPanel layoutPanel) {
+        super();
+        layout = layoutPanel;
+        layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+        flg = new FLayoutGraphics(layout);
+
+        LayoutManager layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+        fframegraphics =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+
+        fframegraphics.setColor(Color.black);
+        fframegraphics.update(Geometry.TYPES.SURFACE, layout
+            .getLayoutControl().getAT());
+
+        initialize();
+        startFFrameGraphic();
+    }
+
+    private void startFFrameGraphic() {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        double x = Double.parseDouble(getTIzquierda().getText().toString());
+        double y = Double.parseDouble(getTSuperior().getText().toString());
+        double w = Double.parseDouble(getTDerecha().getText().toString());
+        double h = Double.parseDouble(getTInferior().getText().toString());
+
+        Rectangle2D re = new Rectangle2D.Double();
+
+        if (getRbSeleccionados().isSelected()) {
+            if (selecList.length > 0) {
+                re = getRectangle(selecList[0]);
+
+            }
+
+            for (int i = 1; i < selecList.length; i++) {
+                Rectangle2D rectaux = getRectangle(selecList[i]);
+                re.add(rectaux);
+            }
+
+            // crear un Rect�ngulo alrededor de los fframes seleccionados.
+        } else
+            if (getRbTodos().isSelected()) {
+                if (fframes.length > 0) {
+                    re = getRectangle(fframes[0]);
+                }
+
+                for (int i = 1; i < fframes.length; i++) {
+                    Rectangle2D rectaux = getRectangle(fframes[i]);
+                    re.add(rectaux);
+                }
+
+                // creaer un Rect�ngulo que incluya a todos los fframes.
+            } else
+                if (getRbMargen().isSelected()) {
+                    // creaer un Rect�ngulo en los m�rgenes del Layout.
+                    re.setRect(layout.getLayoutContext().getAttributes()
+                        .getArea());
+                }
+
+        re.setRect(re.getX() - x, re.getY() - y, re.getWidth() + x + w,
+            re.getHeight() + y + h);
+
+        geometry = new RectangleAdapter();
+        geometry.addPoint(new Point2D.Double(re.getX(), re.getY()));
+        geometry.addPoint(new Point2D.Double(re.getMaxX(), re.getMaxY()));
+        geometry.end();
+        fframegraphics.setGeometryAdapter(geometry);
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        selecList = layout.getLayoutContext().getSelectedFFrames();
+        this.setLayout(null);
+        m_NameUnit = layout.getLayoutContext().getAttributes().getNameUnit();
+        this.add(getRbSeleccionados(), null);
+        this.add(getRbTodos(), null);
+        this.add(getRbMargen(), null);
+        this.add(getChbAgrupar(), null);
+        this.add(getPPosicion(), null);
+        this.add(getBAceptar(), null);
+        this.add(getBCancelar(), null);
+        this.add(getBConfigurar(), null);
+        this.setSize(371, 223);
+
+        ButtonGroup group = new ButtonGroup();
+        group.add(getRbSeleccionados());
+        group.add(getRbTodos());
+        group.add(getRbMargen());
+    }
+
+    /**
+     * This method initializes rbSeleccionados
+     * 
+     * @return javax.swing.JRadioButton
+     */
+    private javax.swing.JRadioButton getRbSeleccionados() {
+        if (rbSeleccionados == null) {
+            rbSeleccionados = new javax.swing.JRadioButton();
+            rbSeleccionados.setBounds(10, 8, 416, 20);
+            rbSeleccionados.setText(PluginServices.getText(this,
+                "colocar_alrededor_seleccionados"));
+
+            if (selecList.length == 0) {
+                rbSeleccionados.setEnabled(false);
+                getRbTodos().setSelected(true);
+            } else {
+                rbSeleccionados.setSelected(true);
+            }
+        }
+
+        return rbSeleccionados;
+    }
+
+    /**
+     * This method initializes rbTodos
+     * 
+     * @return javax.swing.JRadioButton
+     */
+    private javax.swing.JRadioButton getRbTodos() {
+        if (rbTodos == null) {
+            rbTodos = new javax.swing.JRadioButton();
+            rbTodos.setBounds(10, 29, 332, 20);
+            rbTodos.setText(PluginServices.getText(this,
+                "colocar_alrededor_todos"));
+        }
+
+        return rbTodos;
+    }
+
+    /**
+     * This method initializes rbMargen
+     * 
+     * @return javax.swing.JRadioButton
+     */
+    private javax.swing.JRadioButton getRbMargen() {
+        if (rbMargen == null) {
+            rbMargen = new javax.swing.JRadioButton();
+            rbMargen.setBounds(10, 51, 286, 20);
+            rbMargen
+                .setText(PluginServices.getText(this, "colocar_a_margenes"));
+        }
+
+        return rbMargen;
+    }
+
+    /**
+     * This method initializes chbAgrupar
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbAgrupar() {
+        if (chbAgrupar == null) {
+            chbAgrupar = new javax.swing.JCheckBox();
+            chbAgrupar.setBounds(10, 70, 280, 20);
+            chbAgrupar.setText(PluginServices.getText(this, "agrupar_linea"));
+        }
+
+        return chbAgrupar;
+    }
+
+    /**
+     * This method initializes pPosicion
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getPPosicion() {
+        if (pPosicion == null) {
+            pPosicion = new javax.swing.JPanel();
+            pPosicion.setLayout(null);
+            pPosicion.add(getChbIgualLados(), null);
+            pPosicion.add(getLunidades(), null);
+            pPosicion.add(getTTodosLados(), null);
+            pPosicion.add(getLSuperior(), null);
+            pPosicion.add(getLInferior(), null);
+            pPosicion.add(getTSuperior(), null);
+            pPosicion.add(getTInferior(), null);
+            pPosicion.add(getLIzquierda(), null);
+            pPosicion.add(getLDerecha(), null);
+            pPosicion.add(getTIzquierda(), null);
+            pPosicion.add(getTDerecha(), null);
+            pPosicion.add(getLUnidades(), null);
+            pPosicion.setBounds(12, 92, 350, 97);
+            pPosicion.setBorder(javax.swing.BorderFactory.createTitledBorder(
+                null, PluginServices.getText(this, "posicion_linea"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+        }
+
+        return pPosicion;
+    }
+
+    /**
+     * This method initializes chbIgualLados
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbIgualLados() {
+        if (chbIgualLados == null) {
+            chbIgualLados = new javax.swing.JCheckBox();
+            chbIgualLados.setBounds(10, 16, 243, 21);
+            chbIgualLados.setText(PluginServices.getText(this,
+                "igual_todos_lados"));
+            chbIgualLados.setSelected(true);
+            chbIgualLados
+                .addActionListener(new java.awt.event.ActionListener() {
+
+                    public void actionPerformed(java.awt.event.ActionEvent e) {
+                        if (!chbIgualLados.isSelected()) {
+                            getTTodosLados().setEnabled(false);
+                            getTSuperior().setEnabled(true);
+                            getTInferior().setEnabled(true);
+                            getTIzquierda().setEnabled(true);
+                            getTDerecha().setEnabled(true);
+                        } else {
+                            getTTodosLados().setEnabled(true);
+                            getTSuperior().setEnabled(false);
+                            getTInferior().setEnabled(false);
+                            getTIzquierda().setEnabled(false);
+                            getTDerecha().setEnabled(false);
+                            getTSuperior().setText(tTodosLados.getText());
+                            getTInferior().setText(tTodosLados.getText());
+                            getTIzquierda().setText(tTodosLados.getText());
+                            getTDerecha().setText(tTodosLados.getText());
+                        }
+                    }
+                });
+        }
+
+        return chbIgualLados;
+    }
+
+    /**
+     * This method initializes lunidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLunidades() {
+        if (lunidades == null) {
+            lunidades = new javax.swing.JLabel();
+            lunidades.setBounds(264, 64, 78, 18);
+            lunidades.setText(PluginServices.getText(this, m_NameUnit));
+        }
+
+        return lunidades;
+    }
+
+    /**
+     * This method initializes tTodosLados
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTTodosLados() {
+        if (tTodosLados == null) {
+            tTodosLados = new javax.swing.JTextField();
+            tTodosLados.setBounds(267, 19, 48, 16);
+            tTodosLados.setText("0.5");
+            tTodosLados.addCaretListener(new javax.swing.event.CaretListener() {
+
+                public void caretUpdate(javax.swing.event.CaretEvent e) {
+                    if (getChbIgualLados().isSelected()) {
+                        getTSuperior().setText(tTodosLados.getText());
+                        getTInferior().setText(tTodosLados.getText());
+                        getTIzquierda().setText(tTodosLados.getText());
+                        getTDerecha().setText(tTodosLados.getText());
+                    }
+                }
+            });
+        }
+
+        return tTodosLados;
+    }
+
+    /**
+     * This method initializes lSuperior
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLSuperior() {
+        if (lSuperior == null) {
+            lSuperior = new javax.swing.JLabel();
+            lSuperior.setBounds(10, 55, 62, 16);
+            lSuperior.setText(PluginServices.getText(this, "Superior"));
+        }
+
+        return lSuperior;
+    }
+
+    /**
+     * This method initializes lInferior
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLInferior() {
+        if (lInferior == null) {
+            lInferior = new javax.swing.JLabel();
+            lInferior.setBounds(10, 72, 62, 16);
+            lInferior.setText(PluginServices.getText(this, "Inferior"));
+        }
+
+        return lInferior;
+    }
+
+    /**
+     * This method initializes tSuperior
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTSuperior() {
+        if (tSuperior == null) {
+            tSuperior = new javax.swing.JTextField();
+            tSuperior.setBounds(78, 55, 48, 16);
+            tSuperior.setText("0.5");
+            tSuperior.setEnabled(false);
+        }
+
+        return tSuperior;
+    }
+
+    /**
+     * This method initializes tInferior
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTInferior() {
+        if (tInferior == null) {
+            tInferior = new javax.swing.JTextField();
+            tInferior.setBounds(78, 72, 48, 16);
+            tInferior.setText("0.5");
+            tInferior.setEnabled(false);
+        }
+
+        return tInferior;
+    }
+
+    /**
+     * This method initializes lIzquierda
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLIzquierda() {
+        if (lIzquierda == null) {
+            lIzquierda = new javax.swing.JLabel();
+            lIzquierda.setBounds(140, 55, 62, 16);
+            lIzquierda.setText(PluginServices.getText(this, "Izquierda"));
+        }
+
+        return lIzquierda;
+    }
+
+    /**
+     * This method initializes lDerecha
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDerecha() {
+        if (lDerecha == null) {
+            lDerecha = new javax.swing.JLabel();
+            lDerecha.setBounds(140, 72, 62, 16);
+            lDerecha.setText(PluginServices.getText(this, "Derecha"));
+        }
+
+        return lDerecha;
+    }
+
+    /**
+     * This method initializes tIzquierda
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTIzquierda() {
+        if (tIzquierda == null) {
+            tIzquierda = new javax.swing.JTextField();
+            tIzquierda.setBounds(207, 55, 48, 16);
+            tIzquierda.setText("0.5");
+            tIzquierda.setEnabled(false);
+        }
+
+        return tIzquierda;
+    }
+
+    /**
+     * This method initializes tDerecha
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTDerecha() {
+        if (tDerecha == null) {
+            tDerecha = new javax.swing.JTextField();
+            tDerecha.setBounds(207, 72, 48, 16);
+            tDerecha.setText("0.5");
+            tDerecha.setEnabled(false);
+        }
+
+        return tDerecha;
+    }
+
+    /**
+     * This method initializes lUnidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLUnidades() {
+        if (lUnidades == null) {
+            lUnidades = new javax.swing.JLabel();
+            lUnidades.setBounds(207, 36, 134, 18);
+            lUnidades.setText(PluginServices.getText(this, "map_units"));
+        }
+
+        return lUnidades;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+        m_viewinfo.setTitle(PluginServices.getText(this,
+            "ajustes_linea_grafica"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * This method initializes bAceptar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setBounds(134, 193, 100, 20);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+                    double x =
+                        Double
+                            .parseDouble(getTIzquierda().getText().toString());
+                    double y =
+                        Double.parseDouble(getTSuperior().getText().toString());
+                    double w =
+                        Double.parseDouble(getTDerecha().getText().toString());
+                    double h =
+                        Double.parseDouble(getTInferior().getText().toString());
+
+                    if (!getChbAgrupar().isSelected()) {
+                        Rectangle2D re = new Rectangle2D.Double();
+
+                        if (getRbSeleccionados().isSelected()) {
+                            if (selecList.length > 0) {
+                                re = getRectangle(selecList[0]);
+
+                            }
+
+                            for (int i = 1; i < selecList.length; i++) {
+                                Rectangle2D rectaux =
+                                    getRectangle(selecList[i]);
+                                re.add(rectaux);
+                            }
+
+                            // crear un Rect�ngulo alrededor de los fframes
+                            // seleccionados.
+                        } else
+                            if (getRbTodos().isSelected()) {
+                                if (fframes.length > 0) {
+                                    re = getRectangle(fframes[0]);
+                                }
+
+                                for (int i = 1; i < fframes.length; i++) {
+                                    Rectangle2D rectaux =
+                                        getRectangle(fframes[i]);
+                                    re.add(rectaux);
+                                }
+
+                                // creaer un Rect�ngulo que incluya a todos los
+                                // fframes.
+                            } else
+                                if (getRbMargen().isSelected()) {
+                                    // creaer un Rect�ngulo en los m�rgenes del
+                                    // Layout.
+                                    re.setRect(layout.getLayoutContext()
+                                        .getAttributes().getArea());
+                                }
+
+                        re.setRect(re.getX() - x, re.getY() - y, re.getWidth()
+                            + x + w, re.getHeight() + y + h);
+
+                        geometry = new RectangleAdapter();
+                        geometry.addPoint(new Point2D.Double(re.getX(), re
+                            .getY()));
+                        geometry.addPoint(new Point2D.Double(re.getMaxX(), re
+                            .getMaxY()));
+                        geometry.end();
+                        fframegraphics.setGeometryAdapter(geometry);
+                        fframegraphics.setBoundBox(re);
+                        if (symbol != null) {
+                            fframegraphics.setSymbol(symbol);
+                        }
+                        layout.getLayoutContext().addFFrame(fframegraphics,
+                            true, true);
+                    } else { // Agrupar
+
+                        Rectangle2D re = new Rectangle2D.Double();
+                        if (getRbSeleccionados().isSelected()) {
+                            if (selecList.length > 0) {
+                                re = getRectangle(selecList[0]);
+                            }
+
+                            for (int i = 1; i < selecList.length; i++) {
+                                Rectangle2D rectaux =
+                                    getRectangle(selecList[i]);
+                                re.add(rectaux);
+                            }
+
+                            // crear un Rect�ngulo alrededor de los fframes
+                            // seleccionados.
+                        } else
+                            if (getRbTodos().isSelected()) {
+                                if (fframes.length > 0) {
+                                    re = getRectangle(fframes[0]);
+                                }
+
+                                for (int i = 1; i < fframes.length; i++) {
+                                    Rectangle2D rectaux =
+                                        getRectangle(fframes[i]);
+                                    fframes[i].setSelected(true);
+                                    re.add(rectaux);
+                                }
+
+                                // creaer un Rect�ngulo que incluya a todos los
+                                // fframes.
+                            } else
+                                if (getRbMargen().isSelected()) {
+                                    // creaer un Rect�ngulo en los m�rgenes del
+                                    // Layout.
+                                    re.setRect(layout.getLayoutContext()
+                                        .getAttributes().getArea());
+                                }
+
+                        re.setRect(re.getX() - x, re.getY() - y, re.getWidth()
+                            + x + w, re.getHeight() + y + h);
+
+                        geometry = new RectangleAdapter();
+                        geometry.addPoint(new Point2D.Double(re.getX(), re
+                            .getY()));
+                        geometry.addPoint(new Point2D.Double(re.getMaxX(), re
+                            .getMaxY()));
+                        geometry.end();
+                        fframegraphics.setGeometryAdapter(geometry);
+                        fframegraphics.setBoundBox(re);
+                        if (symbol != null) {
+                            fframegraphics.setSymbol(symbol);
+                        }
+                        layout
+                            .getLayoutContext()
+                            .getFrameCommandsRecord()
+                            .startComplex(
+                                PluginServices.getText(this,
+                                    "group_graphic_line"));
+                        layout.getLayoutContext().addFFrame(fframegraphics,
+                            false, true);
+                        flg.grouping();
+                        layout.getLayoutContext().getFrameCommandsRecord()
+                            .endComplex();
+
+                    }
+
+                    PluginServices.getMDIManager().closeWindow(
+                        FBorderDialog.this);
+                    observers.notifyObservers(FBorderDialog.this, 
+                        new DefaultLayoutNotification(LayoutNotification.LAYOUT_INVALIDATED));  
+                    layout.getLayoutControl().repaint();
+                    isAccepted = true;
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setBounds(251, 193, 100, 20);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    PluginServices.getMDIManager().closeWindow(
+                        FBorderDialog.this);
+                    isAccepted = false;
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes bConfigurar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBConfigurar() {
+        if (bConfigurar == null) {
+            bConfigurar = new javax.swing.JButton();
+            bConfigurar.setBounds(17, 193, 100, 20);
+            bConfigurar.setText(PluginServices.getText(this, "configurar"));
+            bConfigurar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+
+                    FFrameGraphicsDialog graphicsdialog =
+                        (FFrameGraphicsDialog) layoutManager
+                            .createFFrameDialog(fframegraphics, layout);
+
+                    PluginServices.getMDIManager().addWindow(graphicsdialog);
+                    symbol = (ISymbol) graphicsdialog.getSelectedObject();
+                }
+            });
+        }
+
+        return bConfigurar;
+    }
+
+    private Rectangle2D getRectangle(IFFrame f) {
+        Rectangle2D.Double re = new Rectangle2D.Double();
+        re.setRect(f.getBoundBox());
+        Point2D p1 = new Point2D.Double();
+        Point2D p2 = new Point2D.Double();
+        Point2D p3 = new Point2D.Double();
+        Point2D p4 = new Point2D.Double();
+        double rotation = (f).getRotation();
+        AffineTransform at = new AffineTransform();
+        at.rotate(Math.toRadians(rotation), re.x + (re.width / 2), re.y
+            + (re.height / 2));
+        at.transform(new Point2D.Double(re.getX(), re.getY()), p1);
+        at.transform(new Point2D.Double(re.getMaxX(), re.getY()), p2);
+        at.transform(new Point2D.Double(re.getMaxX(), re.getMaxY()), p3);
+        at.transform(new Point2D.Double(re.getX(), re.getMaxY()), p4);
+        if (p1.getX() < p4.getX()) {
+            re.x = p1.getX();
+        } else {
+            re.x = p4.getX();
+        }
+        if (p1.getY() < p2.getY()) {
+            re.y = p1.getY();
+        } else {
+            re.y = p2.getY();
+        }
+        if (p2.getX() > p3.getX()) {
+            re.width = p2.getX() - re.x;
+        } else {
+            re.width = p3.getX() - re.x;
+        }
+        if (p4.getY() > p3.getY()) {
+            re.height = p4.getY() - re.y;
+        } else {
+            re.height = p3.getY() - re.y;
+        }
+        return re;
+    }
+
+    public boolean isAccepted() {
+        return isAccepted;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/EventsFAlign.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/EventsFAlign.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/EventsFAlign.java	(revision 590)
@@ -0,0 +1,1286 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+import java.util.Iterator;
+import java.util.TreeMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.commands.FrameCommandsRecord;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Clase que hace de Listener de FAlignDialog.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class EventsFAlign implements ActionListener {
+
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(EventsFAlign.class);
+    private LayoutPanel m_layout;
+    private boolean inLayout = false;
+
+    /**
+     * Crea un nuevo FAlign.
+     * 
+     * @param layout
+     *            Referencia al Layout.
+     */
+    public EventsFAlign(LayoutPanel layout) {
+        m_layout = layout;
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la izquierda del fframe m�s
+     * occidental.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignLeft() throws CloneNotSupportedException {
+        double xmin = Double.MAX_VALUE;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (xmin > fframe.getBoundBox().getMinX()) {
+                xmin = fframe.getBoundBox().getMinX();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_left"));
+
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmin;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la izquierda del Layout.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignLeftL() throws CloneNotSupportedException {
+        double xmin = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_to_layout_left"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmin;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados al centro del fframe mas ancho de
+     * forma horizontal.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignCenterV() throws CloneNotSupportedException {
+        double xcenter = 0;
+        double w = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (w < fframe.getBoundBox().getWidth()) {
+                w = fframe.getBoundBox().getWidth();
+                xcenter = fframe.getBoundBox().getCenterX();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_center"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xcenter - (fframe.getBoundBox().width / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados al centro del Layout horizontalmente.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignCenterVL() throws CloneNotSupportedException {
+        double xcenter = 0;
+        xcenter =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getWidth() / 2;
+
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_to_layout_center"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xcenter - (fframe.getBoundBox().width / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte derecha del fframe m�s
+     * oriental.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignRight() throws CloneNotSupportedException {
+        double xmax = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (xmax < fframe.getBoundBox().getMaxX()) {
+                xmax = fframe.getBoundBox().getMaxX();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_right"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmax - fframes[i].getBoundBox().width;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte derecha del Layout.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignRightL() throws CloneNotSupportedException {
+        double xmax = 0;
+        xmax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getWidth();
+
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_to_layout_right"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmax - fframes[i].getBoundBox().width;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte inferior del fframe m�s
+     * hacia abajo.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignDown() throws CloneNotSupportedException {
+        double ymax = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (ymax < fframe.getBoundBox().getMaxY()) {
+                ymax = fframe.getBoundBox().getMaxY();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_down"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymax - fframe.getBoundBox().height;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte inferior del Layout.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignDownL() throws CloneNotSupportedException {
+        double ymax = 0;
+        ymax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getHeight();
+
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_to_layout_down"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymax - fframe.getBoundBox().height;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte superior del fframe que
+     * m�s arriba este colocado.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignUp() throws CloneNotSupportedException {
+        double ymin = Double.MAX_VALUE;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (ymin > fframe.getBoundBox().getMinY()) {
+                ymin = fframe.getBoundBox().getMinY();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_up"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymin;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados a la parte superior del Layout.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignUpL() throws CloneNotSupportedException {
+        double ymin = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_to_layout_up"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymin;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados al centro del fframe m�s alto
+     * verticalmente.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignCenterH() throws CloneNotSupportedException {
+        double ycenter = 0;
+        double h = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (h < fframe.getBoundBox().getHeight()) {
+                h = fframe.getBoundBox().getHeight();
+                ycenter = fframe.getBoundBox().getCenterY();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "align_vertical_center"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ycenter - (fframe.getBoundBox().height / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Desplaza los fframes seleccionados en el Layout al centro verticalmente.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void alignCenterHL() throws CloneNotSupportedException {
+        double ycenter = 0;
+        ycenter =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getHeight() / 2;
+
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "align_to_layout_vertical_center"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ycenter - (fframe.getBoundBox().height / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y vertical,
+     * de izquierda a derecha.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distLeft() throws CloneNotSupportedException {
+        double xmin = Double.MAX_VALUE;
+        double xmax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (xmin > fframe.getBoundBox().getMinX()) {
+                xmin = fframe.getBoundBox().getMinX();
+            }
+
+            if (xmax < fframe.getBoundBox().getMaxX()) {
+                xmax = fframe.getBoundBox().getMaxX();
+            }
+        }
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_left"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmin + (dist * i);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y vertical, de izquierda a derecha.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distLeftL() throws CloneNotSupportedException {
+        double xmin = 0;
+        double xmax = 0;
+        xmax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getWidth();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_left"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmin + (dist * i);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y vertical,
+     * de derecha a izquierda.
+     */
+    private void distRight() {
+        double xmin = Double.MAX_VALUE;
+        double xmax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (xmin > fframe.getBoundBox().getMinX()) {
+                xmin = fframe.getBoundBox().getMinX();
+            }
+
+            if (xmax < fframe.getBoundBox().getMaxX()) {
+                xmax = fframe.getBoundBox().getMaxX();
+            }
+        }
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_right"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmax - (dist * i) - fframe.getBoundBox().width;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y vertical, de derecha a izquierda.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distRightL() throws CloneNotSupportedException {
+        double xmin = 0;
+        double xmax = 0;
+        xmax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getWidth();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_right"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x = xmax - (dist * i) - fframe.getBoundBox().width;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y vertical,
+     * desde arriba hacia abajo.
+     */
+    private void distUp() {
+        double ymin = Double.MAX_VALUE;
+        double ymax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (ymin > fframe.getBoundBox().getMinY()) {
+                ymin = fframe.getBoundBox().getMinY();
+            }
+
+            if (ymax < fframe.getBoundBox().getMaxY()) {
+                ymax = fframe.getBoundBox().getMaxY();
+            }
+        }
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_up"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymin + (dist * i);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y vertical, desde arriba hacia abajo.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distUpL() throws CloneNotSupportedException {
+        double ymin = 0;
+        double ymax = 0;
+        ymax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getHeight();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        num = fframes.length;
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_up"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymin + (dist * i);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y vertical,
+     * desde bajo hacia arriba.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distDown() throws CloneNotSupportedException {
+        double ymin = Double.MAX_VALUE;
+        double ymax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (ymin > fframe.getBoundBox().getMinY()) {
+                ymin = fframe.getBoundBox().getMinY();
+            }
+
+            if (ymax < fframe.getBoundBox().getMaxY()) {
+                ymax = fframe.getBoundBox().getMaxY();
+            }
+        }
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_down"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymax - (dist * i) - fframe.getBoundBox().height;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y vertical, desde bajo hacia arriba.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distDownL() throws CloneNotSupportedException {
+        double ymin = 0;
+        double ymax = 0;
+        ymax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getHeight();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        num = fframes.length;
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_down"));
+
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y = ymax - (dist * i) - fframe.getBoundBox().height;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y vertical.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distCenterH() throws CloneNotSupportedException {
+        double xmin = Double.MAX_VALUE;
+        double xmax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (xmin > fframe.getBoundBox().getMinX()) {
+                xmin = fframe.getBoundBox().getMinX();
+            }
+
+            if (xmax < fframe.getBoundBox().getMaxX()) {
+                xmax = fframe.getBoundBox().getMaxX();
+            }
+        }
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_vertical"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x =
+                (xmin + (((dist) * (i + 1)) - (dist / 2)))
+                    - (fframe.getBoundBox().width / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y vertical.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distCenterHL() throws CloneNotSupportedException {
+        double xmin = 0;
+        double xmax = 0;
+        xmax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getWidth();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        double dif = xmax - xmin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_vertical"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.x =
+                (xmin + (((dist) * (i + 1)) - (dist / 2)))
+                    - (fframe.getBoundBox().width / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados de forma equidistante y horizontal.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distCenterV() throws CloneNotSupportedException {
+        double ymin = Double.MAX_VALUE;
+        double ymax = Double.NEGATIVE_INFINITY;
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (ymin > fframe.getBoundBox().getMinY()) {
+                ymin = fframe.getBoundBox().getMinY();
+            }
+
+            if (ymax < fframe.getBoundBox().getMaxY()) {
+                ymax = fframe.getBoundBox().getMaxY();
+            }
+        }
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "distributes_horizontal"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y =
+                (ymin + (((dist) * (i + 1)) - (dist / 2)))
+                    - (fframe.getBoundBox().height / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye los fframes seleccionados en el Layout de forma equidistante
+     * y horizontal.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void distCenterVL() throws CloneNotSupportedException {
+        double ymin = 0;
+        double ymax = 0;
+        ymax =
+            m_layout.getLayoutContext().getAttributes().getPaperSize().getHeight();
+
+        int num = 0;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        double dif = ymax - ymin;
+        double dist = dif / num;
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this,
+            "distributes_to_layout_horizontal"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.y =
+                (ymin + (((dist) * (i + 1)) - (dist / 2)))
+                    - (fframe.getBoundBox().height / 2);
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Cambia la anchura de los fframes seleccionados por la anchura del m�s
+     * ancho.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void sizeWidth() throws CloneNotSupportedException {
+        double wmax = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (wmax < fframe.getBoundBox().getWidth()) {
+                wmax = fframe.getBoundBox().getWidth();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "change_width"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.width = wmax;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Cambia la altura de los fframes seleccionados por la altura del mas
+     * alto.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void sizeHeight() throws CloneNotSupportedException {
+        double hmax = Double.NEGATIVE_INFINITY;
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (hmax < fframe.getBoundBox().getHeight()) {
+                hmax = fframe.getBoundBox().getHeight();
+            }
+        }
+
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "change_height"));
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = (IFFrame) fframes[i].clone();
+            Rectangle2D.Double r =
+                (Rectangle2D.Double) fframe.getBoundBox().clone();
+            r.height = hmax;
+            fframe.setBoundBox(r);
+            efs.update(fframes[i], fframe);
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye horizontalmente los fframes dejando como espacio entre ellos
+     * la media de todos los espacios.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void spaceRight() throws CloneNotSupportedException {
+        double total = 0;
+        double num = 0;
+        double xmin = Double.MAX_VALUE;
+        double xmax = Double.NEGATIVE_INFINITY;
+
+        TreeMap<Double, IFFrame> treemap = new TreeMap<Double, IFFrame>();
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+            treemap.put(new Double(fframe.getBoundBox().getMinX()), fframe);
+        }
+
+        Iterator<Double> j = treemap.keySet().iterator();
+
+        if (j.hasNext()) {
+            IFFrame fframeA = (IFFrame) treemap.get(j.next());
+            IFFrame fframeS = null;
+            xmin = fframeA.getBoundBox().x;
+
+            while (j.hasNext()) {
+                fframeS = (IFFrame) treemap.get(j.next());
+                total +=
+                    (fframeS.getBoundBox().getMinX() - fframeA.getBoundBox()
+                        .getMaxX());
+                fframeA = fframeS;
+            }
+
+            if (fframeS != null) {
+                xmax = fframeS.getBoundBox().getMaxX();
+            }
+        }
+
+        if (inLayout) {
+            total +=
+                (xmin + (m_layout.getLayoutContext().getAttributes().getPaperSize()
+                    .getWidth() - xmax));
+            num += 2;
+        }
+
+        double dist = total / (num - 1);
+        Iterator<Double> k = treemap.keySet().iterator();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "horizontal_space"));
+
+        if (k.hasNext()) {
+            IFFrame fframe = (IFFrame) treemap.get(k.next());
+            IFFrame fframeA = (IFFrame) fframe.clone();
+
+            if (inLayout) {
+                Rectangle2D.Double r =
+                    (Rectangle2D.Double) fframeA.getBoundBox().clone();
+                r.x = dist;
+                fframeA.setBoundBox(r);
+                efs.update(fframe, fframeA);
+            }
+
+            while (k.hasNext()) {
+                IFFrame fframeAux = (IFFrame) treemap.get(k.next());
+                IFFrame fframeS = (IFFrame) fframeAux.clone();
+                Rectangle2D.Double r =
+                    (Rectangle2D.Double) fframeS.getBoundBox().clone();
+                r.x = fframeA.getBoundBox().getMaxX() + dist;
+                fframeS.setBoundBox(r);
+                efs.update(fframeAux, fframeS);
+                fframeA = fframeS;
+            }
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * Distribuye verticalmente los fframes dejando como espacio entre ellos la
+     * media de todos los espacios.
+     * 
+     * @throws CloneNotSupportedException
+     */
+    private void spaceDown() throws CloneNotSupportedException {
+        double total = 0;
+        double num = 0;
+        double ymin = Double.MAX_VALUE;
+        double ymax = Double.NEGATIVE_INFINITY;
+
+        TreeMap<Double, IFFrame> treemap = new TreeMap<Double, IFFrame>();
+        IFFrame[] fframes = m_layout.getLayoutContext().getSelectedFFrames();
+        num = fframes.length;
+
+        for (int i = 0; i < num; i++) {
+            IFFrame fframe = fframes[i];
+            treemap.put(new Double(fframe.getBoundBox().getMinY()), fframe);
+        }
+
+        Iterator<Double> j = treemap.keySet().iterator();
+
+        if (j.hasNext()) {
+            IFFrame fframeA = (IFFrame) treemap.get(j.next());
+            ymin = fframeA.getBoundBox().y;
+
+            IFFrame fframeS = null;
+
+            while (j.hasNext()) {
+                fframeS = (IFFrame) treemap.get(j.next());
+                total +=
+                    (fframeS.getBoundBox().getMinY() - fframeA.getBoundBox()
+                        .getMaxY());
+                fframeA = fframeS;
+            }
+
+            if (fframeS != null) {
+                ymax = fframeS.getBoundBox().getMaxY();
+            }
+        }
+
+        if (inLayout) {
+            total +=
+                (ymin + (m_layout.getLayoutContext().getAttributes().getPaperSize()
+                    .getHeight() - ymax));
+            num += 2;
+        }
+
+        double dist = total / (num - 1);
+        Iterator<Double> k = treemap.keySet().iterator();
+        FrameCommandsRecord efs =
+            m_layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex(PluginServices.getText(this, "vertical_space"));
+
+        if (k.hasNext()) {
+            IFFrame fframe = (IFFrame) treemap.get(k.next());
+            IFFrame fframeA = (IFFrame) fframe.clone();
+
+            if (inLayout) {
+                Rectangle2D.Double r =
+                    (Rectangle2D.Double) fframeA.getBoundBox().clone();
+                r.y = dist;
+                fframeA.setBoundBox(r);
+                efs.update(fframe, fframeA);
+            }
+
+            while (k.hasNext()) {
+                IFFrame fframeAux = (IFFrame) treemap.get(k.next());
+                IFFrame fframeS = (IFFrame) fframeAux.clone();
+                Rectangle2D.Double r =
+                    (Rectangle2D.Double) fframeS.getBoundBox().clone();
+                r.y = fframeA.getBoundBox().getMaxY() + dist;
+                fframeS.setBoundBox(r);
+                efs.update(fframeAux, fframeS);
+                fframeA = fframeS;
+            }
+        }
+
+        efs.endComplex();
+    }
+
+    /**
+     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+     */
+    public void actionPerformed(ActionEvent e) {
+        m_layout.getLayoutContext().updateFFrames();
+
+        try {
+            if (!inLayout) {
+                if (e.getActionCommand() == "LEFT") {
+                    alignLeft();
+                } else
+                    if (e.getActionCommand() == "CENTERV") {
+                        alignCenterV();
+                    } else
+                        if (e.getActionCommand() == "RIGHT") {
+                            alignRight();
+                        } else
+                            if (e.getActionCommand() == "UP") {
+                                alignUp();
+                            } else
+                                if (e.getActionCommand() == "CENTERH") {
+                                    alignCenterH();
+                                } else
+                                    if (e.getActionCommand() == "DOWN") {
+                                        alignDown();
+                                    } else
+                                        if (e.getActionCommand() == "DISTUP") {
+                                            distUp();
+                                        } else
+                                            if (e.getActionCommand() == "DISTCENTERV") {
+                                                distCenterV();
+                                            } else
+                                                if (e.getActionCommand() == "DISTDOWN") {
+                                                    distDown();
+                                                } else
+                                                    if (e.getActionCommand() == "DISTLEFT") {
+                                                        distLeft();
+                                                    } else
+                                                        if (e
+                                                            .getActionCommand() == "DISTCENTERH") {
+                                                            distCenterH();
+                                                        } else
+                                                            if (e
+                                                                .getActionCommand() == "DISTRIGHT") {
+                                                                distRight();
+                                                            } else
+                                                                if (e
+                                                                    .getActionCommand() == "SIZECENTERV") {
+                                                                    sizeWidth();
+                                                                } else
+                                                                    if (e
+                                                                        .getActionCommand() == "SIZECENTERH") {
+                                                                        sizeHeight();
+                                                                    } else
+                                                                        if (e
+                                                                            .getActionCommand() == "SIZEOTHER") {
+                                                                            sizeWidth();
+                                                                            m_layout
+                                                                                .getLayoutContext()
+                                                                                .updateFFrames();
+                                                                            sizeHeight();
+                                                                        } else
+                                                                            if (e
+                                                                                .getActionCommand() == "SPACERIGHT") {
+                                                                                spaceRight();
+                                                                            } else
+                                                                                if (e
+                                                                                    .getActionCommand() == "SPACEDOWN") {
+                                                                                    spaceDown();
+                                                                                } else
+                                                                                    if (e
+                                                                                        .getActionCommand() == "INLAYOUT") {
+                                                                                        inLayout =
+                                                                                            true;
+                                                                                    }
+            } else {
+                if (e.getActionCommand() == "LEFT") {
+                    alignLeftL();
+                } else
+                    if (e.getActionCommand() == "CENTERV") {
+                        alignCenterVL();
+                    } else
+                        if (e.getActionCommand() == "RIGHT") {
+                            alignRightL();
+                        } else
+                            if (e.getActionCommand() == "UP") {
+                                alignUpL();
+                            } else
+                                if (e.getActionCommand() == "CENTERH") {
+                                    alignCenterHL();
+                                } else
+                                    if (e.getActionCommand() == "DOWN") {
+                                        alignDownL();
+                                    } else
+                                        if (e.getActionCommand() == "DISTUP") {
+                                            distUpL();
+                                        } else
+                                            if (e.getActionCommand() == "DISTCENTERV") {
+                                                distCenterVL();
+                                            } else
+                                                if (e.getActionCommand() == "DISTDOWN") {
+                                                    distDownL();
+                                                } else
+                                                    if (e.getActionCommand() == "DISTLEFT") {
+                                                        distLeftL();
+                                                    } else
+                                                        if (e
+                                                            .getActionCommand() == "DISTCENTERH") {
+                                                            distCenterHL();
+                                                        } else
+                                                            if (e
+                                                                .getActionCommand() == "DISTRIGHT") {
+                                                                distRightL();
+                                                            } else
+                                                                if (e
+                                                                    .getActionCommand() == "SIZECENTERV") {
+                                                                    sizeWidth();
+                                                                } else
+                                                                    if (e
+                                                                        .getActionCommand() == "SIZECENTERH") {
+                                                                        sizeHeight();
+                                                                    } else
+                                                                        if (e
+                                                                            .getActionCommand() == "SIZEOTHER") {
+                                                                            sizeWidth();
+                                                                            m_layout
+                                                                                .getLayoutContext()
+                                                                                .updateFFrames();
+                                                                            sizeHeight();
+                                                                        } else
+                                                                            if (e
+                                                                                .getActionCommand() == "SPACERIGHT") {
+                                                                                spaceRight();
+                                                                            } else
+                                                                                if (e
+                                                                                    .getActionCommand() == "SPACEDOWN") {
+                                                                                    spaceDown();
+                                                                                } else
+                                                                                    if (e
+                                                                                        .getActionCommand() == "INLAYOUT") {
+                                                                                        inLayout =
+                                                                                            false;
+                                                                                    }
+            }
+        } catch (CloneNotSupportedException e1) {
+            LOG.error("It is not possible clonate the object", e);
+        }
+
+        m_layout.getLayoutContext().updateFFrames();
+        m_layout.getLayoutContext().notifAllObservers();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FConfigLayoutDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FConfigLayoutDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FConfigLayoutDialog.java	(revision 590)
@@ -0,0 +1,1104 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Rectangle2D;
+import java.text.NumberFormat;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.IWindowListener;
+import org.gvsig.andami.ui.mdiManager.SingletonWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.Attributes;
+import org.gvsig.app.project.documents.layout.LayoutContext;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.Size;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.ListViewModel;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.gui.beans.AcceptCancelPanel;
+import org.gvsig.i18n.Messages;
+import org.gvsig.tools.swing.api.usability.UsabilitySwingManager;
+
+/**
+ * Dialog which can be used to configure the Layout page settings
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izquierdo
+ */
+public class FConfigLayoutDialog extends JPanel implements SingletonWindow, ActionListener {
+
+    private static final long serialVersionUID = -425263925680280142L;
+    private javax.swing.JLabel lTamPag = null;
+    private javax.swing.JComboBox cbTipoFolio = null;
+    private javax.swing.JComboBox cbUnidades = null;
+    private javax.swing.JLabel lAnchura = null;
+    private javax.swing.JLabel lAltura = null;
+    private javax.swing.JTextField tAncho = null;
+    private javax.swing.JTextField tAlto = null;
+    private javax.swing.JLabel lOrientacion = null;
+    private javax.swing.JLabel lMargenes = null;
+    private javax.swing.JCheckBox chbMargenes = null;
+    private javax.swing.JLabel lSuperior = null;
+    private javax.swing.JTextField tSuperior = null;
+    private javax.swing.JLabel lIzquierdo = null;
+    private javax.swing.JTextField tIzquierdo = null;
+    private javax.swing.JLabel lInferior = null;
+    private javax.swing.JTextField tInferior = null;
+    private javax.swing.JLabel lDerecho = null;
+    private javax.swing.JTextField tDerecho = null;
+    private javax.swing.JLabel lResolucion = null;
+    private javax.swing.JComboBox cbResolucion = null;
+    protected LayoutPanel m_layout = null;
+    private JPanel pOrientation = null;
+    private javax.swing.JRadioButton rbHorizontal = null;
+    private javax.swing.JRadioButton rbVertical = null;
+    private int unit = 2;
+    private int type = 0;
+    private boolean isLand = true;
+    private boolean margin = false;
+    private int resolution = 1;
+    private double der = 2.54;
+    private double izq = 2.54;
+    private double sup = 2.54;
+    private double inf = 2.54;
+    private NumberFormat nf = NumberFormat.getInstance();
+    protected Attributes temporaryAttributes;
+	private JList liViews = null;
+	private boolean showViewList;
+	private JCheckBox chbViews = null;
+	private JButton btConfigView = null;
+	private ViewDocument createdView = null;
+	private JScrollPane jViewScrollPane = null;
+	private WindowInfo windowInfo = null;
+	private JLabel lblUnitsTop = null;
+	private JLabel lblUnitsBottom = null;
+	private JLabel lblUnitsLeft = null;
+	private JLabel lblUnitsRight = null;
+	private JPanel pnlMargin = null;
+	private AcceptCancelPanel pnlAcceptCancel = null;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layout
+     *            Referencia al Layout.
+     */
+    public FConfigLayoutDialog(LayoutPanel layout) {
+    	this(layout, false);
+    }
+    
+    /**
+     * This is the default constructor
+     * 
+     * @param layout
+     *            Referencia al Layout.
+     */
+    public FConfigLayoutDialog(LayoutPanel layout, boolean showViewList) {
+        super();
+        m_layout = layout;
+        temporaryAttributes = (Attributes) layout.getLayoutContext().getAttributes().clone();
+        this.showViewList = showViewList;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+    	int row = 0;
+        nf.setMaximumFractionDigits(2);
+        this.setLayout(new GridBagLayout());
+        GridBagConstraints c = new GridBagConstraints();
+        type = temporaryAttributes.getType();
+        unit = temporaryAttributes.getUnit();
+        isLand = temporaryAttributes.isLandscape();
+        sup = temporaryAttributes.getAreaInsets()[0];
+        inf = temporaryAttributes.getAreaInsets()[1];
+        izq = temporaryAttributes.getAreaInsets()[2];
+        der = temporaryAttributes.getAreaInsets()[3];
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.anchor = GridBagConstraints.FIRST_LINE_START;
+        c.insets = new Insets(5, 5, 5, 5);
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = 1;
+        this.add(getLTamPag(), c);
+        c.gridx = GridBagConstraints.RELATIVE;
+        c.fill = GridBagConstraints.HORIZONTAL;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getCbTipoFolio(), c);
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = 1;
+        c.fill = GridBagConstraints.NONE;
+        this.add(getLAnchura(), c);
+        c.gridx = 1;
+        this.add(getTAncho(), c);
+        c.gridx = 2;
+        this.add(getLAltura(), c);
+        c.gridx = 3;
+        this.add(getTAlto(), c);
+        c.gridx = 4;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        c.fill = GridBagConstraints.HORIZONTAL;
+        this.add(getCbUnidades(), c);
+        c.gridx = 0;
+        c.gridy = row++;
+        c.gridwidth = 1;
+        this.add(getLOrientacion(), c);
+        c.gridx = GridBagConstraints.RELATIVE;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getOrientationPanel(), c);
+        c.gridy = row++;
+        c.gridx = 0;
+        c.gridwidth = 1;
+        this.add(getLResolucion(), c);
+        c.gridx = GridBagConstraints.RELATIVE;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getCbResolucion(), c);
+        if (this.showViewList) {
+        	c.gridy = row++;
+            c.gridx = 0;
+            c.gridwidth = 1;
+            this.add(getChbViews(), c);
+            c.gridx = 1;
+            c.gridwidth = GridBagConstraints.REMAINDER;
+            this.add(getViewScrollPane(), c);
+            c.gridy = row++;
+            c.gridx = 1;
+            c.gridwidth = 1;
+            this.add(getBtConfigView(), c);
+        }
+        c.gridy = row++;
+        c.gridx = 0;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getChbMargenes(), c);
+        c.gridy = row++;
+        c.gridx = 1;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getPnlMargin(), c);
+        c.gridy = row++;
+        c.gridx = 0;
+        c.gridwidth = GridBagConstraints.REMAINDER;
+        this.add(getPnlAcceptCancel(), c);
+    }
+    
+    public AcceptCancelPanel getPnlAcceptCancel() {
+    	if (pnlAcceptCancel==null) {
+    		pnlAcceptCancel = new AcceptCancelPanel(this, this);
+    	}
+    	return pnlAcceptCancel;
+    }
+    
+    private JPanel getPnlMargin() {
+    	if (pnlMargin==null) {
+    		pnlMargin = new JPanel(new GridBagLayout());
+    		GridBagConstraints c = new GridBagConstraints();
+            Insets leftInsets = new Insets(0, 0, 4, 4);
+            Insets leftInsets2 = new Insets(0, 20, 4, 4);
+            Insets rightInsets = new Insets(0, 4, 4, 0);
+            Insets centerInsets = new Insets(0, 4, 4, 4);
+            c.anchor = GridBagConstraints.LINE_START;
+            c.fill = GridBagConstraints.NONE;
+            int row = 0;
+            c.gridy = row++;
+            c.gridx = 0;
+            c.insets = leftInsets;
+            pnlMargin.add(getLSuperior(), c);
+            c.gridx = GridBagConstraints.RELATIVE;
+            c.insets = centerInsets;
+            pnlMargin.add(getTSuperior(), c);
+            pnlMargin.add(getLbUnitsTop(), c);
+            c.insets = leftInsets2;
+            pnlMargin.add(getLIzquierdo(), c);
+            c.insets = centerInsets;
+            pnlMargin.add(getTIzquierdo(), c);
+            c.insets = rightInsets;
+            pnlMargin.add(getLbUnitsLeft(), c);
+            leftInsets = new Insets(4, 0, 0, 4);
+            leftInsets2 = new Insets(4, 20, 0, 4);
+            rightInsets = new Insets(4, 4, 0, 0);
+            centerInsets = new Insets(4, 4, 0, 4);
+            c.gridy = row++;
+            c.gridx = 0;
+            c.insets = leftInsets;
+            pnlMargin.add(getLInferior(), c);
+            c.insets = centerInsets;
+            c.gridx = GridBagConstraints.RELATIVE;
+            pnlMargin.add(getTInferior(), c);
+            pnlMargin.add(getLbUnitsBottom(), c);
+            c.insets = leftInsets2;
+            pnlMargin.add(getLDerecho(), c);
+            c.insets = centerInsets;
+            pnlMargin.add(getTDerecho(), c);
+            c.insets = rightInsets;
+            pnlMargin.add(getLbUnitsRight(), c);
+    	}
+    	return pnlMargin;
+    }
+
+    /**
+     * This method initializes lTamPag
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLTamPag() {
+        if (lTamPag == null) {
+            lTamPag = new javax.swing.JLabel();
+            lTamPag
+                .setText(PluginServices.getText(this, "tamano_pagina"));
+        }
+
+        return lTamPag;
+    }
+
+    /**
+     * This method initializes cbTipoFolio
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbTipoFolio() {
+        if (cbTipoFolio == null) {
+            cbTipoFolio = new javax.swing.JComboBox();
+            cbTipoFolio.addItem(PluginServices.getText(this,
+                "Igual_que_la_impresora"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "A4"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "A3"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "A2"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "A1"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "A0"));
+            cbTipoFolio.addItem(PluginServices.getText(this, "Personalizado"));
+
+            cbTipoFolio.setSelectedIndex(m_layout.getLayoutContext()
+                .getAttributes().getType());
+            cbTipoFolio.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    type = cbTipoFolio.getSelectedIndex();
+                    temporaryAttributes.setType(type);
+                    Size size = temporaryAttributes.getPaperSizeInUnits();
+                    getTAlto().setText(
+                        String.valueOf(nf.format(size.getHeight())));
+                    getTAncho().setText(
+                        String.valueOf(nf.format(size.getWidth())));
+                    setMargin(margin);
+                    if (cbTipoFolio.getSelectedItem().equals(
+                        PluginServices.getText(this, "Personalizado"))) {
+                        getTAlto().setEnabled(true);
+                        getTAncho().setEnabled(true);
+                        getRbVertical().setSelected(true);
+                        isLand = false;
+                        getRbVertical().setEnabled(false);
+                        getRbHorizontal().setEnabled(false);
+                    } else {
+                        getTAlto().setEnabled(false);
+                        getTAncho().setEnabled(false);
+                        getRbVertical().setEnabled(true);
+                        getRbHorizontal().setEnabled(true);
+                    }
+                }
+            });
+        }
+
+        return cbTipoFolio;
+    }
+
+    /**
+     * This method initializes cbUnidades
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbUnidades() {
+        if (cbUnidades == null) {
+            cbUnidades = new javax.swing.JComboBox();
+            String[] names = MapContext.getDistanceNames();
+            for (int i = 0; i < names.length; i++) {
+                cbUnidades.addItem(PluginServices.getText(this, names[i]));
+            }
+            cbUnidades.setSelectedIndex(m_layout.getLayoutContext()
+                .getAttributes().getUnit());
+            cbUnidades.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                	onUnitsChange();
+                }
+            });
+        }
+
+        return cbUnidades;
+    }
+    
+    protected void onUnitsChange() {
+        unit = cbUnidades.getSelectedIndex();
+        temporaryAttributes.setUnit(unit);
+        Size size = temporaryAttributes.getPaperSizeInUnits();
+        getTAlto().setText(
+            String.valueOf(nf.format(size.getWidth())));
+        getTAncho().setText(
+            String.valueOf(nf.format(size.getHeight())));
+        String units = Messages.getText(MapContext.getDistanceAbbr()[getCbUnidades().getSelectedIndex()]);
+        getLbUnitsTop().setText(units);
+        getLbUnitsBottom().setText(units);
+        getLbUnitsLeft().setText(units);
+        getLbUnitsRight().setText(units);
+        setMargin(margin);
+    }
+
+    /**
+     * This method initializes lAnchura
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAnchura() {
+        if (lAnchura == null) {
+            lAnchura = new javax.swing.JLabel();
+            lAnchura.setText(PluginServices.getText(this, "anchura"));
+        }
+        return lAnchura;
+    }
+
+    /**
+     * This method initializes lAltura
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAltura() {
+        if (lAltura == null) {
+            lAltura = new javax.swing.JLabel();
+            lAltura.setText(PluginServices.getText(this, "altura"));
+        }
+        return lAltura;
+    }
+
+    /**
+     * This method initializes tAncho
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTAncho() {
+        if (tAncho == null) {
+            tAncho = new javax.swing.JTextField(4);
+            Size size = temporaryAttributes.getPaperSizeInUnits();
+            String s = String.valueOf(nf.format(size.getWidth()));
+            tAncho.setText(s);
+            if (getCbTipoFolio().getSelectedItem().equals(
+                PluginServices.getText(this, "Personalizado"))) {
+            	tAncho.setEnabled(true);
+            } else {
+            	tAncho.setEnabled(false);
+            }
+        }
+
+        return tAncho;
+    }
+
+    /**
+     * This method initializes tAlto
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTAlto() {
+        if (tAlto == null) {
+            tAlto = new javax.swing.JTextField(4);
+            Size size = temporaryAttributes.getPaperSizeInUnits();
+            String s = String.valueOf(nf.format(size.getHeight()));
+            tAlto.setText(s);
+            if (getCbTipoFolio().getSelectedItem().equals(
+                PluginServices.getText(this, "Personalizado"))) {
+            	tAlto.setEnabled(true);
+            } else {
+            	tAlto.setEnabled(false);
+            }
+        }
+
+        return tAlto;
+    }
+
+    /**
+     * This method initializes lOrientacion
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLOrientacion() {
+        if (lOrientacion == null) {
+            lOrientacion = new javax.swing.JLabel();
+            lOrientacion.setText(PluginServices.getText(this, "orientacion"));
+        }
+
+        return lOrientacion;
+    }
+
+    /**
+     * This method initializes lMargenes
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLMargenes() {
+        if (lMargenes == null) {
+            lMargenes = new javax.swing.JLabel();
+            lMargenes.setText(PluginServices.getText(this, "margenes"));
+        }
+
+        return lMargenes;
+    }
+
+    /**
+     * Inserta si se dibuja los margenes sobre el Layout o no.
+     * 
+     * @param b
+     *            True si se tiene que dibujar los margenes.
+     */
+    private void setMargin(boolean b) {
+        margin = b;
+
+        if (b) {
+            getTSuperior().setText(
+                String.valueOf(nf.format(
+                		temporaryAttributes.toUnits(sup))));
+            getTIzquierdo().setText(
+                String.valueOf(nf.format(temporaryAttributes.toUnits(izq))));
+            getTInferior().setText(
+                String.valueOf(nf.format(temporaryAttributes.toUnits(inf))));
+            getTDerecho().setText(
+                String.valueOf(nf.format(temporaryAttributes.toUnits(der))));
+            getTSuperior().setEnabled(true);
+            getTIzquierdo().setEnabled(true);
+            getTInferior().setEnabled(true);
+            getTDerecho().setEnabled(true);
+        } else {
+            getTSuperior().setText("");
+            getTIzquierdo().setText("");
+            getTInferior().setText("");
+            getTDerecho().setText("");
+            getTSuperior().setEnabled(false);
+            getTIzquierdo().setEnabled(false);
+            getTInferior().setEnabled(false);
+            getTDerecho().setEnabled(false);
+        }
+    }
+
+    /**
+     * This method initializes chbMargenes
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JCheckBox getChbMargenes() {
+        if (chbMargenes == null) {
+            chbMargenes = new javax.swing.JCheckBox();
+            chbMargenes.setText(PluginServices.getText(this,
+                "personalizar_margenes"));
+            chbMargenes.setSelected(temporaryAttributes.isMargin());
+            setMargin(temporaryAttributes.isMargin());
+            chbMargenes.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    if (chbMargenes.isSelected()) {
+                        margin = true;
+                    } else {
+                        margin = false;
+                    }
+
+                    setMargin(margin);
+                }
+            });
+        }
+
+        return chbMargenes;
+    }
+
+    /**
+     * This method initializes lSuperior
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLSuperior() {
+        if (lSuperior == null) {
+            lSuperior = new javax.swing.JLabel();
+            lSuperior.setText(PluginServices.getText(this, "Superior"));
+        }
+
+        return lSuperior;
+    }
+
+    /**
+     * This method initializes tSuperior
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTSuperior() {
+        if (tSuperior == null) {
+            tSuperior = new javax.swing.JTextField(4);
+            if (m_layout.getLayoutContext().getAttributes().isMargin()) {
+                tSuperior.setText(String.valueOf(nf.format(m_layout
+                    .getLayoutContext().getAttributes().toUnits(sup))));
+            }
+        }
+
+        return tSuperior;
+    }
+
+    /**
+     * This method initializes lIzquierdo
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLIzquierdo() {
+        if (lIzquierdo == null) {
+            lIzquierdo = new javax.swing.JLabel();
+            lIzquierdo.setText(PluginServices.getText(this, "Izquierdo"));
+        }
+
+        return lIzquierdo;
+    }
+
+    /**
+     * This method initializes tIzquierdo
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTIzquierdo() {
+        if (tIzquierdo == null) {
+            tIzquierdo = new javax.swing.JTextField(4);
+            if (m_layout.getLayoutContext().getAttributes().isMargin()) {
+                tIzquierdo.setText(String.valueOf(nf.format(m_layout
+                    .getLayoutContext().getAttributes().toUnits(izq))));
+            }
+        }
+
+        return tIzquierdo;
+    }
+
+    /**
+     * This method initializes lInferior
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLInferior() {
+        if (lInferior == null) {
+            lInferior = new javax.swing.JLabel();
+            lInferior.setText(PluginServices.getText(this, "Inferior"));
+        }
+
+        return lInferior;
+    }
+
+    /**
+     * This method initializes tInferior
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTInferior() {
+        if (tInferior == null) {
+            tInferior = new javax.swing.JTextField(4);
+            if (m_layout.getLayoutContext().getAttributes().isMargin()) {
+                tInferior.setText(String.valueOf(nf.format(m_layout
+                    .getLayoutContext().getAttributes().toUnits(inf))));
+            }
+        }
+
+        return tInferior;
+    }
+
+    /**
+     * This method initializes lDerecho
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDerecho() {
+        if (lDerecho == null) {
+            lDerecho = new javax.swing.JLabel();
+            lDerecho.setText(PluginServices.getText(this, "Derecho"));
+        }
+
+        return lDerecho;
+    }
+
+    /**
+     * This method initializes tDerecho
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTDerecho() {
+        if (tDerecho == null) {
+            tDerecho = new javax.swing.JTextField(4);
+            if (m_layout.getLayoutContext().getAttributes().isMargin()) {
+                tDerecho.setText(String.valueOf(nf.format(m_layout
+                    .getLayoutContext().getAttributes().toUnits(der))));
+            }
+        }
+
+        return tDerecho;
+    }
+
+    private JLabel getLbUnitsTop() {
+    	if (lblUnitsTop==null) {
+    		String unit = Messages.getText(MapContext.getDistanceAbbr()[getCbUnidades().getSelectedIndex()]);
+    		lblUnitsTop = new JLabel(unit);
+    	}
+    	return lblUnitsTop;
+    }
+    
+    private JLabel getLbUnitsBottom() {
+    	if (lblUnitsBottom==null) {
+    		String unit = Messages.getText(MapContext.getDistanceAbbr()[getCbUnidades().getSelectedIndex()]);
+    		lblUnitsBottom = new JLabel(unit);
+    	}
+    	return lblUnitsBottom;
+    }
+    
+    private JLabel getLbUnitsLeft() {
+    	if (lblUnitsLeft==null) {
+    		String unit = Messages.getText(MapContext.getDistanceAbbr()[getCbUnidades().getSelectedIndex()]);
+    		lblUnitsLeft = new JLabel(unit);
+    	}
+    	return lblUnitsLeft;
+    }
+    
+    private JLabel getLbUnitsRight() {
+    	if (lblUnitsRight==null) {
+    		String unit = Messages.getText(MapContext.getDistanceAbbr()[getCbUnidades().getSelectedIndex()]);
+    		lblUnitsRight = new JLabel(unit);
+    	}
+    	return lblUnitsRight;
+    }
+    
+    /**
+     * This method initializes lResolucion
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLResolucion() {
+        if (lResolucion == null) {
+            lResolucion = new javax.swing.JLabel();
+            lResolucion.setText(PluginServices.getText(this,
+                "resolucion_resultado"));
+        }
+
+        return lResolucion;
+    }
+
+    /**
+     * This method initializes cbResolucion
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private javax.swing.JComboBox getCbResolucion() {
+        if (cbResolucion == null) {
+            cbResolucion = new javax.swing.JComboBox();
+            cbResolucion.addItem(PluginServices.getText(this, "High_600_dpi"));
+            cbResolucion.addItem(PluginServices.getText(this, "Normal_300_dpi"));
+            cbResolucion.addItem(PluginServices.getText(this, "Low_72_dpi"));
+            cbResolucion.setSelectedIndex(m_layout.getLayoutContext()
+                .getAttributes().getResolution());
+            cbResolucion.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    resolution = cbResolucion.getSelectedIndex();
+                    temporaryAttributes.setResolution(resolution);
+                }
+            });
+        }
+
+        return cbResolucion;
+    }
+    
+    public void addOkButtonActionListener(ActionListener l) {
+    	getPnlAcceptCancel().addOkButtonActionListener(l);
+    }
+    
+    public void addCancelButtonActionListener(ActionListener l) {
+    	getPnlAcceptCancel().addCancelButtonActionListener(l);
+    }
+
+    private JPanel getOrientationPanel() {
+    	if (pOrientation == null) {
+    		pOrientation = new JPanel(new GridBagLayout());
+    		GridBagConstraints c = new GridBagConstraints();
+    	    c.anchor = GridBagConstraints.WEST;
+    	    c.gridx = 0;
+    	    c.gridy = 0;
+    	    c.insets = new Insets(0, 0, 0, 10);
+    	    pOrientation.add(getRbHorizontal(), c);
+    	    c.gridx = 1;
+    	    c.insets = new Insets(0, 0, 0, 0);
+    	    c.weightx = 1.0;
+    	    c.fill = GridBagConstraints.HORIZONTAL;
+    	    pOrientation.add(getRbVertical(), c);
+    	    // add the radios to the button group
+    	    ButtonGroup bgOrientation = new ButtonGroup();
+    	    bgOrientation.add(getRbHorizontal());
+    	    bgOrientation.add(getRbVertical());
+    	    if (isLand) {
+    	    	getRbHorizontal().setSelected(true);
+    	    }
+    	    else {
+    	    	getRbVertical().setSelected(true);
+    	    }
+    	    if (getCbTipoFolio().getSelectedItem().equals(
+    	    		PluginServices.getText(this, "Personalizado"))) {
+    	    	rbHorizontal.setEnabled(false);
+    	    	rbVertical.setEnabled(false);
+                rbVertical.setSelected(true);
+    	    	isLand = false;
+    	    }
+    	}
+    	return pOrientation;
+    }
+    
+    /**
+     * This method initializes chbHorizontal
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JRadioButton getRbHorizontal() {
+        if (rbHorizontal == null) {
+            rbHorizontal = new javax.swing.JRadioButton();
+            rbHorizontal.setText(PluginServices.getText(this, "horizontal"));
+            rbHorizontal
+            .addActionListener(new java.awt.event.ActionListener() {
+            	public void actionPerformed(java.awt.event.ActionEvent e) {
+            		isLand = true;
+            		double iz = izq;
+            		izq = inf;
+            		inf = der;
+            		der = sup;
+            		sup = iz;
+            		
+            		Attributes attr = FConfigLayoutDialog.this.temporaryAttributes;
+            		attr.setIsLandScape(isLand);
+            		setMargin(margin);
+            		Size size = attr.getPaperSizeInUnits();
+            		getTAncho().setText(
+            				String.valueOf(nf.format(size.getWidth())));
+            		getTAlto().setText(
+            				String.valueOf(nf.format(size.getHeight())));
+            	}
+            });
+        }
+
+        return rbHorizontal;
+    }
+
+    /**
+     * This method initializes chbVertical
+     * 
+     * @return javax.swing.JCheckBox
+     */
+    private javax.swing.JRadioButton getRbVertical() {        if (rbVertical == null) {
+        	rbVertical = new javax.swing.JRadioButton();
+        	rbVertical.setText(PluginServices.getText(this, "vertical"));
+        	rbVertical.addActionListener(new java.awt.event.ActionListener() {
+
+        		public void actionPerformed(java.awt.event.ActionEvent e) {
+        			isLand = false;
+        			double in = inf;
+        			inf = izq;
+        			izq = sup;
+        			sup = der;
+        			der = in;
+
+            		Attributes attr = FConfigLayoutDialog.this.temporaryAttributes;
+            		attr.setIsLandScape(isLand);
+            		setMargin(margin);
+            		Size size = attr.getPaperSizeInUnits();
+            		getTAncho().setText(
+        					String.valueOf(nf.format(size.getWidth())));
+        			getTAlto().setText(
+        					String.valueOf(nf.format(size.getHeight())));
+        		}
+            });
+        }
+
+        return rbVertical;
+    }
+
+    /**
+     * This method initializes liVistas
+     * 
+     * @return javax.swing.JList
+     */
+    private javax.swing.JList getViewList() {
+		if (liViews  == null) {
+            ListViewModel listModel = new ListViewModel();
+            listModel.addCreateNewViewObj();
+            if (listModel.addViews()) {
+               JOptionPane.showMessageDialog(
+                   ApplicationLocator.getManager().getRootComponent(),
+                   Messages.getText("_Some_views_excluded_from_list_because_have_editing_layers"),
+                   Messages.getText("Preparar_pagina"),
+                   JOptionPane.WARNING_MESSAGE); 
+            }
+            
+            liViews = new javax.swing.JList(listModel);
+            liViews.setSelectedIndex(0);
+		}
+        return liViews;
+    }
+    
+    private JScrollPane getViewScrollPane(){
+    	if (jViewScrollPane==null) {
+    		jViewScrollPane = new javax.swing.JScrollPane();
+    		jViewScrollPane.setViewportView(getViewList());
+    		jViewScrollPane.setPreferredSize(new java.awt.Dimension(300, 100));    	
+    	}
+    	return jViewScrollPane;
+    }
+    
+    private JButton getBtConfigView() {
+    	if (btConfigView==null) {
+    		UsabilitySwingManager manager = org.gvsig.tools.swing.api.ToolsSwingLocator.getUsabilitySwingManager();
+    		btConfigView = manager.createJButton(Messages.getText("Configure_view"));
+    		btConfigView.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					ViewDocument view = FConfigLayoutDialog.this.getSelectedView();
+					if (view!=null) {
+						IWindow propWin = view.getPropertiesWindow();
+						ApplicationManager manager = ApplicationLocator.getManager();
+						manager.getUIManager().addWindow(propWin);
+					}
+				}
+    		});
+    	}
+    	return btConfigView;
+    }
+    
+    protected ViewDocument getSelectedView() {
+    	Object selected = FConfigLayoutDialog.this.getViewList().getSelectedValue();
+    	ViewDocument view = null;
+    	if (selected instanceof ViewDocument) {
+    		view = (ViewDocument) selected;
+    	}
+    	else if (selected==ListViewModel.CREATE_NEW_VIEW_OBJECT) {
+    		if (FConfigLayoutDialog.this.createdView==null) {
+    			view = createView();
+    		}
+    		else {
+    			view = FConfigLayoutDialog.this.createdView;
+    		}
+    	}
+    	return view;
+    }
+    
+    private ViewDocument createView() {
+        ProjectManager projectManager = ApplicationLocator.getProjectManager();
+        ViewManager viewManager = (ViewManager) projectManager.getDocumentManager(ViewManager.TYPENAME);
+        createdView = (ViewDocument) viewManager.createDocument();
+    	ProjectManager.getInstance().getCurrentProject().addDocument(createdView);
+    	return createdView;
+    }
+    
+    private void deleteView() {
+    	ProjectManager projectManager = ApplicationLocator.getProjectManager();
+        ProjectManager.getInstance().getCurrentProject().removeDocument(createdView);
+        createdView = null;
+    }
+    
+    /**
+     * This method initializes lResolucion
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JCheckBox getChbViews() {
+        if (chbViews == null) {
+        	chbViews = new JCheckBox(PluginServices.getText(this,
+                    "Insert_view"));
+        	chbViews.setSelected(true);
+        }
+
+        return chbViews;
+    }
+    
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+     */
+    public WindowInfo getWindowInfo() {
+    	if (windowInfo==null) {
+    		windowInfo  = new WindowInfo(WindowInfo.RESIZABLE);
+    		if (showViewList) {
+    			windowInfo.setWidth(600);
+    			windowInfo.setHeight(450);
+    		}
+    		else {
+    			windowInfo.setWidth(550);
+    			windowInfo.setHeight(300);        	
+    		}
+    		windowInfo.setTitle(PluginServices.getText(this, "Preparar_pagina"));
+    	}
+        return windowInfo;
+    }    
+    
+    public Dimension getPreferredSize() {
+    	return new Dimension(getWindowInfo().getWidth(), getWindowInfo().getHeight());
+    }
+
+
+    /**
+     * Obtiene el �rea de los JtextField.
+     */
+    private void obtainArea() {
+        String s = (getTSuperior().getText());
+        s = s.replace(',', '.');
+
+        if (s.length() == 0) {
+            s = "0";
+        }
+
+        sup =
+            temporaryAttributes
+                .fromUnits(Double.valueOf(s).doubleValue());
+        s = (getTIzquierdo().getText());
+        s = s.replace(',', '.');
+
+        if (s.length() == 0) {
+            s = "0";
+        }
+
+        izq =
+            temporaryAttributes
+                .fromUnits(Double.valueOf(s).doubleValue());
+        s = (getTInferior().getText());
+        s = s.replace(',', '.');
+
+        if (s.length() == 0) {
+            s = "0";
+        }
+
+        inf =
+            temporaryAttributes
+                .fromUnits(Double.valueOf(s).doubleValue());
+        s = (getTDerecho().getText());
+        s = s.replace(',', '.');
+
+        if (s.length() == 0) {
+            s = "0";
+        }
+
+        der =
+            temporaryAttributes
+                .fromUnits(Double.valueOf(s).doubleValue());
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+	public Object getWindowModel() {
+		// necessary for considering them as separate SingletonWindows depending showViewList option
+		if (showViewList) {
+			return m_layout;
+		}
+		else {
+			return m_layout.getLayoutControl();
+		}
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getActionCommand()=="OK") {
+			onAcceptPressed();
+		}
+		else {
+			onCancelPressed();
+		}
+		
+	}
+	
+	private void onCancelPressed() {
+        if (createdView!=null) {
+        	deleteView();
+        }
+        // we use setVisible(false) to close the window when it has been
+        // created using WindowManager.showWindow()
+        setVisible(false);
+	}
+	
+	private void onAcceptPressed() {
+        obtainArea();
+
+        double[] area = { sup, inf, izq, der };
+
+        if (type == Attributes.CUSTOM) {
+            String width = getTAncho().getText().replace(',', '.');
+            String height = getTAlto().getText().replace(',', '.');
+            temporaryAttributes.setPaperSize(new Size(
+                    Double.valueOf(height).doubleValue(),
+                    Double.valueOf(width).doubleValue()));
+        }
+        else {
+        	if (isLand) {
+        		temporaryAttributes.setIsLandScape(true);
+        	} else {
+        		temporaryAttributes.setIsLandScape(false);
+        	}
+        }
+        temporaryAttributes.setType(type);
+        m_layout.getLayoutContext().setAtributes(temporaryAttributes);
+        temporaryAttributes.setSelectedOptions(type, unit, isLand, margin,
+                resolution, area);
+        m_layout.obtainRect(false);
+        
+        if (showViewList && getChbViews().isSelected()) { // a view has been selected
+        	ViewDocument vd = getSelectedView();
+        	ProjectManager projectManager = ApplicationLocator.getProjectManager();
+            LayoutManager layoutManager = (LayoutManager) projectManager.getDocumentManager(LayoutManager.TYPENAME);
+            FFrameView ffv = (FFrameView) layoutManager.createFrame(FFrameView.PERSISTENCE_DEFINITION_NAME);
+            ffv.setDocument(m_layout.getDocument());
+            LayoutContext lctxt = m_layout.getLayoutContext();
+            ffv.setLayoutContext(lctxt);
+        	ffv.setBoundBox(new Rectangle2D.Double(izq, sup, temporaryAttributes.getPaperSize().getWidth()-(izq+der), temporaryAttributes.getPaperSize().getHeight()-(sup+inf)));
+        	ffv.setView(vd);
+        	lctxt.addFFrame(ffv, true, true);
+        	m_layout.getLayoutControl().setDefaultTool();
+        }
+        if (createdView!=null && createdView!=getSelectedView()) { // a view was created but later de-selected
+        	deleteView();
+        }
+        m_layout.getLayoutControl().fullRect();
+        // we use setVisible(false) to close the window when it has been
+        // created using WindowManager.showWindow()
+        setVisible(false);
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FPositionDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FPositionDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FPositionDialog.java	(revision 590)
@@ -0,0 +1,538 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import java.awt.geom.Rectangle2D;
+import java.text.NumberFormat;
+
+import javax.swing.JPanel;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.DefaultLayoutNotification;
+import org.gvsig.app.project.documents.layout.LayoutNotification;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Di�logo que ofrece la posibilidad de posicionar el fframe en un punto en
+ * concreto del Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FPositionDialog extends JPanel implements IWindow, Observable {
+
+    private static final long serialVersionUID = -1289724614739172740L;
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(FPositionDialog.class);
+    private javax.swing.JLabel lDesdeIzquierda = null;
+    private javax.swing.JLabel lDesdeArriba = null;
+    private javax.swing.JLabel lAnchura = null;
+    private javax.swing.JLabel lAltura = null;
+    private javax.swing.JButton bAceptar = null;
+    private javax.swing.JButton bCancelar = null;
+    private javax.swing.JTextField tDesdeIzquierda = null;
+    private javax.swing.JTextField tDesdeDerecha = null;
+    private javax.swing.JTextField tAnchura = null;
+    private javax.swing.JTextField tAltura = null;
+    private javax.swing.JLabel lNomUnidades = null;
+    private javax.swing.JLabel lUnidades = null;
+    private LayoutPanel layout = null;
+    private String m_NameUnit = null;
+    // private ArrayList selecList = new ArrayList();
+    NumberFormat nf = NumberFormat.getInstance();
+    private javax.swing.JLabel lAnchoUnidades = null;
+    private javax.swing.JLabel lAlto = null;
+    private javax.swing.JLabel lAltoUnidades = null;
+    private javax.swing.JLabel lAncho = null;
+    private javax.swing.JPanel pFolio = null;
+    private javax.swing.JLabel lSeparador = null;
+    private IFFrame fframe;
+    private ObservableHelper observers;
+    
+    /**
+     * This is the default constructor
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public FPositionDialog(LayoutPanel layoutPanel, IFFrame fframe) {
+        super();
+        layout = layoutPanel;
+        this.fframe = fframe;
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+
+        /*
+         * for (int i = layout.getFFrames().size() - 1; i >= 0; i--) {
+         * IFFrame fframe = (IFFrame) layout.getFFrames().get(i);
+         * 
+         * if (fframe.getSelected() != FFrame.NOSELECT) {
+         * selecList.add(fframe);
+         * }
+         * }
+         */
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+
+        if (layout.getLayoutContext().isAdjustingToGrid()) {
+            nf.setMaximumFractionDigits(1);
+        } else {
+            nf.setMaximumFractionDigits(2);
+        }
+
+        m_NameUnit = layout.getLayoutContext().getAttributes().getNameUnit();
+        this.add(getLDesdeIzquierda(), null);
+        this.add(getLDesdeArriba(), null);
+        this.add(getLAnchura(), null);
+        this.add(getLAltura(), null);
+        this.add(getBAceptar(), null);
+        this.add(getBCancelar(), null);
+        this.add(getTDesdeIzquierda(), null);
+        this.add(getTDesdeDerecha(), null);
+        this.add(getTAnchura(), null);
+        this.add(getTAltura(), null);
+        this.add(getLNomUnidades(), null);
+        this.add(getLUnidades(), null);
+        this.add(getPFolio(), null);
+        this.setSize(203, 215);
+    }
+
+    /**
+     * This method initializes lDesdeIzquierda
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDesdeIzquierda() {
+        if (lDesdeIzquierda == null) {
+            lDesdeIzquierda = new javax.swing.JLabel();
+            lDesdeIzquierda.setBounds(9, 85, 116, 20);
+            lDesdeIzquierda.setText(PluginServices.getText(this,
+                "desde_izquierda"));
+        }
+
+        return lDesdeIzquierda;
+    }
+
+    /**
+     * This method initializes lDesdeArriba
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDesdeArriba() {
+        if (lDesdeArriba == null) {
+            lDesdeArriba = new javax.swing.JLabel();
+            lDesdeArriba.setBounds(9, 110, 116, 20);
+            lDesdeArriba.setText(PluginServices.getText(this, "desde_arriba"));
+        }
+
+        return lDesdeArriba;
+    }
+
+    /**
+     * This method initializes lAnchura
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAnchura() {
+        if (lAnchura == null) {
+            lAnchura = new javax.swing.JLabel();
+            lAnchura.setBounds(9, 135, 116, 20);
+            lAnchura.setText(PluginServices.getText(this, "anchura"));
+        }
+
+        return lAnchura;
+    }
+
+    /**
+     * This method initializes lAltura
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAltura() {
+        if (lAltura == null) {
+            lAltura = new javax.swing.JLabel();
+            lAltura.setBounds(9, 160, 116, 20);
+            lAltura.setText(PluginServices.getText(this, "altura"));
+        }
+
+        return lAltura;
+    }
+
+    /**
+     * This method initializes bAceptar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBAceptar() {
+        if (bAceptar == null) {
+            bAceptar = new javax.swing.JButton();
+            bAceptar.setBounds(12, 185, 85, 23);
+            bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+            bAceptar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    // if (selecList.size() == 1) {
+                    Rectangle2D.Double r = new Rectangle2D.Double();
+
+                    if (getTDesdeIzquierda().getText().equals("")) {
+                        getTDesdeIzquierda().setText("0");
+                    }
+
+                    if (getTDesdeDerecha().getText().equals("")) {
+                        getTDesdeDerecha().setText("0");
+                    }
+
+                    if (getTAnchura().getText().equals("")) {
+                        getTAnchura().setText("0");
+                    }
+
+                    if (getTAltura().getText().equals("")) {
+                        getTAltura().setText("0");
+                    }
+
+                    r.x =
+                        stringToDouble(getTDesdeIzquierda().getText()
+                            .toString());
+                    r.y =
+                        stringToDouble(getTDesdeDerecha().getText().toString());
+                    r.width =
+                        stringToDouble(getTAnchura().getText().toString());
+                    r.height =
+                        stringToDouble(getTAltura().getText().toString());
+
+                    // ((IFFrame) selecList.get(0)).setBoundBox(r);
+                    IFFrame fframeAux;
+                    try {
+                        fframeAux = (IFFrame) fframe.clone();
+                        fframeAux.setBoundBox(r);
+                        layout.getLayoutContext().getFrameCommandsRecord()
+                            .update(fframe, fframeAux);
+                        layout.getLayoutContext().updateFFrames();
+                    } catch (CloneNotSupportedException e1) {
+                        LOG.error("It is not possible clonate the object", e);
+                    }
+
+                    PluginServices.getMDIManager().closeWindow(
+                        FPositionDialog.this);
+                    observers.notifyObservers(FPositionDialog.this, 
+                        new DefaultLayoutNotification(LayoutNotification.LAYOUT_INVALIDATED));      
+                    layout.repaint();
+                }
+            });
+        }
+
+        return bAceptar;
+    }
+
+    /**
+     * Paso de String a double.
+     * 
+     * @param s
+     *            String.
+     * 
+     * @return double obtenido.
+     */
+    private double stringToDouble(String s) {
+        String snew = s.replace(',', '.');
+
+        return layout.getLayoutContext().getAttributes()
+            .fromUnits(Double.parseDouble(snew));
+    }
+
+    /**
+     * This method initializes bCancelar
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBCancelar() {
+        if (bCancelar == null) {
+            bCancelar = new javax.swing.JButton();
+            bCancelar.setBounds(107, 185, 87, 23);
+            bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+            bCancelar.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    PluginServices.getMDIManager().closeWindow(
+                        FPositionDialog.this);
+                }
+            });
+        }
+
+        return bCancelar;
+    }
+
+    /**
+     * This method initializes tDesdeIzquierda
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTDesdeIzquierda() {
+        if (tDesdeIzquierda == null) {
+            tDesdeIzquierda = new javax.swing.JTextField();
+            tDesdeIzquierda.setBounds(132, 85, 53, 20);
+            tDesdeIzquierda.setText(String.valueOf(nf.format(layout
+                .getLayoutContext().getAttributes()
+                .toUnits(fframe.getBoundBox().x))));
+        }
+
+        return tDesdeIzquierda;
+    }
+
+    /**
+     * This method initializes tDesdeDerecha
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTDesdeDerecha() {
+        if (tDesdeDerecha == null) {
+            tDesdeDerecha = new javax.swing.JTextField();
+            tDesdeDerecha.setBounds(132, 110, 53, 20);
+            tDesdeDerecha.setText(String.valueOf(nf.format(layout
+                .getLayoutContext().getAttributes()
+                .toUnits(fframe.getBoundBox().y))));
+        }
+
+        return tDesdeDerecha;
+    }
+
+    /**
+     * This method initializes tAnchura
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTAnchura() {
+        if (tAnchura == null) {
+            tAnchura = new javax.swing.JTextField();
+            tAnchura.setBounds(132, 135, 53, 20);
+            tAnchura.setText(String.valueOf(nf.format(layout.getLayoutContext()
+                .getAttributes().toUnits(fframe.getBoundBox().width))));
+        }
+
+        return tAnchura;
+    }
+
+    /**
+     * This method initializes tAltura
+     * 
+     * @return javax.swing.JTextField
+     */
+    private javax.swing.JTextField getTAltura() {
+        if (tAltura == null) {
+            tAltura = new javax.swing.JTextField();
+            tAltura.setBounds(132, 160, 53, 20);
+            tAltura.setText(String.valueOf(nf.format(layout.getLayoutContext()
+                .getAttributes().toUnits(fframe.getBoundBox().height))));
+        }
+
+        return tAltura;
+    }
+
+    /**
+     * This method initializes lNomUnidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLNomUnidades() {
+        if (lNomUnidades == null) {
+            lNomUnidades = new javax.swing.JLabel();
+            lNomUnidades.setBounds(91, 7, 91, 20);
+            lNomUnidades.setText(PluginServices.getText(this, m_NameUnit));
+        }
+
+        return lNomUnidades;
+    }
+
+    /**
+     * This method initializes lUnidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLUnidades() {
+        if (lUnidades == null) {
+            lUnidades = new javax.swing.JLabel();
+            lUnidades.setBounds(7, 7, 72, 20);
+            lUnidades.setText(PluginServices.getText(this, "unidades"));
+        }
+
+        return lUnidades;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+
+        // vi.setResizable(false);
+        m_viewinfo.setTitle(PluginServices.getText(this, "tamano_posicion"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    /**
+     * This method initializes lAnchoUnidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAnchoUnidades() {
+        if (lAnchoUnidades == null) {
+            lAnchoUnidades = new javax.swing.JLabel();
+
+            if (layout.getLayoutContext().getAttributes().isLandscape()) {
+                lAnchoUnidades.setText(String.valueOf(nf.format(layout
+                    .getLayoutContext().getAttributes().getSizeInUnits()
+                    .getHeight())));
+            } else {
+                lAnchoUnidades.setText(String.valueOf(nf.format(layout
+                    .getLayoutContext().getAttributes().getSizeInUnits()
+                    .getWidth())));
+            }
+        }
+
+        return lAnchoUnidades;
+    }
+
+    /**
+     * This method initializes lAlto
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAlto() {
+        if (lAlto == null) {
+            lAlto = new javax.swing.JLabel();
+            lAlto.setText(PluginServices.getText(this, "alto"));
+        }
+
+        return lAlto;
+    }
+
+    /**
+     * This method initializes lAltoUnidades
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAltoUnidades() {
+        if (lAltoUnidades == null) {
+            lAltoUnidades = new javax.swing.JLabel();
+
+            if (layout.getLayoutContext().getAttributes().isLandscape()) {
+                lAltoUnidades.setText(String.valueOf(nf.format(layout
+                    .getLayoutContext().getAttributes().getSizeInUnits()
+                    .getWidth())));
+            } else {
+                lAltoUnidades.setText(String.valueOf(nf.format(layout
+                    .getLayoutContext().getAttributes().getSizeInUnits()
+                    .getHeight())));
+            }
+        }
+
+        return lAltoUnidades;
+    }
+
+    /**
+     * This method initializes lAncho
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAncho() {
+        if (lAncho == null) {
+            lAncho = new javax.swing.JLabel();
+            lAncho.setText(PluginServices.getText(this, "ancho"));
+        }
+
+        return lAncho;
+    }
+
+    /**
+     * This method initializes pFolio
+     * 
+     * @return javax.swing.JPanel
+     */
+    private javax.swing.JPanel getPFolio() {
+        if (pFolio == null) {
+            pFolio = new javax.swing.JPanel();
+            pFolio.add(getLAltoUnidades(), null);
+            pFolio.add(getLAlto(), null);
+            pFolio.add(getLSeparador(), null);
+            pFolio.add(getLAnchoUnidades(), null);
+            pFolio.add(getLAncho(), null);
+            pFolio.setBounds(9, 31, 180, 43);
+            pFolio.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
+                PluginServices.getText(this, "tamanyo_pagina"),
+                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
+                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+        }
+
+        return pFolio;
+    }
+
+    /**
+     * This method initializes lSeparador
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLSeparador() {
+        if (lSeparador == null) {
+            lSeparador = new javax.swing.JLabel();
+            lSeparador.setText("/");
+        }
+
+        return lSeparador;
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/Tag.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/Tag.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/Tag.java	(revision 590)
@@ -0,0 +1,158 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+
+/**
+ * Di�logo para insertar o modificar el Tag asociado a un FFrame.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class Tag extends JPanel implements IWindow {
+
+    private static final long serialVersionUID = -2139875729308113677L;
+    private JTextField jTextField = null;
+    private JLabel jLabel = null;
+    private JButton jButton = null;
+    private JButton jButton1 = null;
+    private IFFrame fframe = null;
+    WindowInfo m_viewinfo = new WindowInfo(WindowInfo.PALETTE);
+
+    /**
+     * This is the default constructor
+     * 
+     * @param f
+     *            FFrame al que asociar el Tag.
+     */
+    public Tag(IFFrame f) {
+        super();
+        fframe = f;
+        initialize();
+    }
+
+    /**
+     * This method initializes jTextField
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getJTextField() {
+        if (jTextField == null) {
+            jTextField = new JTextField();
+
+            if (fframe.getTag() != null) {
+                jTextField.setText(fframe.getTag());
+            }
+
+            jTextField.setPreferredSize(new java.awt.Dimension(200, 20));
+        }
+
+        return jTextField;
+    }
+
+    /**
+     * This method initializes jButton
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getJButton() {
+        if (jButton == null) {
+            jButton = new JButton();
+            jButton.setText("Aceptar");
+            jButton.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    if (getJTextField().getText().compareTo("") == 0) {
+                        fframe.setTag(null);
+                    } else {
+                        fframe.setTag(getJTextField().getText());
+                    }
+
+                    PluginServices.getMDIManager().closeWindow(Tag.this);
+                }
+            });
+        }
+
+        return jButton;
+    }
+
+    /**
+     * This method initializes jButton1
+     * 
+     * @return javax.swing.JButton
+     */
+    private JButton getJButton1() {
+        if (jButton1 == null) {
+            jButton1 = new JButton();
+            jButton1.setText("Cancelar");
+            jButton1.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    PluginServices.getMDIManager().closeWindow(Tag.this);
+                }
+            });
+        }
+
+        return jButton1;
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        jLabel = new JLabel();
+        this.setSize(284, 100);
+        jLabel.setText("tag");
+        this.add(jLabel, null);
+        this.add(getJTextField(), null);
+        this.add(getJButton(), null);
+        this.add(getJButton1(), null);
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        m_viewinfo.setTitle(PluginServices.getText(this, "tag"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.TOOL_PROFILE;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FAlignDialog.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FAlignDialog.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs/FAlignDialog.java	(revision 590)
@@ -0,0 +1,634 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.gui.dialogs;
+
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.JToggleButton;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.SingletonWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Contenedor de los botones necesarios para alinear, desplazar y cambiar el
+ * tama�o de los fframes.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FAlignDialog extends JPanel implements SingletonWindow {
+
+    private static final long serialVersionUID = -4811888913915502937L;
+    private static final ImageIcon ileft = PluginServices.getIconTheme().get(
+        "text-left-icon");
+    private static final ImageIcon icenterV = PluginServices.getIconTheme()
+        .get("text-center-v-icon");
+
+    private static final ImageIcon iright = PluginServices.getIconTheme().get(
+        "text-right-icon");
+    private static final ImageIcon iup = PluginServices.getIconTheme().get(
+        "text-up-icon");
+    private static final ImageIcon icenterH = PluginServices.getIconTheme()
+        .get("text-center-h-icon");
+    private static final ImageIcon idown = PluginServices.getIconTheme().get(
+        "text-down-icon");
+    private static final ImageIcon idistUp = PluginServices.getIconTheme().get(
+        "text-distup-icon");
+    private static final ImageIcon idistCenterH = PluginServices.getIconTheme()
+        .get("text-distcenterh-icon");
+    private static final ImageIcon idistDown = PluginServices.getIconTheme()
+        .get("text-distdown-icon");
+    private static final ImageIcon idistLeft = PluginServices.getIconTheme()
+        .get("text-distleft-icon");
+    private static final ImageIcon idistCenterV = PluginServices.getIconTheme()
+        .get("text-distcenterv-icon");
+    private static final ImageIcon idistRight = PluginServices.getIconTheme()
+        .get("text-distright-icon");
+    private static final ImageIcon isizeWidth = PluginServices.getIconTheme()
+        .get("text-size-width-icon");
+    private static final ImageIcon isizeHeight = PluginServices.getIconTheme()
+        .get("text-size-height-icon");
+    private static final ImageIcon isizeOther = PluginServices.getIconTheme()
+        .get("text-size-other-icon");
+    private static final ImageIcon ispaceRight = PluginServices.getIconTheme()
+        .get("text-space-right-icon");
+    private static final ImageIcon ispaceDown = PluginServices.getIconTheme()
+        .get("text-space-down-icon");
+    private static final ImageIcon iinLayout = PluginServices.getIconTheme()
+        .get("text-inlayout-icon");
+
+    private javax.swing.JButton bleft = null;
+    private javax.swing.JButton bcenterV = null;
+    private javax.swing.JButton bright = null;
+    private javax.swing.JButton bup = null;
+    private javax.swing.JButton bcenterH = null;
+    private javax.swing.JButton bdown = null;
+    private javax.swing.JButton bdistUp = null;
+    private LayoutPanel m_layout = null;
+    private javax.swing.JLabel lAlineamiento = null;
+    private javax.swing.JLabel lDistribuir = null;
+    private javax.swing.JButton bdistcenterV = null;
+    private javax.swing.JButton bdistDown = null;
+    private javax.swing.JButton bdistLeft = null;
+    private javax.swing.JButton bdistcenterH = null;
+    private javax.swing.JButton bdistRight = null;
+    private javax.swing.JLabel lTamano = null;
+    private javax.swing.JButton bsizecenterV = null;
+    private javax.swing.JButton bsizecenterH = null;
+    private javax.swing.JButton bsizeother = null;
+    private javax.swing.JButton bspaceRight = null;
+    private javax.swing.JButton bspaceDown = null;
+    private javax.swing.JLabel lEspacio = null;
+    private javax.swing.JLabel lEnElMapa = null;
+    private JToggleButton binLayout = null;
+
+    /**
+     * This is the default constructor
+     * 
+     * @param layout
+     *            Referencia al Layout.
+     */
+    public FAlignDialog(LayoutPanel layout) {
+        super();
+        m_layout = layout;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(null);
+
+        EventsFAlign listener = new EventsFAlign(m_layout);
+        this.add(getBleft(), null);
+        this.add(getBcenterV(), null);
+        this.add(getBright(), null);
+        this.add(getBup(), null);
+        this.add(getBcenterH(), null);
+        this.add(getBdown(), null);
+        this.add(getBdistUp(), null);
+        this.add(getLAlineamiento(), null);
+        this.add(getLDistribuir(), null);
+        this.add(getBdistcenterV(), null);
+        this.add(getBdistDown(), null);
+        this.add(getBdistLeft(), null);
+        this.add(getBdistcenterH(), null);
+        this.add(getBdistRight(), null);
+        this.add(getLTamano(), null);
+        this.add(getBsizecenterV(), null);
+        this.add(getBsizecenterH(), null);
+        this.add(getBsizeother(), null);
+        this.add(getBspaceRight(), null);
+        this.add(getBspaceDown(), null);
+        this.add(getLEspacio(), null);
+        this.add(getLEnElMapa(), null);
+        this.add(getBinLayout(), null);
+        this.setSize(310, 190);
+        getBleft().addActionListener(listener);
+        getBleft().setActionCommand("LEFT");
+        getBcenterV().addActionListener(listener);
+        getBcenterV().setActionCommand("CENTERV");
+        getBright().addActionListener(listener);
+        getBright().setActionCommand("RIGHT");
+        getBup().addActionListener(listener);
+        getBup().setActionCommand("UP");
+        getBcenterH().addActionListener(listener);
+        getBcenterH().setActionCommand("CENTERH");
+        getBdown().addActionListener(listener);
+        getBdown().setActionCommand("DOWN");
+        getBdistUp().addActionListener(listener);
+        getBdistUp().setActionCommand("DISTUP");
+        getBdistcenterV().addActionListener(listener);
+        getBdistcenterV().setActionCommand("DISTCENTERV");
+        getBdistDown().addActionListener(listener);
+        getBdistDown().setActionCommand("DISTDOWN");
+        getBdistLeft().addActionListener(listener);
+        getBdistLeft().setActionCommand("DISTLEFT");
+        getBdistcenterH().addActionListener(listener);
+        getBdistcenterH().setActionCommand("DISTCENTERH");
+        getBdistRight().addActionListener(listener);
+        getBdistRight().setActionCommand("DISTRIGHT");
+        getBsizecenterV().addActionListener(listener);
+        getBsizecenterV().setActionCommand("SIZECENTERV");
+        getBsizecenterH().addActionListener(listener);
+        getBsizecenterH().setActionCommand("SIZECENTERH");
+        getBsizeother().addActionListener(listener);
+        getBsizeother().setActionCommand("SIZEOTHER");
+        getBspaceRight().addActionListener(listener);
+        getBspaceRight().setActionCommand("SPACERIGHT");
+        getBspaceDown().addActionListener(listener);
+        getBspaceDown().setActionCommand("SPACEDOWN");
+        getBinLayout().addActionListener(listener);
+        getBinLayout().setActionCommand("INLAYOUT");
+    }
+
+    /**
+     * This method initializes bleft
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBleft() {
+        if (bleft == null) {
+            bleft = new javax.swing.JButton();
+            bleft.setSize(24, 24);
+            bleft.setIcon(ileft);
+            bleft.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_a_la_izquierda"));
+            bleft.setLocation(10, 30);
+            bleft.setPreferredSize(new java.awt.Dimension(30, 30));
+        }
+
+        return bleft;
+    }
+
+    /**
+     * This method initializes bcenterV
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBcenterV() {
+        if (bcenterV == null) {
+            bcenterV = new javax.swing.JButton();
+            bcenterV.setSize(24, 24);
+            bcenterV.setIcon(icenterV);
+            bcenterV.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_al_centro_por_el_eje_x"));
+            bcenterV.setLocation(35, 30);
+            bcenterV.setPreferredSize(new java.awt.Dimension(39, 20));
+        }
+
+        return bcenterV;
+    }
+
+    /**
+     * This method initializes bright
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBright() {
+        if (bright == null) {
+            bright = new javax.swing.JButton();
+            bright.setSize(24, 24);
+            bright.setIcon(iright);
+            bright.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_a_la_derecha"));
+            bright.setLocation(60, 30);
+        }
+
+        return bright;
+    }
+
+    /**
+     * This method initializes bup
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBup() {
+        if (bup == null) {
+            bup = new javax.swing.JButton();
+            bup.setSize(24, 24);
+            bup.setIcon(iup);
+            bup.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_hacia_arriba"));
+            bup.setLocation(100, 30);
+        }
+
+        return bup;
+    }
+
+    /**
+     * This method initializes bcenterH
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBcenterH() {
+        if (bcenterH == null) {
+            bcenterH = new javax.swing.JButton();
+            bcenterH.setSize(24, 24);
+            bcenterH.setIcon(icenterH);
+            bcenterH.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_al_centro_por_el_eje_y"));
+            bcenterH.setLocation(125, 30);
+        }
+
+        return bcenterH;
+    }
+
+    /**
+     * This method initializes bdown
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdown() {
+        if (bdown == null) {
+            bdown = new javax.swing.JButton();
+            bdown.setSize(24, 24);
+            bdown.setIcon(idown);
+            bdown.setToolTipText(PluginServices.getText(this,
+                "desplaza_los_elementos_seleccionados_hacia_abajo"));
+            bdown.setLocation(150, 30);
+        }
+
+        return bdown;
+    }
+
+    /**
+     * This method initializes bdistUp
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistUp() {
+        if (bdistUp == null) {
+            bdistUp = new javax.swing.JButton();
+            bdistUp.setSize(24, 24);
+            bdistUp.setIcon(idistUp);
+            bdistUp
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_de_arriba_hacia_abajo"));
+            bdistUp.setLocation(100, 73);
+        }
+
+        return bdistUp;
+    }
+
+    /**
+     * This method initializes lAlineamiento
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLAlineamiento() {
+        if (lAlineamiento == null) {
+            lAlineamiento = new javax.swing.JLabel();
+            lAlineamiento.setSize(107, 13);
+            lAlineamiento.setText(PluginServices.getText(this, "alineamiento"));
+            lAlineamiento.setLocation(10, 10);
+        }
+
+        return lAlineamiento;
+    }
+
+    /**
+     * This method initializes lDistribuir
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLDistribuir() {
+        if (lDistribuir == null) {
+            lDistribuir = new javax.swing.JLabel();
+            lDistribuir.setBounds(10, 57, 107, 13);
+            lDistribuir.setText(PluginServices.getText(this, "distribuir"));
+        }
+
+        return lDistribuir;
+    }
+
+    /**
+     * This method initializes bdistcenterV
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistcenterV() {
+        if (bdistcenterV == null) {
+            bdistcenterV = new javax.swing.JButton();
+            bdistcenterV.setSize(24, 24);
+            bdistcenterV.setIcon(idistCenterH);
+            bdistcenterV
+                .setToolTipText(PluginServices
+                    .getText(this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_y_vertical"));
+            bdistcenterV.setLocation(125, 73);
+        }
+
+        return bdistcenterV;
+    }
+
+    /**
+     * This method initializes bdistDown
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistDown() {
+        if (bdistDown == null) {
+            bdistDown = new javax.swing.JButton();
+            bdistDown.setSize(24, 24);
+            bdistDown.setIcon(idistDown);
+            bdistDown
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_de_abajo_hacia_arriba"));
+            bdistDown.setLocation(150, 73);
+        }
+
+        return bdistDown;
+    }
+
+    /**
+     * This method initializes bdistLeft
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistLeft() {
+        if (bdistLeft == null) {
+            bdistLeft = new javax.swing.JButton();
+            bdistLeft.setSize(24, 24);
+            bdistLeft.setIcon(idistLeft);
+            bdistLeft
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_de_izquierda_a_derecha"));
+            bdistLeft.setLocation(10, 73);
+        }
+
+        return bdistLeft;
+    }
+
+    /**
+     * This method initializes bdistcenterH
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistcenterH() {
+        if (bdistcenterH == null) {
+            bdistcenterH = new javax.swing.JButton();
+            bdistcenterH.setSize(24, 24);
+            bdistcenterH.setIcon(idistCenterV);
+            bdistcenterH
+                .setToolTipText(PluginServices
+                    .getText(this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_y_horizontal"));
+            bdistcenterH.setLocation(35, 73);
+        }
+
+        return bdistcenterH;
+    }
+
+    /**
+     * This method initializes bdistRight
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBdistRight() {
+        if (bdistRight == null) {
+            bdistRight = new javax.swing.JButton();
+            bdistRight.setIcon(idistRight);
+            bdistRight
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "distribuye_los_elementos_seleccionados_de_forma_equidistante_de_derecha_a_izquierda"));
+            bdistRight.setBounds(60, 73, 24, 24);
+        }
+
+        return bdistRight;
+    }
+
+    /**
+     * This method initializes lTamano
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLTamano() {
+        if (lTamano == null) {
+            lTamano = new javax.swing.JLabel();
+            lTamano.setBounds(10, 101, 107, 13);
+            lTamano.setText(PluginServices.getText(this, "coincidir_tamanyo"));
+        }
+
+        return lTamano;
+    }
+
+    /**
+     * This method initializes bsizecenterV
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBsizecenterV() {
+        if (bsizecenterV == null) {
+            bsizecenterV = new javax.swing.JButton();
+            bsizecenterV.setIcon(isizeWidth);
+            bsizecenterV
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "cambiar_el_ancho_de_los_elementos_seleccionados_hasta_coincidir_con_el_mas_ancho"));
+            bsizecenterV.setBounds(10, 115, 24, 24);
+        }
+
+        return bsizecenterV;
+    }
+
+    /**
+     * This method initializes bsizecenterH
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBsizecenterH() {
+        if (bsizecenterH == null) {
+            bsizecenterH = new javax.swing.JButton();
+            bsizecenterH.setIcon(isizeHeight);
+            bsizecenterH
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "cambiar_el_alto_de_los_elementos_seleccionados_hasta_coincidir_con_el_mas_alto"));
+            bsizecenterH.setBounds(35, 115, 24, 24);
+        }
+
+        return bsizecenterH;
+    }
+
+    /**
+     * This method initializes bsizeother
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBsizeother() {
+        if (bsizeother == null) {
+            bsizeother = new javax.swing.JButton();
+            bsizeother.setIcon(isizeOther);
+            bsizeother
+                .setToolTipText(PluginServices
+                    .getText(
+                        this,
+                        "cambiar_el_tamano_de_los_elementos_seleccionados_hasta_coincidir_con_el_mas_grande"));
+            bsizeother.setBounds(60, 115, 24, 24);
+        }
+
+        return bsizeother;
+    }
+
+    /**
+     * This method initializes bspaceRight
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBspaceRight() {
+        if (bspaceRight == null) {
+            bspaceRight = new javax.swing.JButton();
+            bspaceRight.setIcon(ispaceRight);
+            bspaceRight.setToolTipText(PluginServices.getText(this,
+                "distribuye_el_espacio_entre_los_elementos_en_horizontal"));
+            bspaceRight.setBounds(125, 115, 24, 24);
+        }
+
+        return bspaceRight;
+    }
+
+    /**
+     * This method initializes bspaceDown
+     * 
+     * @return javax.swing.JButton
+     */
+    private javax.swing.JButton getBspaceDown() {
+        if (bspaceDown == null) {
+            bspaceDown = new javax.swing.JButton();
+            bspaceDown.setIcon(ispaceDown);
+            bspaceDown.setToolTipText(PluginServices.getText(this,
+                "distribuye_el_espacio_entre_los_elementos_en_vertical"));
+            bspaceDown.setBounds(150, 115, 24, 24);
+        }
+
+        return bspaceDown;
+    }
+
+    /**
+     * This method initializes lEspacio
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLEspacio() {
+        if (lEspacio == null) {
+            lEspacio = new javax.swing.JLabel();
+            lEspacio.setBounds(125, 100, 57, 15);
+            lEspacio.setText(PluginServices.getText(this, "espacio"));
+        }
+
+        return lEspacio;
+    }
+
+    /**
+     * This method initializes lEnElMapa
+     * 
+     * @return javax.swing.JLabel
+     */
+    private javax.swing.JLabel getLEnElMapa() {
+        if (lEnElMapa == null) {
+            lEnElMapa = new javax.swing.JLabel();
+            lEnElMapa.setBounds(187, 33, 77, 17);
+            lEnElMapa.setText(PluginServices.getText(this, "en_el_mapa"));
+        }
+
+        return lEnElMapa;
+    }
+
+    /**
+     * This method initializes binLayout
+     * 
+     * @return javax.swing.JButton
+     */
+    private JToggleButton getBinLayout() {
+        if (binLayout == null) {
+            binLayout = new JToggleButton();
+            binLayout.setIcon(iinLayout);
+            binLayout.setToolTipText(PluginServices.getText(this,
+                "distribuir_elementos_sobre_todo_el_layout"));
+            binLayout.setBounds(199, 58, 51, 41);
+        }
+
+        return binLayout;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.SingletonWindow#getWindowModel()
+     */
+    public Object getWindowModel() {
+        return "AlignDialog";
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        WindowInfo m_viewinfo =
+            new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.PALETTE);
+        m_viewinfo.setTitle(PluginServices.getText(this, "alinear"));
+
+        return m_viewinfo;
+    }
+
+    /**
+     * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+     */
+    public void viewActivated() {
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.PROPERTIES_PROFILE;
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui/dialogs
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/gui
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutGraphics.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutGraphics.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutGraphics.java	(revision 590)
@@ -0,0 +1,344 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameDialogNotification;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameViewDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FAlignDialog;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FBorderDialog;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FPositionDialog;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Operaciones realizadas sobre el conjunto de FFrames.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FLayoutGraphics {
+
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(FLayoutGraphics.class);
+    private LayoutPanel layout;
+    private FAlignDialog m_alignLayout = null;
+    private FBorderDialog borderdialog = null;
+    private FPositionDialog positiondialog = null;
+    private LayoutManager layoutManager = null;
+
+    /**
+     * Crea un nuevo FLayoutGraphics.
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public FLayoutGraphics(LayoutPanel layoutPanel) {
+        layout = layoutPanel;
+        layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+    }
+
+    /**
+     * Transforma un FFrameLegend a FFrames de tipo FFrameSymbol y FFrameText.
+     */
+    public void simplify() {
+        layout.getLayoutContext().getFrameCommandsRecord()
+            .startComplex(PluginServices.getText(this, "simplify"));
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+
+            if (fframe instanceof FFrameLegend) {
+                if (fframe.getSelected() != IFFrame.NOSELECT) {
+                    ((FFrameLegend) fframe)
+                        .toFFrames(layout.getLayoutContext());
+                }
+            }
+        }
+        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Agrupar en un FFrameGroup todos los FFrames seleccionados.
+     */
+    public void grouping() {
+        // Se debe controlar de alguna forma si hay varios seleccionados.
+        FFrameGroup fframegroup =
+            (FFrameGroup) layoutManager
+                .createFrame(FFrameGroup.PERSISTENCE_DEFINITION_NAME);
+
+        // fframegroup.setLayout(layout);
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        if (fframes.length > 1) {
+            ArrayList selecList = new ArrayList();
+
+            for (int i = fframes.length - 1; i >= 0; i--) {
+                IFFrame fframe = fframes[i];
+
+                if (fframe.getSelected() != IFFrame.NOSELECT) {
+                    selecList.add(fframe);
+                    layout.getLayoutContext().delFFrame(fframe);
+                }
+            }
+
+            for (int i = selecList.size() - 1; i >= 0; i--) {
+                fframegroup.addFFrame((IFFrame) selecList.get(i));
+            }
+
+            fframegroup.setAt(layout.getLayoutControl().getAT());
+
+            Rectangle2D.Double rd =
+                fframegroup.getRectangle(layout.getLayoutControl().getAT());
+
+            Rectangle2D.Double rd1 =
+                FLayoutUtilities.toSheetRect(rd, layout.getLayoutControl()
+                    .getAT());
+
+            fframegroup.setBoundBox(rd1);
+            fframegroup.setSelected(true);
+            layout.getLayoutContext().addFFrame(fframegroup, true, true);
+            layout.getLayoutControl().refresh();
+        }
+    }
+
+    /**
+     * Desagrupar los FFrames que estan contenidos dentro del FFrameGroup en
+     * FFrames individuales.
+     */
+    public void ungrouping() {
+        layout.getLayoutContext().getFrameCommandsRecord()
+            .startComplex(PluginServices.getText(this, "ungroup"));
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                if (fframe instanceof FFrameGroup) {
+                    FFrameGroup fframegroup = (FFrameGroup) fframe;
+                    ArrayList selecList = new ArrayList();
+
+                    for (int j = fframegroup.getFFrames().length - 1; j >= 0; j--) {
+                        selecList.add(fframegroup.getFFrames()[j]);
+                    }
+
+                    for (int j = selecList.size() - 1; j >= 0; j--) {
+                        IFFrame frame = (IFFrame) selecList.get(j);
+                        frame.setRotation(frame.getRotation()
+                            + fframe.getRotation());
+                        layout.getLayoutContext()
+                            .addFFrameSameProperties(frame);
+                    }
+                    layout.getLayoutContext().delFFrame(fframegroup);
+                }
+            }
+        }
+        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Abre el di�logo para alinear los FFrames.
+     */
+    public void aligning() {
+        m_alignLayout = new FAlignDialog(layout);
+        PluginServices.getMDIManager().addWindow(m_alignLayout);
+    }
+
+    /**
+     * Posiciona los FFrames seleccionados delante de los no seleccionados.
+     */
+    public void before() {
+        layout.getLayoutContext().getFrameCommandsRecord()
+            .startComplex(PluginServices.getText(this, "change_before"));
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                if (fframe instanceof FFrameGroup) {
+                    ((FFrameGroup) fframe).setAt(layout.getLayoutControl()
+                        .getAT());
+                }
+
+                IFFrame fframeAux;
+                try {
+                    fframeAux = (IFFrame) fframe.clone();
+                    fframeAux
+                        .setLevel(layout.getLayoutContext().getNumBefore());
+                    layout.getLayoutContext().getFrameCommandsRecord()
+                        .update(fframe, fframeAux);
+                    fframeAux.getBoundingBox(layout.getLayoutControl().getAT());
+                } catch (CloneNotSupportedException e) {
+                    LOG.error("It is not possible clonate the object", e);
+                }
+            }
+        }
+        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+        layout.getLayoutContext().updateFFrames();
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Posiciona los FFrames seleccionados detr�s de los FFrames no
+     * seleccionados.
+     */
+    public void behind() {
+        layout.getLayoutContext().getFrameCommandsRecord()
+            .startComplex(PluginServices.getText(this, "change_behind"));
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                if (fframe instanceof FFrameGroup) {
+                    ((FFrameGroup) fframe).setAt(layout.getLayoutControl()
+                        .getAT());
+                }
+
+                IFFrame fframeAux;
+                try {
+                    fframeAux = (IFFrame) fframe.clone();
+                    fframeAux
+                        .setLevel(layout.getLayoutContext().getNumBehind());
+                    layout.getLayoutContext().getFrameCommandsRecord()
+                        .update(fframe, fframeAux);
+                    fframeAux.getBoundingBox(layout.getLayoutControl().getAT());
+                } catch (CloneNotSupportedException e) {
+                    LOG.error("It is not possible clonate the object", e);
+                }
+            }
+        }
+        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+        layout.getLayoutContext().updateFFrames();
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Abre el di�logo adecuadao a las propiedades del FFrame seleccionado,
+     * ahora mismo solo se abre cuando hay un solo FFrame seleccionado.
+     */
+    public void openFrameDialog(final Observer observer) {
+        IFFrame[] selecList = layout.getLayoutContext().getSelectedFFrames();
+
+        if (selecList.length == 1) {
+            final IFFrame frame = selecList[0];
+            final IFFrameDialog fframeDialog = layout.createFFrameDialog(frame);
+            if (fframeDialog != null) {
+            	Observer onPanelClosedObserver = new Observer() {
+					public void update(Observable observable,
+							Object notification) {
+						if (notification instanceof FFrameDialogNotification &&
+							((FFrameDialogNotification)notification).getType()==FFrameDialogNotification.DIALOG_CLOSED) {
+							onDialogClosed(fframeDialog, frame, observer);
+						}
+					}
+            	};
+            	fframeDialog.addObserver(onPanelClosedObserver);
+            	if (observer!=null) {
+            		fframeDialog.addObserver(observer);
+            	}
+                PluginServices.getMDIManager().addWindow(fframeDialog);
+            }
+        }
+    }
+    
+    public void openFrameDialog() {
+    	openFrameDialog(null);
+    }
+    
+    /**
+     * @Deprecated Use {@link #openFrameDialog()}
+     * 			 and {@link #openFrameDialog(Observer)}
+     * @return
+     */
+    @Deprecated
+    public boolean openFFrameDialog() {
+    	openFrameDialog(null);
+    	return true;
+    }
+    
+    protected void onDialogClosed(IFFrameDialog dialog, IFFrame oldFrame, Observer observer) {
+    	IFFrame fframeAux = dialog.getFFrame();
+    	if (fframeAux != null) {
+    		// if user has pressed cancel, then fframeAux is null 
+    		if (fframeAux instanceof IFFrameUseFMap)
+    			((IFFrameUseFMap) fframeAux).refresh();
+    		layout.getLayoutContext().getFrameCommandsRecord()
+    		.update(oldFrame, fframeAux);
+    		fframeAux.getBoundingBox(layout.getLayoutControl().getAT());
+    		layout.getLayoutContext().updateFFrames();
+    		layout.getLayoutControl().setIsReSel(true);
+    		layout.getLayoutControl().refresh();
+    		if (observer!=null) {
+    			observer.update(dialog, new FFrameDialogNotification(FFrameDialogNotification.FRAME_CREATED));
+    		}
+    	}
+    }
+
+
+    /**
+     * Selecci�n de todos los FFrames del Layout.
+     */
+    public void selecAll() {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+            fframe.setSelected(true);
+        }
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Abre el di�logo para a�adir un borde a los fframes.
+     */
+    public boolean border() {
+        borderdialog = new FBorderDialog(layout);
+        PluginServices.getMDIManager().addWindow(borderdialog);
+        return borderdialog.isAccepted();
+    }
+
+    /**
+     * Abre el di�logo de cambio de posici�n y tama�o del FFrame.
+     */
+    public void position() {
+
+        IFFrame[] fframes = layout.getLayoutContext().getSelectedFFrames();
+        if (fframes.length != 0) {
+            for (int i = 0; i < fframes.length; i++) {
+                positiondialog = new FPositionDialog(layout, fframes[i]);
+                PluginServices.getMDIManager().addWindow(positiondialog);
+            }
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/toc/TocModelObserver.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/toc/TocModelObserver.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/toc/TocModelObserver.java	(revision 590)
@@ -0,0 +1,8 @@
+package org.gvsig.app.project.documents.layout.toc;
+
+import org.gvsig.app.project.documents.layout.TocModelChangedNotification;
+
+
+public interface TocModelObserver {
+	public void tocUpdated(Object observable, TocModelChangedNotification notification);
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutManager.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutManager.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutManager.java	(revision 590)
@@ -0,0 +1,73 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.geom.AffineTransform;
+
+import org.gvsig.app.project.documents.DocumentManager;
+import org.gvsig.app.project.documents.layout.fframes.FrameFactory;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.IContextMenuAction;
+
+/**
+ * @author gvSIG Team
+ * @version $Id: LayoutManager.java 34861 2011-03-31 11:31:50Z nfrancisco $
+ * 
+ */
+public interface LayoutManager extends DocumentManager {
+    public static String TYPENAME = "project.document.layout";
+    public static final String TEMPLATE_FILE_POINTEXT = ".gvslt";
+
+    public IFFrame createFrame(String frameName);
+
+    public IFFrameDialog createFFrameDialog(IFFrame fframe,
+        LayoutPanel layoutPanel, AffineTransform affineTransform);
+
+    public IFFrameDialog createFFrameDialog(IFFrame fframe,
+        LayoutPanel layoutPanel);
+    
+    public void registerFFrameDialog(String name, Class clazz);
+    
+    /**
+     * Registers in the points of extension the Factory with alias.
+     * 
+     * @param frameFactory
+     *            FrameFactory to register.
+     * @param alias
+     *            Alias.
+     */
+    public void registerFrameFactory(FrameFactory frameFactory, String alias);
+    
+    /**
+     * Registers in the points of extension the Factory
+     * 
+     * @param frameFactory
+     *            FrameFactory to register.
+     */
+    public void registerFrameFactory(FrameFactory frameFactory);
+    
+    public void registerLayoutMenuAction(String name, Class<? extends IContextMenuAction> clazz);
+    
+    public IContextMenuAction[] createLayoutMenuActions(LayoutPanel layoutPanel);
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/CustomizableObserverHelper.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/CustomizableObserverHelper.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/CustomizableObserverHelper.java	(revision 590)
@@ -0,0 +1,43 @@
+package org.gvsig.app.project.documents.layout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.gvsig.tools.observer.Observable;
+
+/**
+ * The goal of this class is to be extended internally by a 
+ * class wishing to manage specific listeners.
+ * 
+ * @author Cesar Martinez
+ */
+public abstract class CustomizableObserverHelper {
+
+	private List listeners = new ArrayList();
+	
+	public synchronized void addObserver(Object o) {
+		if( this.listeners.contains(o) ) {
+			return;
+		}
+		this.listeners.add(o);
+	}
+
+	public synchronized void deleteObserver(Object o) {
+		this.listeners.remove(o);
+	}
+
+	public synchronized void deleteObservers() {
+		this.listeners = new ArrayList();
+	}
+
+	public synchronized void notifyObservers(Object observable, Object data) {
+		for(int i =0; i<this.listeners.size(); i++ ) {
+			Object o = (Object) this.listeners.get(i);
+			doNotify(o, data);
+		}
+
+	}
+	
+	protected abstract void doNotify(Object listener, Object data);
+}
+
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Size.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Size.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Size.java	(revision 590)
@@ -0,0 +1,117 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.Persistent;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * Clase que almacena la altura y anchura de un folio.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class Size implements Persistent {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "Size";
+    private static final String HEIGHT_FIELD = "height";
+    private static final String WIDTH_FIELD = "width";
+
+    private double alto;
+    private double ancho;
+
+    public Size() {
+
+    }
+
+    /**
+     * Creates a new Size object.
+     * 
+     * @param al
+     *            Altura
+     * @param an
+     *            Anchura
+     */
+    public Size(double al, double an) {
+        alto = al;
+        ancho = an;
+    }
+
+    /**
+     * Gets the height of the sheet, measured in centimeters.
+     * 
+     * @return Height.
+     */
+    public double getHeight() {
+        return alto;
+    }
+
+    /**
+     * Gets the width of the sheet, measured in centimeters.
+     * 
+     * @return Width of the sheet.
+     */
+    public double getWidth() {
+        return ancho;
+    }
+    
+    /**
+     * @deprecated Use {@link #getWidth()} instead
+     */
+    @Deprecated
+    public double getAncho() {
+    	return getWidth();
+    }
+    /**
+     * @deprecated Use {@link #getHeight()} instead
+     */
+    @Deprecated
+    public double getAlto() {
+    	return getHeight();
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(Size.class, PERSISTENCE_DEFINITION_NAME,
+                    "Size persistence definition", null, null);
+
+            definition.addDynFieldDouble(HEIGHT_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(WIDTH_FIELD).setMandatory(true);
+        }
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        alto = state.getDouble(HEIGHT_FIELD);
+        ancho = state.getDouble(WIDTH_FIELD);
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(HEIGHT_FIELD, alto);
+        state.set(WIDTH_FIELD, ancho);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutZooms.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutZooms.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutZooms.java	(revision 590)
@@ -0,0 +1,522 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Toolkit;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.prefs.Preferences;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.compat.CompatLocator;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Clase encargada de realizar los zooms al Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FLayoutZooms implements Observable{
+
+    private static final GeometryManager geomManager = GeometryLocator
+        .getGeometryManager();
+    private static final Logger logger = LoggerFactory
+        .getLogger(FLayoutZooms.class);
+    private LayoutPanel layout = null;
+    private ObservableHelper observers;
+    
+    public FLayoutZooms(LayoutPanel layoutPanel) {
+        layout = layoutPanel;
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+    }
+
+    /**
+     * Realiza un zoom por rect�ngulo o por punto con un escalado por defecto
+     * sobre el Layout que se le pasa como par�metro.
+     * 
+     * @param p1
+     *            punto de inicio del rect�ngulo.
+     * @param p2
+     *            punto final del rec�ngulo.
+     */
+    public void setZoomIn(Point p1, Point p2) {
+        if (java.lang.Math.abs(layout.getLayoutControl().getFirstPoint().x
+            - p2.x) < 4) {
+            double difw = 2;
+            setZoom(difw, p2);
+        } else {
+            if (p1.getX() > p2.getX()) {
+                int aux = p2.x;
+                p2.x = p1.x;
+                p1.x = aux;
+            }
+
+            if (p1.getY() > p2.getY()) {
+                int aux = p2.y;
+                p2.y = p1.y;
+                p1.y = aux;
+            }
+
+            Point2D.Double pSheet1 =
+                FLayoutUtilities.toSheetPoint(
+                    new Point2D.Double(p1.getX(), p1.getY()), layout
+                        .getLayoutControl().getAT());
+            Point2D.Double pSheet2 =
+                FLayoutUtilities.toSheetPoint(
+                    new Point2D.Double(p2.getX(), p2.getY()), layout
+                        .getLayoutControl().getAT());
+
+            double xmin;
+            double xmax;
+            double ymin;
+            double ymax = 0;
+
+            if (pSheet1.x > pSheet2.x) {
+                xmin = pSheet2.x;
+                xmax = pSheet1.x;
+            } else {
+                xmin = pSheet1.x;
+                xmax = pSheet2.x;
+            }
+
+            if (pSheet1.y > pSheet2.y) {
+                ymin = pSheet2.y;
+                ymax = pSheet1.y;
+            } else {
+                ymin = pSheet1.y;
+                ymax = pSheet2.y;
+            }
+
+            Rectangle2D.Double rScreen = new Rectangle2D.Double();
+            Rectangle2D.Double rSheet = new Rectangle2D.Double();
+            double x =
+                FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getX(), layout.getLayoutControl().getAT());
+            double y =
+                FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getY(), layout.getLayoutControl().getAT());
+            double w =
+                FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getWidth(), layout.getLayoutControl().getAT());
+            double h =
+                FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getHeight(), layout.getLayoutControl().getAT());
+
+            double wv =
+                FLayoutUtilities.toSheetDistance(layout.getVisibleRect()
+                    .getWidth(), layout.getLayoutControl().getAT());
+            double hv =
+                FLayoutUtilities.toSheetDistance(layout.getVisibleRect()
+                    .getHeight(), layout.getLayoutControl().getAT());
+            double mw = xmax - xmin;
+            double mh = ymax - ymin;
+            double difw = wv / mw;
+            double difh = hv / mh;
+
+            if (difw < difh) {
+                rSheet.x =
+                    (-xmin * difw)
+                        - x
+                        + ((wv - ((pSheet2.getX() - pSheet1.getX()) * difw)) / 2);
+                rSheet.y =
+                    (-ymin * difw)
+                        - y
+                        + ((hv - ((pSheet2.getY() - pSheet1.getY()) * difw)) / 2);
+
+                rSheet.width = w * difw;
+                rSheet.height = h * difw;
+            } else {
+                rSheet.x =
+                    (-xmin * difh)
+                        - x
+                        + ((wv - ((pSheet2.getX() - pSheet1.getX()) * difh)) / 2);
+                rSheet.y =
+                    (-ymin * difh)
+                        - y
+                        + ((hv - ((pSheet2.getY() - pSheet1.getY()) * difh)) / 2);
+
+                rSheet.width = w * difh;
+                rSheet.height = h * difh;
+            }
+            setPointsToZoom(p1, p2);
+            rScreen.setRect(FLayoutUtilities.fromSheetRect(rSheet, layout
+                .getLayoutControl().getAT()));
+            if (FLayoutUtilities.isPosible(rScreen)) {
+                layout.getLayoutControl().setRect(rScreen);
+            }
+        }
+    }
+
+    /**
+     * Realiza un zoom out sobre el Layout que se le pasa como par�metro.
+     * 
+     * @param p2
+     *            punto central del rect�ngulo.
+     */
+    public void setZoomOut(Point p2) {
+        double difw = 0.5;
+        setZoom(difw, p2);
+    }
+
+    /**
+     * Realiza un zoom out sobre el Layout que se le pasa como par�metro.
+     * 
+     * @param dif
+     *            factor.
+     * @param p2
+     *            punto final del rec�ngulo.
+     */
+    public void setZoom(double dif, Point p2) {
+        Point2D.Double pSheet2 =
+            FLayoutUtilities.toSheetPoint(
+                new Point2D.Double(p2.getX(), p2.getY()), layout
+                    .getLayoutControl().getAT());
+        Rectangle2D.Double rScreen = new Rectangle2D.Double();
+        Rectangle2D.Double rSheet = new Rectangle2D.Double();
+
+        double difw = dif;
+
+        rSheet.x =
+            (-pSheet2.getX() * difw)
+                - FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getX(), layout.getLayoutControl().getAT())
+                + FLayoutUtilities.toSheetDistance(layout.getWidth() / 2,
+                    layout.getLayoutControl().getAT());
+        rSheet.y =
+            (-pSheet2.getY() * difw)
+                - FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                    .getRect().getY(), layout.getLayoutControl().getAT())
+                + FLayoutUtilities.toSheetDistance(layout.getHeight() / 2,
+                    layout.getLayoutControl().getAT());
+
+        rSheet.width =
+            FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                .getRect().getWidth(), layout.getLayoutControl().getAT())
+                * difw;
+        rSheet.height =
+            FLayoutUtilities.toSheetDistance(layout.getLayoutControl()
+                .getRect().getHeight(), layout.getLayoutControl().getAT())
+                * difw;
+
+        rScreen.setRect(FLayoutUtilities.fromSheetRect(rSheet, layout
+            .getLayoutControl().getAT()));
+
+        if (FLayoutUtilities.isPosible(rScreen)) {
+            layout.getLayoutControl().setRect(rScreen);
+        }
+
+        // Para realizar el zoom a partir de un punto.
+        Point p1 =
+            new Point((int) (p2.getX() - (layout.getWidth() / (difw * 2))),
+                (int) (p2.getY() - (layout.getHeight() / (difw * 2))));
+        p2 =
+            new Point((int) (p2.getX() + (layout.getWidth() / (difw * 2))),
+                (int) (p2.getY() + (layout.getHeight() / (difw * 2))));
+        setPointsToZoom(p1, p2);
+    }
+
+    /**
+     * Introduce los puntos de control para controlar el zoom del Layout.
+     */
+    private void setPointsToZoom(Point p1, Point p2) {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+                if (fframe.getATMap() != null) {
+                    
+                    Point2D vppo1 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                        p1, fframes[i]);
+                    Point2D vppo2 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                        p2, fframes[i]);
+                    
+                    Point2D px1 =
+                        FLayoutFunctions.toMapPoint(vppo1, fframe.getATMap());
+                    Point2D px2 =
+                        FLayoutFunctions.toMapPoint(vppo2, fframe.getATMap());
+                    fframe.setPointsToZoom(px1, px2);
+                }
+            }
+        }
+    }
+
+    /**
+     * Aplica el zoom real teniendo en cuenta la resoluci�n de pantalla.
+     */
+    public void realZoom() {
+        double cm =
+            layout.getLayoutContext().getAttributes()
+                .getPixXCm(layout.getLayoutControl().getRect());
+        double dpi = CompatLocator.getGraphicsUtils().getScreenDPI();
+        double dif = (cm * Attributes.PULGADA) / dpi;
+        setZoom(1 / dif, new Point(layout.getWidth() / 2,
+            layout.getHeight() / 2));
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Realiza un zoom in a partir del zoom actual de la vista.
+     */
+    public void zoomIn() {
+        setZoom(2, new Point(layout.getWidth() / 2, layout.getHeight() / 2));
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Realiza un zoom out a partir del zoom actual de la vista.
+     */
+    public void zoomOut() {
+        setZoom(0.5, new Point(layout.getWidth() / 2, layout.getHeight() / 2));
+        layout.getLayoutControl().refresh();
+    }
+
+    /**
+     * Realiza un zoom a los elementos que esten seleccionados, si no hay
+     * ning�n elemento seleccionado no realiza ning�n zoom
+     */
+    public void zoomSelect() {
+        Rectangle2D.Double recaux = null;
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i].getSelected() != IFFrame.NOSELECT) {
+                if (recaux == null) {
+                    recaux =
+                        fframes[i].getBoundingBox(layout.getLayoutControl()
+                            .getAT());
+                } else {
+                    recaux.add(fframes[i].getBoundingBox(layout
+                        .getLayoutControl().getAT()));
+                }
+            }
+        }
+
+        if (recaux != null) {
+            Point p1 = new Point((int) recaux.x, (int) recaux.y);
+            Point p2 =
+                new Point((int) recaux.getMaxX(), (int) recaux.getMaxY());
+            setZoomIn(p1, p2);
+            layout.getLayoutControl().refresh();
+        }
+    }
+
+    /**
+     * Realiza un zoom a todos los elementos del layout.
+     */
+    public void zoomAllFrames() {
+        Rectangle2D.Double recaux = null;
+        IFFrame[] fframes =
+            layout.getLayoutControl().getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (recaux == null) {
+                recaux =
+                    fframes[i]
+                        .getBoundingBox(layout.getLayoutControl().getAT());
+            } else {
+                recaux.add(fframes[i].getBoundingBox(layout.getLayoutControl()
+                    .getAT()));
+            }
+        }
+
+        if (recaux != null) {
+            Point p1 = new Point((int) recaux.x, (int) recaux.y);
+            Point p2 =
+                new Point((int) recaux.getMaxX(), (int) recaux.getMaxY());
+            setZoomIn(p1, p2);
+            layout.getLayoutControl().refresh();
+        }
+    }
+
+    /**
+     * Realiza un zoom in a las vista a�adidas al Layout que esten seleccionadas
+     * 
+     * @param p1
+     *            Punto inicial del rect�ngulo
+     * @param p2
+     *            Punto final del rect�ngulo
+     */
+    public void setViewZoomIn(Point2D poi1, Point2D poi2) {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+
+                if (fframe.isSelected() && fframe.getMapContext()!=null) {
+                    
+                    Point2D vppo1 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                        poi1, fframes[i]);
+                    Point2D vppo2 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                        poi2, fframes[i]);
+                    
+                    Point2D.Double mapp1 = FLayoutFunctions.toMapPoint(vppo1, fframe.getATMap());
+                    Point2D.Double mapp2 = FLayoutFunctions.toMapPoint(vppo2, fframe.getATMap());
+
+                    Rectangle2D.Double r = new Rectangle2D.Double();
+
+                    if (java.lang.Math.abs(poi1.getX() - poi2.getX()) <= 3) {
+                        double nuevoX;
+                        double nuevoY;
+                        double cX;
+                        double cY;
+
+                        cX = mapp2.getX();
+                        cY = mapp2.getY();
+
+                        double factor = 1 / MapContext.ZOOMINFACTOR;
+
+                        Rectangle2D extent =
+                            fframe.getMapContext().getViewPort().getExtent();
+                        if (extent != null) {
+                            nuevoX = cX - ((extent.getWidth() * factor) / 2.0);
+                            nuevoY = cY - ((extent.getHeight() * factor) / 2.0);
+                            r.x = nuevoX;
+                            r.y = nuevoY;
+                            r.width = extent.getWidth() * factor;
+                            r.height = extent.getHeight() * factor;
+                        }
+                    } else {
+                        // Fijamos el nuevo extent
+                        r.setFrameFromDiagonal(mapp1, mapp2);
+                    }
+                    try {
+                        fframe.setNewEnvelope(geomManager.createEnvelope(
+                            r.getX(), r.getY(), r.getMaxX(), r.getMaxY(),
+                            SUBTYPES.GEOM2D));
+                    } catch (CreateEnvelopeException e) {
+                        logger.error("Error creating the envelope", e);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Realiza un zoom out a las vistas a�adidas al Layout y que est�n
+     * seleccionadas
+     * 
+     * @param p2
+     *            Punto central
+     */
+    public void setViewZoomOut(Point p2) {
+        Point2D.Double pWorld;
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+
+                if (fframe.isSelected() && fframe.getMapContext()!=null) {
+
+                    double nuevoX;
+                    double nuevoY;
+                    double cX;
+                    double cY;
+                    Point pScreen = new Point((int) p2.getX(), (int) p2.getY());
+                    
+                    Point2D vppo1 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                        pScreen, fframes[i]);
+                    
+                    pWorld = FLayoutFunctions.toMapPoint(vppo1, fframe.getATMap());
+
+                    cX = pWorld.getX();
+                    cY = pWorld.getY();
+
+                    double factor = 1 / MapContext.ZOOMOUTFACTOR;
+                    Rectangle2D extent =
+                        fframe.getMapContext().getViewPort().getExtent();
+                    if (extent != null) {
+                        nuevoX = cX - ((extent.getWidth() * factor) / 2.0);
+                        nuevoY = cY - ((extent.getHeight() * factor) / 2.0);
+                        double x = nuevoX;
+                        double y = nuevoY;
+                        double width = extent.getWidth() * factor;
+                        double height = extent.getHeight() * factor;
+                        try {
+                            fframe.setNewEnvelope(geomManager.createEnvelope(x,
+                                y, x + width, y + height, SUBTYPES.GEOM2D));
+                        } catch (CreateEnvelopeException e) {
+                            logger.error("Error creating the envelope", e);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Modifica los puntos de control para generar el zoom del Layout
+     * 
+     * @param p1
+     *            Punto inicial
+     * @param p2
+     *            Punto final
+     */
+    public void setPan(Point p1, Point p2) {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+                if (fframe.getMapContext()!=null) {
+                	AffineTransform at = fframe.getATMap();
+                	if (at != null) {
+
+                		Point2D vppo1 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                				p1, fframes[i]);
+                		Point2D vppo2 = FLayoutUtilities.screenCoordinatesToViewportImageCoordinates(
+                				p2, fframes[i]);
+
+                		Point2D px1 = FLayoutFunctions.toMapPoint(vppo1, at);
+                		Point2D px2 = FLayoutFunctions.toMapPoint(vppo2, at);
+                		fframe.movePoints(px1, px2);
+                	}
+                }
+            }
+        }
+    }
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutFunctions.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutFunctions.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutFunctions.java	(revision 590)
@@ -0,0 +1,319 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.print.PageFormat;
+
+import org.gvsig.app.project.documents.layout.commands.FrameCommandsRecord;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Funciones utilizadas desde el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FLayoutFunctions implements Observable {
+
+    protected static final Logger LOG = LoggerFactory
+        .getLogger(FLayoutFunctions.class);
+    private static final GeometryManager geomManager = GeometryLocator
+        .getGeometryManager();
+    private static final Logger logger = LoggerFactory
+        .getLogger(FLayoutFunctions.class);
+    
+    private LayoutPanel layout = null;
+    private ObservableHelper observers;
+    /**
+     * Crea un nuevo FLayoutFunctions.
+     * 
+     * @param l
+     *            Referencia al Layout.
+     */
+    public FLayoutFunctions(LayoutPanel layoutPanel) {
+        layout = layoutPanel;
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+    }
+
+    /**
+     * Gestiona la herramienta de selecci�n sobre el Mapa.
+     */
+    public void setSelect() {
+        IFFrame fframe = null;
+        boolean isUpdate = false;
+        layout.getLayoutContext().updateFFrames();
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        FrameCommandsRecord efs =
+            layout.getLayoutContext().getFrameCommandsRecord();
+        efs.startComplex("move");
+        for (int i = 0; i < fframes.length; i++) {
+            fframe = fframes[i];
+
+            int difx =
+                (layout.getLayoutControl().getLastPoint().x - layout
+                    .getLayoutControl().getFirstPoint().x);
+            int dify =
+                (layout.getLayoutControl().getLastPoint().y - layout
+                    .getLayoutControl().getFirstPoint().y);
+
+            if (((Math.abs(difx) > 3) || (Math.abs(dify) > 3))
+                && (fframe.getSelected() != IFFrame.NOSELECT)) {
+                Rectangle2D rectangle = fframe.getLastMoveRect();
+                if (rectangle == null) {
+                    efs.endComplex();
+                    return;
+                }
+  
+                if (fframe instanceof FFrameGroup) {
+                    ((FFrameGroup) fframe).setAt(layout.getLayoutControl()
+                        .getAT());
+                }
+
+                IFFrame fframeAux;
+                try {
+                    fframeAux = (IFFrame) fframe.clone();
+                    fframeAux.setBoundBox(FLayoutUtilities.toSheetRect(
+                        rectangle, layout.getLayoutControl().getAT()));
+                    efs.update(fframe, fframeAux);
+                    fframeAux.getBoundingBox(layout.getLayoutControl().getAT());
+
+                    isUpdate = true;
+                } catch (CloneNotSupportedException e) {
+                    LOG.error("It is not possible clonate the object", e);
+                }
+
+            }
+            Rectangle rect = null;
+            if (layout.getLayoutControl().getReSel() == null) {
+                rect = new Rectangle();
+                rect.setFrameFromDiagonal(layout.getLayoutControl()
+                    .getFirstPoint(), layout.getLayoutControl().getLastPoint());
+            } else {
+                rect = layout.getLayoutControl().getReSel();
+            }
+            if (layout.getLayoutControl().isReSel()
+                && (rect.contains(fframe.getBoundingBox(layout
+                    .getLayoutControl().getAT())))) {
+                fframe.setSelected(true);
+            }
+
+            if (isUpdate) {
+                observers.notifyObservers(this, 
+                    new DefaultLayoutNotification(LayoutNotification.LAYOUT_INVALIDATED));
+            } else {
+                observers.notifyObservers(this, 
+                    new DefaultLayoutNotification(LayoutNotification.LAYOUT_VALIDATED));
+            }
+        }
+        efs.endComplex();
+        layout.getLayoutContext().updateFFrames();
+    }
+
+    /**
+     * Pan sobre la vista del FFrameView.
+     * 
+     * @param p1
+     *            Punto inicial del desplazamiento.
+     * @param p2
+     *            Punto final del desplazamiento.
+     */
+    public void setViewPan(Point p1, Point p2) {
+        IFFrame[] fframes = layout.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+
+                if (((IFFrame) fframe).getSelected() != IFFrame.NOSELECT) {
+                    if (fframe.getATMap() != null) {
+                        Rectangle2D.Double r = new Rectangle2D.Double();
+                        Envelope envel =
+                            // fframe.getMapContext().getViewPort().getExtent();
+                            fframe.getMapContext().getViewPort().getEnvelope();
+                        
+                        if (envel != null) {
+                            double visible_factor = screenPixelToViewPortPixelRatio(
+                                layout,
+                                ((IFFrame) fframe).getBoundBox().getHeight(),
+                                fframe.getMapContext().getViewPort().getImageHeight());
+
+                            Point p1scaled = new Point(
+                                (int) (visible_factor * p1.getX()),
+                                (int) (visible_factor * p1.getY()));
+                            Point p2scaled = new Point(
+                                (int) (visible_factor * p2.getX()),
+                                (int) (visible_factor * p2.getY()));
+                            
+                            Point2D mp1 = toMapPoint(p1scaled, fframe.getATMap());
+                            Point2D mp2 = toMapPoint(p2scaled, fframe.getATMap());
+                            double x =
+                                envel.getMinimum(0) - (mp2.getX() - mp1.getX());
+                            double y =
+                                envel.getMinimum(1) - (mp2.getY() - mp1.getY());
+                            double width = envel.getLength(0);
+                            double height = envel.getLength(1);
+                            try {
+                                fframe
+                                    .getMapContext()
+                                    .getViewPort()
+                                    .setEnvelope(
+                                        geomManager.createEnvelope(x, y, x
+                                            + width, y + height,
+                                            SUBTYPES.GEOM2D));
+                            } catch (CreateEnvelopeException e) {
+                                logger.error("Error creating the envelope", e);
+                            }
+                            fframe.refresh();
+                            if (fframe.getExtentSynced()) {
+                                fframe.refreshOriginalExtent();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void setScale(long scale) {
+    	IFFrameUseFMap[] selectedFrames = layout.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+    	if (selectedFrames.length==1) {
+    		IFFrameUseFMap fframe = (IFFrameUseFMap) selectedFrames[0];
+    		fframe.setScale(scale);
+    		// FIXME CMI: needed?? fframe.refresh();
+    	}
+    }
+
+    public void addLayer() {
+    	
+    }
+    
+    /**
+     * Devuelve un punto real a partir de un punto en pixels sobre la vista.
+     * 
+     * @param pScreen
+     *            Punto en pixels.
+     * @param at1
+     *            Matriz de transformaci�n.
+     * 
+     * @return Punto real.
+     */
+    public static Point2D.Double toMapPoint(Point2D pScreen, AffineTransform at1) {
+        Point2D.Double pWorld = new Point2D.Double();
+
+        AffineTransform at;
+
+        try {
+            at = at1.createInverse();
+            at.transform(pScreen, pWorld);
+        } catch (NoninvertibleTransformException e) {
+            // throw new RuntimeException(e);
+        }
+
+        return pWorld;
+    }
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+    
+    /**
+     * Gets the proportion between the number of pixels used
+     * on the screen (physical pixels) and the "logical" pixels
+     * used in the viewport of a frame (imageHeight, etc).
+     * 
+     * For example if viewport image height is 500
+     * and the frame actually needs 100 pixels in height
+     * (due to zooming) then this method returns 5.
+     *  
+     * @param lyt_panel
+     * @param frame_height_cm frame height in cm
+     * @param frame_vp_img_height frame viewport image height (pixels)
+     * @return
+     */
+    public static double screenPixelToViewPortPixelRatio(
+        LayoutPanel lyt_panel, double frame_height_cm, int frame_vp_img_height) {
+        
+        double sheet_height_screen_pix = lyt_panel.getLayoutControl().getRect().getHeight();
+        int ori = lyt_panel.getLayoutContext().getAttributes().getPageFormat().getOrientation();
+        double paper_h_i72 = 0;
+        
+        /*
+         * Javadoc says getPageFormat().getWidth()(getHeight()
+         * take into account orientation
+         * but apparently it's not like that
+         */
+        if (ori == PageFormat.LANDSCAPE || ori == PageFormat.REVERSE_LANDSCAPE) {
+            paper_h_i72 = lyt_panel.getLayoutContext().getAttributes().getPageFormat().getWidth();
+        } else {
+            paper_h_i72 = lyt_panel.getLayoutContext().getAttributes().getPageFormat().getHeight();
+        }
+        
+        /*
+         * page format uses old unit (inch/72)
+         */
+        double paper_h_cm = (2.54 / 72.0) * paper_h_i72;
+        double frame_part = frame_height_cm / paper_h_cm;
+        double pixels_fview_screen_h = sheet_height_screen_pix * frame_part;   
+        double pixels_fview_vp_h = 1.0 * frame_vp_img_height;
+        return pixels_fview_vp_h / pixels_fview_screen_h;
+    }
+    
+
+    public static String getLastMessage(Throwable ex) {
+        
+        if (ex == null) {
+            return "[null]";
+        }
+        
+        Throwable p = ex;
+        while (p.getCause() != null && p.getCause() != p) {
+            p = p.getCause();
+        }
+        return p.getMessage();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutDocument.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutDocument.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutDocument.java	(revision 590)
@@ -0,0 +1,43 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.util.Iterator;
+import org.gvsig.app.project.documents.Document;
+
+/**
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface LayoutDocument extends Document {
+
+    public LayoutContext getLayoutContext();
+   
+    /**
+     * Get an Iterator over al elements in the layout.
+     * 
+     * @return 
+     */
+    public Iterator deepiterator();
+
+    public Iterator iterator();
+    
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutManager.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutManager.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutManager.java	(revision 590)
@@ -0,0 +1,453 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.geom.AffineTransform;
+import java.lang.reflect.Array;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.ImageIcon;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.gui.preferencespage.PreferenceKeys;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.AbstractDocument;
+import org.gvsig.app.project.documents.AbstractDocumentManager;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.actions.CopyDocumentAction;
+import org.gvsig.app.project.documents.actions.CutDocumentAction;
+import org.gvsig.app.project.documents.actions.PasteDocumentAction;
+import org.gvsig.app.project.documents.gui.WindowLayout;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.AbstractLayoutContextMenuAction;
+import org.gvsig.app.project.documents.layout.fframes.FrameFactory;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.app.project.documents.layout.gui.DefaultLayoutPanel;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanelImpl;
+import org.gvsig.app.project.documents.layout.gui.MapProperties;
+import org.gvsig.app.project.documents.layout.gui.dialogs.FConfigLayoutDialog;
+import org.gvsig.app.project.documents.view.IContextMenuAction;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.utils.XMLEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Factory of maps.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class DefaultLayoutManager extends AbstractDocumentManager implements
+    LayoutManager {
+    static final Logger LOG = LoggerFactory
+        .getLogger(DefaultLayoutManager.class);
+
+    static final String KEY_LAYOUT_FFRAMEDIALOG =
+        "app.project.documents.layout.fframes.gui";
+    static final String KEY_LAYOUT_FFRAME =
+        "app.project.documents.layout.fframes";
+
+    public static final String PERSISTENCE_LAYOUT_DOCUMENT_DEFINITION_NAME =
+        "LayoutDocument";
+    
+    private static final String LAYOUT_CONTEXT_MENUS = "Layout_ContextMenus";
+
+    ExtensionPointManager extensionPoints = ToolsLocator
+        .getExtensionPointManager();
+
+    private Boolean defaultShowGrid = null;
+    private Boolean defaultAdjustToGrid = null;
+    private Boolean defaultShowRulers = null;
+
+    private DynStruct persistenceDefinition;
+
+    /**
+     * Returns image of button.
+     * 
+     * @return Image button.
+     */
+    public ImageIcon getIcon() {
+    	return ToolsSwingLocator.getIconThemeManager().getCurrent().get("document-map-icon");
+    }
+
+    /**
+     * Returns image of selected button.
+     * 
+     * @return Image button.
+     */
+    public ImageIcon getIconSelected() {
+        return ToolsSwingLocator.getIconThemeManager().getCurrent().get("document-map-icon-sel");
+    }
+
+    /**
+     * Returns the name of registration in the point of extension.
+     * 
+     * @return Name of registration
+     */
+    public String getTypeName() {
+        return TYPENAME;
+    }
+
+    /**
+     * Returns the name of ProjectDocument.
+     * 
+     * @return Name of ProjectDocument.
+     */
+    public String getTitle() {
+        return PluginServices.getText(this, "Mapa");
+    }
+
+    public AbstractDocument createDocument() {
+        return new DefaultLayoutDocument(this);
+    }
+
+    public Class getMainWindowClass() {
+        return LayoutPanelImpl.class;
+    }
+
+    public IWindow getMainWindow(Document doc, WindowLayout layout) {
+        LayoutPanel layoutPanel = (LayoutPanel) super.getMainWindow(doc, layout);
+        if (layoutPanel == null) {
+            layoutPanel = (LayoutPanel) this.createDocumentWindow(doc);
+            if (layout != null) {
+                layoutPanel.setWindowLayout(layout);
+                layoutPanel.setLayoutManager(this);
+                layoutPanel.getLayoutControl().fullRect();
+                layoutPanel.getWindowInfo().setTitle(
+                        PluginServices.getText(this, "Mapa") + " : "
+                        + layoutPanel.getName());
+            }
+        }
+        ((AbstractDocument) doc).raiseEventCreateWindow(layoutPanel);
+        return layoutPanel;
+    }
+
+    public IFFrameDialog createFFrameDialog(IFFrame fframe,
+        LayoutPanel layoutPanel, AffineTransform affineTransform) {
+        ExtensionPoint ep = extensionPoints.add(KEY_LAYOUT_FFRAMEDIALOG);
+
+        try {
+            Object[] args = new Object[2];
+            args[0] = layoutPanel;
+            args[1] = fframe;
+            Object obj = ep.create(fframe.getName(), args);
+            if (obj != null) {
+                IFFrameDialog fframedialog = (IFFrameDialog) obj;
+                fframedialog.setRectangle(fframe
+                    .getBoundingBox(affineTransform));
+                return fframedialog;
+            }
+        } catch (Exception e) {
+            LOG.error("Error creating a FFrameDialog", e);
+        }
+        return null;
+    }
+
+    public IFFrameDialog createFFrameDialog(IFFrame fframe,
+        LayoutPanel layoutPanel) {
+        return createFFrameDialog(fframe, layoutPanel, layoutPanel
+            .getLayoutControl().getAT());
+    }
+
+    public void registerFrameFactory(FrameFactory frameFactory, String alias) {
+        ExtensionPoint ep =
+            ToolsLocator.getExtensionPointManager().add(KEY_LAYOUT_FFRAME);
+        ep.append(frameFactory.getRegisterName(), "", frameFactory);
+        if (alias != null) {
+            ep.addAlias(frameFactory.getRegisterName(), alias);
+        }
+    }
+
+    public void registerFrameFactory(FrameFactory frameFactory) {
+        registerFrameFactory(frameFactory, null);
+    }
+
+    @SuppressWarnings("unchecked")
+    public IFFrame createFrame(String frameName) {
+
+        Iterator<Extension> iterator =
+            ToolsLocator.getExtensionPointManager().get(KEY_LAYOUT_FFRAME)
+                .iterator();
+        while (iterator.hasNext()) {
+            try {
+                FrameFactory frameFactory =
+                    (FrameFactory) iterator.next().create();
+                if (frameFactory.getRegisterName().equals(frameName)) {
+                    IFFrame frame = frameFactory.createFrame();
+                    if (frame == null) {
+                        return null;
+                    }
+                    frame.setFrameFactory(frameFactory);
+                    return frame;
+                }
+            } catch (Exception e) {
+                NotificationManager.addError(e);
+            }
+        }
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    public void registerFFrameDialog(String name, Class clazz) {
+        if (!IFFrameDialog.class.isAssignableFrom(clazz)) {
+            throw new IllegalArgumentException(clazz.getName()
+                + " must implement the IFFrameDialog interface");
+        }
+        ExtensionPoint extensionPoint =
+            extensionPoints.add(KEY_LAYOUT_FFRAMEDIALOG, "");
+        extensionPoint.append(name, name, clazz);
+    }
+
+    @Override
+    public IWindow getPropertiesWindow(Document doc) {
+        IWindow win = super.getPropertiesWindow(doc);
+        if( win == null ) {
+            win = new MapProperties((LayoutDocument) doc);
+        }
+        return win;
+    }
+
+    /**
+     * Registers in the points of extension the Factory with alias.
+     * 
+     */
+    public static void register() {
+        DefaultLayoutManager factory = new DefaultLayoutManager();
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        manager.registerFactory(factory);
+
+        ProjectManager.getInstance().registerDocumentFactory(factory);
+        
+        ProjectManager.getInstance().registerDocumentAction(TYPENAME,new CopyDocumentAction());
+        ProjectManager.getInstance().registerDocumentAction(TYPENAME,new CutDocumentAction());
+        ProjectManager.getInstance().registerDocumentAction(TYPENAME,new PasteDocumentAction());
+
+
+        if (factory.persistenceDefinition == null) {
+            factory.persistenceDefinition =
+                manager.addDefinition(LayoutDocument.class,
+                    PERSISTENCE_LAYOUT_DOCUMENT_DEFINITION_NAME,
+                    "Layout document Persistence definition", null, null);
+            factory.persistenceDefinition.extend(manager
+                .getDefinition(AbstractDocument.PERSISTENCE_DEFINITION_NAME));
+
+            factory.persistenceDefinition
+                .addDynFieldObject(DefaultLayoutDocument.LAYOUT_CONTEXT_OBJECT)
+                .setClassOfValue(LayoutContext.class).setMandatory(false);
+
+            DefaultLayoutPanel.registerPersistent();
+            DefaultLayoutContext.registerPersistent();
+        }
+    }
+
+    public int getPriority() {
+        return 2;
+    }
+
+    /**
+     * Sets whether the grid should be shown.
+     * 
+     * @param showGrid
+     */
+    public void setDefaultShowGrid(boolean showGrid) {
+        defaultShowGrid = new Boolean(showGrid);
+    }
+
+    /**
+     * Sets whether the snapping to grid should be enabled or not
+     * 
+     * @param gridEnable
+     */
+    public void setDefaultAdjustToGrid(boolean gridEnabled) {
+        defaultAdjustToGrid = new Boolean(gridEnabled);
+    }
+
+    /**
+     * Sets whether the ruler should be shown or not
+     * 
+     * @param showRuler
+     */
+    public void setDefaultShowRulers(boolean showRules) {
+        defaultShowRulers = new Boolean(showRules);
+    }
+
+    /**
+     * Returns if the grid should be shown.
+     * 
+     * @return True if the grid should be shown.
+     */
+    public boolean getDefaultShowGrid() {
+        if (defaultShowGrid == null) {
+        	XMLEntity xml = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+            if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME)) {
+                defaultShowGrid =
+                    new Boolean(xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_GRID_KEY_NAME));
+            } else {
+                defaultShowGrid = new Boolean(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_SHOW);
+            }
+        }
+        return defaultShowGrid.booleanValue();
+    }
+
+    /**
+     * Returns if the adjust to grid should be active.
+     * 
+     * @return True if the adjust to grid should be active.
+     */
+    public boolean getDefaultAdjustToGrid() {
+        if (defaultAdjustToGrid == null) {
+        	XMLEntity xml = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+            if (xml.contains(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME)) {
+                defaultAdjustToGrid =
+                    new Boolean(
+                        xml.getBooleanProperty(PreferenceKeys.DEFAULT_ENABLE_LAYOUT_GRID_KEY_NAME));
+            } else {
+                defaultAdjustToGrid = new Boolean(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_GRID_ENABLE);
+            }
+        }
+        return defaultAdjustToGrid.booleanValue();
+    }
+
+    /**
+     * Returns if the ruler should be shown.
+     * 
+     * @return True if the ruler should be shown.
+     */
+    public boolean getDefaultShowRulers() {
+        if (defaultShowRulers == null) {
+        	XMLEntity xml = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+            if (xml.contains(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME)) {
+                defaultShowRulers =
+                    new Boolean(
+                        xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_LAYOUT_RULERS_KEY_NAME));
+            } else {
+                defaultShowRulers = new Boolean(PreferenceKeys.FACTORY_DEFAULT_LAYOUT_ENABLE_RULERS);
+            }
+        }
+        return defaultShowRulers.booleanValue();
+    }
+
+    public boolean getDefaultShowInitialPageConfigDialog() {
+    	XMLEntity xml = PluginsLocator.getManager().getPlugin(this).getPersistentXML();
+    	boolean value;
+        if (xml.contains(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME)) {
+            value = xml.getBooleanProperty(PreferenceKeys.DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_KEY_NAME);
+        } else {
+        	value = PreferenceKeys.FACTORY_DEFAULT_SHOW_INITIAL_CONFIG_DIALOG_FOR_LAYOUT;
+        }
+        return value;
+    }
+
+    public DynStruct getDefinition(String className) {
+
+        if (this.persistenceDefinition.getName().equalsIgnoreCase(className)) {
+            return this.persistenceDefinition;
+        }
+        if (this.persistenceDefinition.getFullName()
+            .equalsIgnoreCase(className)) {
+            return this.persistenceDefinition;
+        }
+        if (this.getDocumentClass().getName().equals(className)) {
+            return this.persistenceDefinition;
+        }
+        return null;
+    }
+
+    @SuppressWarnings("unchecked")
+    protected Class getDocumentClass() {
+        return DefaultLayoutDocument.class;
+    }
+
+    public boolean manages(Object object) {
+        return object instanceof LayoutDocument;
+    }
+
+    public void registerLayoutMenuAction(String name,
+        Class<? extends IContextMenuAction> clazz) {
+        ExtensionPoint extensionPoint =
+            ToolsLocator.getExtensionPointManager().add(LAYOUT_CONTEXT_MENUS);
+        extensionPoint.append(name, "", clazz);
+    }
+
+    public IContextMenuAction[] createLayoutMenuActions(LayoutPanel layoutPanel) {
+        List<IContextMenuAction> actionArrayList =
+            new ArrayList<IContextMenuAction>();
+        @SuppressWarnings("unchecked")
+        Iterator<ExtensionPoint.Extension> iter =
+            ToolsLocator.getExtensionPointManager().get(LAYOUT_CONTEXT_MENUS).iterator();
+        AbstractLayoutContextMenuAction action;
+        while (iter.hasNext()) {
+            action = null;
+            try {
+                action = (AbstractLayoutContextMenuAction) iter.next().create();
+            } catch (InstantiationException e) {
+                LOG.error("Error creating the context menu", e);
+            } catch (IllegalAccessException e) {
+                LOG.error("Error creating the context menu", e);
+            }
+            if (action != null) {
+                action.setLayout(layoutPanel);
+                if (action.isVisible(null, layoutPanel.getLayoutContext().getSelectedFFrames())) {
+                    actionArrayList.add(action);
+                }
+            }
+        }
+        IContextMenuAction[] result =
+            (IContextMenuAction[]) Array.newInstance(IContextMenuAction.class,
+                actionArrayList.size());
+        System.arraycopy(actionArrayList.toArray(), 0, result, 0,
+            actionArrayList.size());
+        Arrays.sort(result, new CompareAction());
+        return result;
+    }
+    
+    private class CompareAction implements Comparator<IContextMenuAction> {
+
+        public int compare(IContextMenuAction o1, IContextMenuAction o2) {
+            NumberFormat formater = NumberFormat.getInstance();
+            formater.setMinimumIntegerDigits(3);
+            String key1 =
+                "" + formater.format(o1.getGroupOrder()) + o1.getGroup()
+                    + formater.format(o1.getOrder());
+            String key2 =
+                "" + formater.format(o2.getGroupOrder()) + o2.getGroup()
+                    + formater.format(o2.getOrder());
+            return key1.compareTo(key2);
+        }
+    }    
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutControl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutControl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutControl.java	(revision 590)
@@ -0,0 +1,353 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import javax.swing.JComponent;
+
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutBehavior;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface LayoutControl extends Observer {
+
+    /**
+     * <p>Returns a copy of the rectangle that represents the size
+     * and position of the layout sheet (in pixels), relative to
+     * the containing LayoutControl.</p>
+     * 
+     * <p>Note: you must use {@link #setRect(Rectangle2D)} to update
+     * the rectangle, as this method only returns a copy of it.</p>
+     * @return Rectangle2D.Double Rectangle that represents the sheet.
+     * @see LayoutControl#setRect(Rectangle2D)
+     */
+    public Rectangle2D.Double getRect();
+
+    /**
+     * <p>Sets the size and position of the layout sheet in screen coordinates
+     * (pixels), relative to the LayoutControl.</p>
+     * 
+     * <p>The size of the sheet is usually different from the
+     * bounds of the underlying UI control, for instance if we have zoomed in
+     * an area of the sheet then the paper size in pixels will be bigger than
+     * the actual control size.</p>
+     * 
+     */
+    public void setRect(Rectangle2D r);
+    
+    /**
+     * Returns the name of the current selected tool on this Layout
+     * 
+     * @return A tool name.
+     */
+    public String getCurrentTool();
+
+    /**
+     * Add a new Layout tool.
+     * 
+     * @param name
+     *            Name of tool.
+     * @param tool
+     *            LayoutBehavior
+     */
+    public void addLayoutTool(String name, LayoutBehavior tool);
+
+    /**
+     * Inserts the LayoutContext.
+     * 
+     * @param lc
+     *            LayoutContext.
+     */
+    public void setLayoutContext(LayoutContext lc);
+
+    /**
+     * Returns the image with the ruler.
+     * 
+     * @return Ruler image.
+     */
+    public BufferedImage getImgRuler();
+
+    /**
+     * It obtains the rect that is adjusted to the size of the window,
+     * to see the full extent of layout.
+     */
+    public void fullRect();
+
+    /**
+     * Returns the current image of Layout.
+     * 
+     * @return Current image of Layout.
+     */
+    public BufferedImage getImage();
+
+    /**
+     * Changes the pointer of the mouse by the image of parameter.
+     * 
+     * @param image
+     *            Image
+     */
+    public void setMapCursor(Image image);
+
+    /**
+     * It establishes as selected to the tool from its name of identification.
+     * 
+     * @param toolName
+     *            Name of identification tool.
+     */
+    public void setTool(String toolName);
+    
+    /**
+     * Changes the currently selected tool to the default tool
+     */
+    public void setDefaultTool();
+
+    /**
+     * Start the vertex edition of graphics.
+     * 
+     */
+    public void startEdit();
+
+    /**
+     * Stop the vertex edition of graphics.
+     * 
+     */
+    public void stopEdit();
+
+    /**
+     * It returns the point that represents the northwest corner of the Layout.
+     * 
+     * @return Point.
+     */
+    public Point getRectOrigin();
+
+    /**
+     * Returns the object to draw the Layout.
+     * 
+     * @return FLayoutDraw.
+     */
+    public FLayoutDraw getLayoutDraw();
+
+    /**
+     * Returns the current Layout tool.
+     * 
+     * @return LayoutBehavior Current Layout Tool.
+     */
+    public LayoutBehavior getCurrentLayoutTool();
+
+    /**
+     * It returns the first click point of mouse.
+     * 
+     * @return Point.
+     */
+    public Point getFirstPoint();
+
+    /**
+     * Returns the previous click of mouse.
+     * 
+     * @return Point.
+     */
+    public Point getPointAnt();
+
+    /**
+     * Returns the last click point of mouse.
+     * 
+     * @return Point.
+     */
+    public Point getLastPoint();
+
+    /**
+     * Inserts the first click point of mouse.
+     * 
+     * @param p
+     *            Point.
+     */
+    public void setFirstPoint();
+
+    /**
+     * Inserts the previous click point of mouse.
+     * 
+     * @param p
+     *            Point.
+     */
+    public void setPointAnt();
+
+    /**
+     * Inserts the last click point of mouse.
+     * 
+     * @param p
+     *            Point.
+     */
+    public void setLastPoint();
+
+    /**
+     * Insert the position point and calculate the new position if the grid is
+     * actived.
+     * 
+     * @param point2
+     *            Position.
+     */
+    public void setPosition(Point point2);
+
+    /**
+     * Returns the position adjusted point.
+     * 
+     * @return
+     */
+    public Point getPosition();
+
+    /**
+     * Returns the AffineTransform that is applying in the Layout.
+     * 
+     * @return AffineTransform
+     */
+    public AffineTransform getAT();
+
+    /**
+     * It returns the current GeometryAdapter.
+     * 
+     * @return Current GeometryAdapter.
+     */
+    public GeometryAdapter getGeometryAdapter();
+
+    /**
+     * Remove last point of geometryAdapter.
+     * 
+     */
+    public void delLastPoint();
+
+    /**
+     * Add a new point to geometryAdapter.
+     * 
+     * @return Number of points in the geometryAdapter.
+     */
+    public int addGeometryAdapterPoint();
+
+    /**
+     * Change the position of mousemoved point of geometryAdapter.
+     */
+    public void setGeometryAdapterPoinPosition();
+
+    /**
+     * Clear the image of pointer of mouse.
+     */
+    public void clearMouseImage();
+
+    /**
+     * Refres the Layout.
+     */
+    public void refresh();
+
+    /**
+     * It returns true if the drawing has been canceled.
+     * 
+     * @return true if the drawn has been canceled.
+     */
+    public boolean isDrawingCancelled();
+
+    /**
+     * It cancels the drawing if the parameter is true.
+     * 
+     * @param b
+     *            true if the drawing wants to be canceled
+     */
+    public void setCancelDrawing(boolean b);
+
+    /**
+     * Returns the rectangle of selection.
+     * 
+     * @return Rectangle of selection.
+     */
+    public Rectangle getReSel();
+
+    /**
+     * It returns true if should draw the rectangle of selection and does the
+     * selection.
+     * 
+     * @return true if should draw the rectangle of selection.
+     */
+    public boolean isReSel();
+
+    /**
+     * Insert true if should draw the rectangle of selection and does the
+     * selection.
+     * 
+     * @param b
+     *            boolean.
+     */
+    public void setIsReSel(boolean b);
+
+    /**
+     * It does a full extent of the layers that contains the view of the
+     * FFrameView selected.
+     * 
+     * @throws ReadDriverException
+     */
+    public void viewFull() throws ReadException;
+
+    /**
+     * Returns the object to make zooms.
+     * 
+     * @return FLayoutZooms.
+     */
+    public FLayoutZooms getLayoutZooms();
+
+    /**
+     * Returns the object of FLayoutFunctions.
+     * 
+     * @return FLayoutFunctions
+     */
+    public FLayoutFunctions getLayoutFunctions();
+
+    /**
+     * Returns the LayoutContext.
+     * 
+     * @return LayoutContext.
+     */
+    public LayoutContext getLayoutContext();
+
+    /**
+     * Inserts the geometryAdapter.
+     * 
+     * @param adapter
+     *            GeometryAdapter.
+     */
+    public void setGeometryAdapter(GeometryAdapter adapter);
+
+    public JComponent getComponent();
+
+    public int getWidth();
+
+    public int getHeight();
+
+    public void repaint();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutUtilities.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutUtilities.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/FLayoutUtilities.java	(revision 590)
@@ -0,0 +1,386 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.cresques.cts.IProjection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+
+/**
+ * Clase que recoge m�todos est�ticos sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FLayoutUtilities {
+    
+    private static Logger logger = LoggerFactory.getLogger(
+        FLayoutUtilities.class);
+
+    /**
+     * Devuelve true si las dos ArrayList que se le pasan como parametro son
+     * iguales.
+     * 
+     * @param n
+     *            lista anterior
+     * @param l
+     *            lista actual
+     * 
+     * @return true si los ArrayList son iguales.
+     */
+    public static boolean isEqualList(ArrayList n, ArrayList l) {
+        if (n.size() != l.size()) {
+            return false;
+        }
+
+        for (int i = 0; i < n.size(); i++) {
+            if (l.get(i) != n.get(i)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Pasa una distancia en pixels a unidades del folio.
+     * 
+     * @param d
+     *            distancia en pixels.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return distancia en unidades de folio.
+     */
+    public static double toSheetDistance(double d, AffineTransform at) {
+        double dist = d / at.getScaleX(); // pProv.x;
+
+        return dist;
+    }
+
+    /**
+     * Pasa una distancia de coordenadas del folio a pixels.
+     * 
+     * @param d
+     *            distancia en coordenadas de folio.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return double en pixels.
+     */
+    public static double fromSheetDistance(double d, AffineTransform at) {
+        Point2D.Double pSheet1 = new Point2D.Double(0, 0);
+        Point2D.Double pSheet2 = new Point2D.Double(1, 0);
+        Point2D.Double pScreen1 = new Point2D.Double();
+        Point2D.Double pScreen2 = new Point2D.Double();
+
+        try {
+            at.transform(pSheet1, pScreen1);
+            at.transform(pSheet2, pScreen2);
+        } catch (Exception e) {
+            System.err.print(e.getMessage());
+        }
+
+        return pScreen1.distance(pScreen2) * d;
+    }
+
+    /**
+     * Pasa un punto en pixels a coordenadas del folio.
+     * 
+     * @param pScreen
+     *            pixels.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return Point2D en coordenadas de folio.
+     */
+    public static Point2D.Double toSheetPoint(Point2D pScreen,
+        AffineTransform at) {
+        Point2D.Double pWorld = new Point2D.Double();
+        AffineTransform at1;
+
+        try {
+            at1 = at.createInverse();
+            at1.transform(pScreen, pWorld);
+        } catch (NoninvertibleTransformException e) {
+        }
+
+        return pWorld;
+    }
+
+    /**
+     * Pasa un ret�ngulo de pixels a coordenadas del folio.
+     * 
+     * @param r
+     *            rect�ngulo en coordenadas de pixels a coordenadas de folio.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return Rectangle2D en coordenadas de folio.
+     */
+    public static Rectangle2D.Double toSheetRect(Rectangle2D r,
+        AffineTransform at) {
+        Point2D.Double pSheet =
+            toSheetPoint(new Point2D.Double(r.getX(), r.getY()), at);
+        Point2D.Double pSheetX =
+            toSheetPoint(new Point2D.Double(r.getMaxX(), r.getMinY()), at);
+        Point2D.Double pSheetY =
+            toSheetPoint(new Point2D.Double(r.getMinX(), r.getMaxY()), at);
+        Rectangle2D.Double res = new Rectangle2D.Double();
+        res.setRect(pSheet.getX(), pSheet.getY(), pSheet.distance(pSheetX),
+            pSheet.distance(pSheetY));
+
+        return res;
+    }
+
+    /**
+     * Pasa de un punto en coordenadas del folio a pixels.
+     * 
+     * @param pSheet
+     *            punto en coordenadas de folio.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return Point2D en pixels.
+     */
+    public static Point2D.Double fromSheetPoint(Point2D pSheet,
+        AffineTransform at) {
+        Point2D.Double pScreen = new Point2D.Double();
+
+        try {
+            at.transform(pSheet, pScreen);
+        } catch (Exception e) {
+            System.err.print(e.getMessage());
+        }
+
+        return pScreen;
+    }
+
+    /**
+     * Pasa un rect�ngulo en coordenadas del folio a pixels.
+     * 
+     * @param r
+     *            rect�ngulo en coordenadas de folio.
+     * @param at
+     *            Matriz de transformaci�n.
+     * 
+     * @return Rectangle2D en pixels.
+     */
+    public static Rectangle2D.Double fromSheetRect(Rectangle2D r,
+        AffineTransform at) {
+        Point2D.Double pSheet = new Point2D.Double(r.getX(), r.getY());
+        Point2D.Double pSX = new Point2D.Double(r.getMaxX(), r.getMinY());
+        Point2D.Double pSY = new Point2D.Double(r.getMinX(), r.getMaxY());
+        Point2D.Double pScreen = new Point2D.Double();
+        Point2D.Double pScreenX = new Point2D.Double();
+        Point2D.Double pScreenY = new Point2D.Double();
+
+        try {
+            at.transform(pSheet, pScreen);
+            at.transform(pSX, pScreenX);
+            at.transform(pSY, pScreenY);
+        } catch (Exception e) {
+            System.err.print(e.getMessage());
+        }
+
+        Rectangle2D.Double res = new Rectangle2D.Double();
+        res.setRect(pScreen.getX(), pScreen.getY(), pScreen.distance(pScreenX),
+            pScreen.distance(pScreenY));
+
+        return res;
+    }
+
+    /**
+     * Obtiene el punto ajustado al grid del layout.
+     * 
+     * @param p
+     *            Punto a ajustar.
+     * @param distX
+     *            Distancia m�nima en cm de X.
+     * @param distY
+     *            Distancia m�nima en cm de Y.
+     * @param at
+     *            Matriz de transformaci�n.
+     */
+    public static Point getPointGrid(Point p, double distX, double distY,
+        AffineTransform at) {
+        
+        if (distX * at.getScaleX() < 2 && distY * at.getScaleY() < 2) {
+            /*
+             * In this case, it makes no sense to care about snapping
+             * because snapping would mean to move the position by one pixel
+             */
+            return p;
+        }
+
+        Point2D.Double auxp =
+            FLayoutUtilities.fromSheetPoint(new Point2D.Double(0, 0), at);
+        
+        double gridintx = distX * at.getScaleX();
+        double gridinty = distY * at.getScaleY();
+        
+        double seppx = p.x - Math.round(auxp.x);
+        double seppy = p.y - Math.round(auxp.y);
+        
+        long round_int_p_x = Math.round(seppx / gridintx);
+        long round_int_p_y = Math.round(seppy / gridinty);
+        
+        // Rounded
+        seppx = round_int_p_x * gridintx;
+        seppy = round_int_p_y * gridinty;
+        
+        return new Point(
+            (int) (auxp.x + seppx),
+            (int) (auxp.y + seppy));
+    }
+
+    /**
+     * Cuando se dibuja sobre el graphics todo se tiene que situar en enteros y
+     * aqu� lo que se comprueba es que si los valores que contiene el
+     * Rectangle2D, que toma como par�metro, supera los valores soportados por
+     * un entero.
+     * 
+     * @param r
+     *            Rectangle2D a comprobar si los valores que contiene no superan
+     *            a los que puede tener un entero.
+     * 
+     * @return true si no se han superado los l�mites.
+     */
+    public static boolean isPosible(Rectangle2D.Double r) {
+        if ((r.getMaxX() > Integer.MAX_VALUE)
+            || (r.getMaxY() > Integer.MAX_VALUE)
+            || (r.getMinX() < Integer.MIN_VALUE)
+            || (r.getMinY() < Integer.MIN_VALUE)
+            || (r.getWidth() > Integer.MAX_VALUE)
+            || (r.getHeight() > Integer.MAX_VALUE)) {
+            return false;
+        }
+
+        return true;
+    }
+    
+    public static List<Document> removeEditing(List<Document> list) {
+        
+        List<Document> resp = new ArrayList<Document>();
+        
+        Document item = null;
+        ViewDocument viewdoc = null;
+        for (int i=0; i<list.size(); i++) {
+            item = list.get(i);
+            if (item instanceof ViewDocument) {
+                viewdoc = (ViewDocument) item;
+                if (!hasEditingLayers(viewdoc)) {
+                    resp.add(item);
+                }
+            }
+        }
+        return resp;
+    }
+    
+
+    public static boolean hasEditingLayers(ViewDocument viewdoc) {
+        return hasEditingLayers(viewdoc.getMapContext().getLayers());
+    }
+
+    /**
+     * Recursively find out if any layer is in editing mode
+     * 
+     * @param lyrs
+     * @return
+     */
+    public static boolean hasEditingLayers(FLayers lyrs) {
+        
+        int len = lyrs.getLayersCount();
+        FLayer lyr = null;
+        FLyrVect vlyr = null;
+        for (int i=0; i<len; i++) {
+            lyr = lyrs.getLayer(i);
+            if (lyr instanceof FLyrVect) {
+                vlyr = (FLyrVect) lyr;
+                if (vlyr.isEditing()) {
+                    return true;
+                }
+            } else {
+                if (lyr instanceof FLayers) {
+                    if (hasEditingLayers((FLayers) lyr)) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }    
+    
+    public static Point2D screenCoordinatesToViewportImageCoordinates(
+        Point2D screenp, IFFrame frame) {
+        
+        if (screenp == null || frame == null || !(frame instanceof IFFrameUseFMap)) {
+            
+            logger.info("Bad parameters in screenCoordinatesToViewportImageCoordinates",
+                new Exception("Null values or Frame has no MapContext"));
+            return screenp;
+        }
+
+        Rectangle2D.Double rect = frame.getBoundingBox(null);
+        
+        double screenRectWidth = rect.width;
+        double vpWidth = ((IFFrameUseFMap) frame).getMapContext().getViewPort().getImageWidth();
+        if (screenRectWidth < 1 || vpWidth < 1) {
+            logger.info("Bad size in screen/viewport ("
+                + "screenRectWidth = " + screenRectWidth + ", "
+                + "vpWidth = " + vpWidth + ")");
+            return screenp;
+        }
+        
+        /*
+         * Get coordinates in the rectangle (remove offset)
+         */
+        Point2D po = new Point2D.Double(
+            screenp.getX() - rect.x, screenp.getY() - rect.y);
+        
+        double ratio = (vpWidth * 1d) / (screenRectWidth * 1d);
+        Point2D resp = new Point2D.Double(ratio * po.getX(), ratio * po.getY());
+        return resp;
+    }
+    
+    
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewPanListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewPanListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewPanListenerImpl.java	(revision 590)
@@ -0,0 +1,104 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPanListener como herramienta para
+ * realizar el
+ * Pan.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutViewPanListenerImpl extends AbstractLayoutToolListener
+    implements LayoutMoveListener {
+
+    private final Image ipan = PluginServices.getIconTheme().get("view-pan-icon")
+        .getImage();
+
+    /**
+     * Crea un nuevo RectangleListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutViewPanListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return ipan;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        Point p1 = layoutPanel.getLayoutControl().getFirstPoint();
+        layoutPanel.getLayoutControl().setLastPoint();
+        layoutPanel.getLayoutControl().setPointAnt();
+        Point p2 = event.getEvent().getPoint();
+        layoutPanel.getLayoutControl().getLayoutFunctions().setViewPan(p1, p2);
+        layoutPanel.getLayoutControl().refresh();
+        PluginsLocator.getMainFrame().refreshControls();
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void click(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddCircleListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddCircleListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddCircleListenerImpl.java	(revision 590)
@@ -0,0 +1,97 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.CircleAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * un c�rculo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddCircleListenerImpl extends AbstractLayoutGraphicListener
+    implements LayoutPointListener {
+
+    public static final Image iCircle = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-circle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddCircleListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddCircleListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            if (layoutPanel.getLayoutControl().addGeometryAdapterPoint() == 2) {
+                endGraphic();
+            }
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iCircle;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+
+    }
+
+    @Override
+    public int getFFrameGraphicsType() {
+        return Geometry.TYPES.CIRCLE;
+    }
+
+    @Override
+    public GeometryAdapter createGeometryAdapter() {
+        return new CircleAdapter();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomInListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomInListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomInListenerImpl.java	(revision 590)
@@ -0,0 +1,87 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutRectangleListener;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar un zoom m�s.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutZoomInListenerImpl extends AbstractLayoutToolListener
+    implements LayoutRectangleListener {
+
+    private static final Image iLayoutzoomin = PluginServices.getIconTheme()
+        .get("cursor-layout-navigation-zoom-in-topoint").getImage();
+
+    /**
+     * Crea un nuevo LayoutRectangleListenerImpl.
+     * 
+     * @param s
+     *            Layout.
+     */
+    public LayoutZoomInListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.RectangleListener#rectangle(org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent)
+     */
+    public void rectangle(EnvelopeEvent event) {
+        if (event.getEvent().getButton() != MouseEvent.BUTTON3) {
+            layoutPanel.getLayoutControl().setLastPoint();
+        }
+
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            Point p1 = layoutPanel.getLayoutControl().getFirstPoint();
+            Point p2 =
+                new Point(event.getEvent().getX(), event.getEvent().getY());
+
+            layoutPanel.getLayoutControl().getLayoutZooms().setZoomIn(p1, p2);
+            layoutPanel.getLayoutControl().refresh();
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iLayoutzoomin;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomOutListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomOutListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutZoomOutListenerImpl.java	(revision 590)
@@ -0,0 +1,87 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutRectangleListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * un zoom menos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutZoomOutListenerImpl extends AbstractLayoutToolListener
+    implements LayoutRectangleListener {
+
+    private static final Image iLayoutzoomout = PluginServices.getIconTheme()
+        .get("cursor-layout-navigation-zoom-out-topoint").getImage();
+
+    /**
+     * Crea un nuevo LayoutZoomOutListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutZoomOutListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iLayoutzoomout;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void rectangle(EnvelopeEvent event) throws BehaviorException {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            Point p2 =
+                new Point(event.getEvent().getX(), event.getEvent().getY());
+            layoutPanel.getLayoutControl().getLayoutZooms().setZoomOut(p2);
+            layoutPanel.getLayoutControl().refresh();
+        }
+
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddRectangleListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddRectangleListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddRectangleListenerImpl.java	(revision 590)
@@ -0,0 +1,98 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.RectangleAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * un rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddRectangleListenerImpl extends
+    AbstractLayoutGraphicListener implements LayoutPointListener {
+
+    public static final Image iRectangle = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectagleListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddRectangleListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+                if (layoutPanel.getLayoutControl().addGeometryAdapterPoint() == 2) {
+                    endGraphic();
+                }
+            }
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iRectangle;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+
+    }
+
+    public GeometryAdapter createGeometryAdapter() {
+        return new RectangleAdapter();
+    }
+
+    @Override
+    public int getFFrameGraphicsType() {
+        return Geometry.TYPES.SURFACE;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutPanListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutPanListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutPanListenerImpl.java	(revision 590)
@@ -0,0 +1,128 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPanListener como herramienta para
+ * realizar el
+ * Pan.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutPanListenerImpl extends AbstractLayoutToolListener implements
+    LayoutMoveListener {
+
+    public static final Image iLayoutpan = PluginServices.getIconTheme()
+        .get("layout-pan-icon").getImage();
+
+    /**
+     * Crea un nuevo RectangleListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutPanListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+        Point pLast = layoutPanel.getLayoutControl().getLastPoint();
+        Point pAnt = layoutPanel.getLayoutControl().getPointAnt();
+        Point origin = layoutPanel.getLayoutControl().getRectOrigin();
+        Rectangle2D.Double r = layoutPanel.getLayoutControl().getRect();
+        r.x = origin.getX() + pLast.getX() - pAnt.getX();
+        r.y = origin.getY() + pLast.getY() - pAnt.getY();
+        layoutPanel.getLayoutControl().setRect(r);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iLayoutpan;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        layoutPanel
+            .getLayoutControl()
+            .getRectOrigin()
+            .setLocation(layoutPanel.getLayoutControl().getRect().x,
+                layoutPanel.getLayoutControl().getRect().y);
+
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        Point p1;
+        Point p2;
+
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            p1 = layoutPanel.getLayoutControl().getFirstPoint();
+            p2 = event.getEvent().getPoint();
+            layoutPanel.getLayoutControl().getLayoutZooms().setPan(p1, p2);
+            layoutPanel.getLayoutControl().refresh();
+            PluginServices.getMainFrame().enableControls();
+        }
+
+        layoutPanel.getLayoutControl().setFirstPoint();
+        layoutPanel.getLayoutControl().setLastPoint();
+        layoutPanel.getLayoutControl().setPointAnt();
+        layoutPanel
+            .getLayoutControl()
+            .getRectOrigin()
+            .setLocation(layoutPanel.getLayoutControl().getRect().x,
+                layoutPanel.getLayoutControl().getRect().y);
+
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void click(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddOverViewListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddOverViewListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddOverViewListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddOverViewListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddOverViewListenerImpl(LayoutPanel l) {
+        super(l);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameOverView.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutToolListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutToolListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutToolListener.java	(revision 590)
@@ -0,0 +1,47 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ * 
+ */
+public abstract class AbstractLayoutToolListener implements LayoutToolListener {
+
+    protected LayoutManager layoutManager = null;
+    protected LayoutPanel layoutPanel;
+
+    public AbstractLayoutToolListener(LayoutPanel theLayoutPanel) {
+        this.layoutPanel = theLayoutPanel;
+        this.layoutManager =
+            (LayoutManager) ProjectManager.getInstance().getDocumentManager(
+                DefaultLayoutManager.TYPENAME);
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutGraphicListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutGraphicListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/AbstractLayoutGraphicListener.java	(revision 590)
@@ -0,0 +1,69 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ * 
+ */
+public abstract class AbstractLayoutGraphicListener extends
+    AbstractLayoutToolListener implements ILayoutGraphicListener {
+
+    /**
+     * @param theLayoutPanel
+     */
+    public AbstractLayoutGraphicListener(LayoutPanel theLayoutPanel) {
+        super(theLayoutPanel);
+    }
+
+    public void endGraphic() {
+        layoutPanel.getLayoutControl().getGeometryAdapter().end();
+        PluginServices.getMainFrame().enableControls();
+        FFrameGraphics fframe =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+
+        fframe.setGeometryAdapter(layoutPanel.getLayoutControl()
+            .getGeometryAdapter());
+        fframe.update(getFFrameGraphicsType(), layoutPanel.getLayoutControl()
+            .getAT());
+        fframe.setBoundBox(layoutPanel.getLayoutControl().getGeometryAdapter()
+            .getBounds2D());
+        layoutPanel.getLayoutContext().addFFrame(fframe, true, true);
+        layoutPanel.getLayoutControl().setGeometryAdapter(
+            createGeometryAdapter());
+        layoutPanel.getLayoutControl().refresh();
+        layoutPanel.getLayoutControl().setDefaultTool();
+    }
+
+    public abstract int getFFrameGraphicsType();
+
+    public abstract GeometryAdapter createGeometryAdapter();
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutSelectListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutSelectListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutSelectListenerImpl.java	(revision 590)
@@ -0,0 +1,227 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+import java.util.ArrayList;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.DefaultLayoutNotification;
+import org.gvsig.app.project.documents.layout.FLayoutGraphics;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutNotification;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameGroupSelectable;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Implementaci�n de la interfaz LayoutPanListener como herramienta para
+ * realizar una
+ * selecci�n.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutSelectListenerImpl extends AbstractLayoutToolListener
+    implements LayoutMoveListener, Observable {
+
+    public static final Image icrux = PluginServices.getIconTheme()
+        .get("cursor-selection-complex").getImage();
+    private Point2D m_pointSelected;
+    private int index = 0;
+    private ArrayList lastSelect = new ArrayList();
+    private ObservableHelper observers;
+    
+    /**
+     * Crea un nuevo LayoutSelectionListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutSelectListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+        observers = new ObservableHelper();
+        observers.addObserver(layoutPanel.getLayoutControl());
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return icrux;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        m_pointSelected = event.getPoint();
+        layoutPanel.getLayoutControl().setIsReSel(true);
+        IFFrame[] fframes = layoutPanel.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame fframe = fframes[i];
+
+            if (m_pointSelected != null) {
+                if (!event.getEvent().isShiftDown()) {
+                    if (fframe.isSelected()) {
+                        fframe.setSelected(m_pointSelected, event.getEvent());
+                    }
+                } else
+                    if (fframe instanceof IFFrameGroupSelectable) {
+                        fframe.setSelected(m_pointSelected, event.getEvent());
+                    }
+            }
+
+            if (fframe.isSelected()) {
+                layoutPanel.getLayoutControl().setIsReSel(false);
+            }
+
+        }
+
+        if ((layoutPanel.getLayoutControl().getLastPoint() != null)
+            && (layoutPanel.getLayoutControl().getFirstPoint() != null)) {
+            layoutPanel.getLayoutControl().getLastPoint()
+                .setLocation(layoutPanel.getLayoutControl().getFirstPoint());
+        }
+
+        if (event.getEvent().getClickCount() < 2) {
+            observers.notifyObservers(this, 
+                new DefaultLayoutNotification(LayoutNotification.LAYOUT_VALIDATED));          
+            layoutPanel.repaint();
+        }
+
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        layoutPanel.getLayoutControl().getLayoutFunctions().setSelect();
+        layoutPanel.getLayoutControl().refresh();
+        layoutPanel.getLayoutControl().setIsReSel(false);
+    }
+
+    public void click(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            m_pointSelected = event.getPoint();
+            IFFrame[] fframes = layoutPanel.getLayoutContext().getFFrames();
+            if (fframes.length > 0) {
+                ArrayList<IFFrame> listSelect = new ArrayList<IFFrame>();
+                for (int j = 0; j < fframes.length; j++) {
+                    if (fframes[j].getContains(m_pointSelected) != IFFrame.NOSELECT) {
+                        listSelect.add(fframes[j]);
+                    }
+                }
+
+                if (listSelect.size() > 0) {
+                    for (int k = 0; k < listSelect.size(); k++) {
+                        if (listSelect.get(k).isSelected()) {
+                            index = listSelect.size() - k;
+
+                            break;
+                        }
+                    }
+
+                    if (!FLayoutUtilities.isEqualList(listSelect, lastSelect)
+                        || (index > (listSelect.size() - 1))) {
+                        index = 0;
+                    }
+                    for (int j = 0; j < fframes.length; j++) {
+                        IFFrame fframe = fframes[j];
+
+                        if (!event.getEvent().isShiftDown()) {
+                            fframe.setSelected(false);
+                        } else {
+                            if (fframe.isSelected()) {
+                                if (fframe.getContains(m_pointSelected) != IFFrame.NOSELECT) {
+                                    fframe.setSelected(false);
+                                }
+                            }
+                        }
+                    }
+
+                    ((IFFrame) listSelect.get((listSelect.size() - 1 - index)))
+                        .setSelected(true);
+                    index++;
+                    lastSelect = listSelect;
+                }
+
+                observers.notifyObservers(this, 
+                    new DefaultLayoutNotification(LayoutNotification.LAYOUT_VALIDATED));          
+                layoutPanel.repaint();
+
+                if (event.getEvent().getClickCount() > 1) {
+                    FLayoutGraphics flg = new FLayoutGraphics(layoutPanel);
+                    flg.openFrameDialog();
+                    layoutPanel.getLayoutContext().updateFFrames();
+                    layoutPanel.getLayoutContext().notifAllObservers();
+                }
+            }
+
+            PluginServices.getMainFrame().enableControls();
+        }
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+        Image cursor = null;
+        Point2D p = event.getPoint();
+        IFFrame[] fframes = layoutPanel.getLayoutContext().getSelectedFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i].getContains(p) != IFFrame.NOSELECT) {
+                cursor = fframes[i].getMapCursor(p);
+            } else {
+                cursor = getImageCursor();
+            }
+            if (cursor != null) {
+                layoutPanel.getLayoutControl().setMapCursor(cursor);
+            }          
+        }
+    }
+
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutRectangleListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutRectangleListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutRectangleListener.java	(revision 590)
@@ -0,0 +1,43 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+
+/**
+ * Interfaz listener de rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface LayoutRectangleListener extends LayoutToolListener {
+
+    /**
+     * Invocado cuando el usuario selecciona un rect�ngulo en la vista.
+     * 
+     * @param event
+     *            Rectangle.
+     * 
+     * @throws BehaviorException
+     */
+    public void rectangle(EnvelopeEvent event) throws BehaviorException;
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/ILayoutGraphicListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/ILayoutGraphicListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/ILayoutGraphicListener.java	(revision 590)
@@ -0,0 +1,36 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+
+/**
+ * Iterfaz de los listeners con gr�ficos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface ILayoutGraphicListener {
+
+    public void endGraphic();
+
+    public GeometryAdapter createGeometryAdapter();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutMoveListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutMoveListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutMoveListener.java	(revision 590)
@@ -0,0 +1,53 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Interfaz de listener de movimiento.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface LayoutMoveListener extends LayoutToolListener {
+
+    /**
+     * Invocado cuando el usuario mueve el rat�n sobre la vista.
+     * 
+     * @param event
+     *            MoveEvent.
+     * 
+     * @throws BehaviorException
+     *             se lanza cuando falla la herramienta.
+     */
+    public void drag(PointEvent event) throws BehaviorException;
+
+    public void press(PointEvent event) throws BehaviorException;
+
+    public void release(PointEvent event) throws BehaviorException;
+
+    public void move(PointEvent event) throws BehaviorException;
+
+    public void click(PointEvent event) throws BehaviorException;
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleWithDialogListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleWithDialogListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleWithDialogListener.java	(revision 590)
@@ -0,0 +1,83 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameDialogNotification;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ * 
+ */
+public abstract class LayoutAddRectangleWithDialogListener extends
+    LayoutAddRectangleListener {
+
+    /**
+     * @param layoutPanel
+     */
+    public LayoutAddRectangleWithDialogListener(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    public void rectangle(EnvelopeEvent event) throws BehaviorException {
+        IFFrame fframe = layoutManager.createFrame(getFFrameName());
+        fframe.setDocument(this.layoutPanel.getDocument());
+        fframe.setLayoutContext(layoutPanel.getLayoutContext());
+        Rectangle2D r = new Rectangle2D.Double();
+
+        r = getRectangle(TOLERANCE);
+        fframe.setBoundBox(FLayoutUtilities.toSheetRect(r, layoutPanel
+            .getLayoutControl().getAT()));
+        final IFFrameDialog fframedialog =
+            layoutManager.createFFrameDialog(fframe, layoutPanel);
+        if (fframedialog != null) {
+        	fframedialog.addObserver(new Observer() {
+				public void update(Observable observable, Object notification) {
+					if (notification instanceof FFrameDialogNotification &&
+							((FFrameDialogNotification) notification).getType()==FFrameDialogNotification.DIALOG_CLOSED) {
+				        IFFrame newFrame = fframedialog.getFFrame();
+				        if (newFrame != null) {
+				            layoutPanel.getLayoutContext().addFFrame(newFrame, true, true);
+				        }
+				        PluginServices.getMainFrame().enableControls();
+				        layoutPanel.getLayoutControl().refresh();
+					}
+				}
+			});
+            PluginServices.getMDIManager().addWindow(fframedialog);
+        }
+    }
+
+    public abstract String getFFrameName();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointListener.java	(revision 590)
@@ -0,0 +1,46 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Interfaz listener de punto.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface LayoutPointListener extends LayoutToolListener {
+
+    /**
+     * Invocado cuando se hace un pressed sobre la vista.
+     * 
+     * @param event
+     *            PointEvent.
+     * 
+     * @throws BehaviorException
+     *             se lanza cuando falla la herramienta.
+     */
+    public void point(PointEvent event) throws BehaviorException;
+
+    public void pointDoubleClick(PointEvent event) throws BehaviorException;
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutAddRectangleListener.java	(revision 590)
@@ -0,0 +1,147 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import java.awt.Image;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.AbstractLayoutToolListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddRectangleListener extends AbstractLayoutToolListener
+    implements LayoutRectangleListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+    protected static int TOLERANCE = 15;
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddRectangleListener(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.RectangleListener#rectangle(org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent)
+     */
+    public void rectangle(EnvelopeEvent event) throws BehaviorException {
+        FFrameGraphics fframe =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+
+        fframe.setGeometryAdapter(layoutPanel.getLayoutControl()
+            .getGeometryAdapter());
+        fframe.update(Geometry.TYPES.SURFACE, layoutPanel.getLayoutControl()
+            .getAT());
+        fframe.setBoundBox(layoutPanel.getLayoutControl().getGeometryAdapter()
+            .getBounds2D());
+        layoutPanel.getLayoutContext().addFFrame(fframe, true, true);
+        PluginServices.getMainFrame().enableControls();
+        layoutPanel.getLayoutControl().refresh();
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    protected Rectangle2D getRectangle(int tolerance) {
+        Rectangle2D r = new Rectangle2D.Double();
+        if (isCorrectSize(tolerance, layoutPanel.getLayoutControl()
+            .getFirstPoint(), layoutPanel.getLayoutControl().getLastPoint())) {
+            Point2D fp = layoutPanel.getLayoutControl().getFirstPoint();
+            Point2D lp = layoutPanel.getLayoutControl().getLastPoint();
+            if (fp.getX() < lp.getX()) {
+                if (fp.getY() < lp.getY()) {
+                    r.setRect(fp.getX(), fp.getY(), lp.getX() - fp.getX(),
+                        lp.getY() - fp.getY());
+                } else {
+                    r.setRect(fp.getX(), lp.getY(), lp.getX() - fp.getX(),
+                        fp.getY() - lp.getY());
+                }
+            } else {
+                if (fp.getY() > lp.getY()) {
+                    r.setRect(lp.getX(), lp.getY(), fp.getX() - lp.getX(),
+                        fp.getY() - lp.getY());
+                } else {
+                    r.setRect(lp.getX(), fp.getY(), lp.getX() - fp.getX(),
+                        lp.getY() - fp.getY());
+                }
+            }
+        } else {
+            Point2D p1 = layoutPanel.getLayoutControl().getFirstPoint();
+            p1 =
+                new Point2D.Double(p1.getX() + tolerance, p1.getY() + tolerance);
+            r.setFrameFromDiagonal(layoutPanel.getLayoutControl()
+                .getFirstPoint(), p1);
+        }
+        return r;
+    }
+
+    /**
+     * Devuelve true si el rectangulo formado por los dos puntos que se pasan
+     * como par�metro es superior a la tolerancia.
+     * 
+     * @param tolerance
+     *            Tolerancia
+     * @param p1
+     *            Punto inicial del rect�ngulo.
+     * @param p2
+     *            Punto final del rect�ngulo.
+     * 
+     * @return True si el tama�o es correcto.
+     */
+    private boolean isCorrectSize(int tolerance, Point2D p1, Point2D p2) {
+        if (Math.abs(p2.getX() - p1.getX()) < tolerance) {
+            return false;
+        } else
+            if (Math.abs(p2.getY() - p1.getY()) < tolerance) {
+                return false;
+            }
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutToolListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutToolListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutToolListener.java	(revision 590)
@@ -0,0 +1,46 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import java.awt.Image;
+
+/**
+ * Interfaz listener de herramienta.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface LayoutToolListener {
+
+    /**
+     * Devuelve la imagen del cursor de la herramienta.
+     * 
+     * @return ImageCursor.
+     */
+    public Image getImageCursor();
+
+    /**
+     * Condici�n para que se cancele el dibujado.
+     * 
+     * @return True si se cancela el dibujado.
+     */
+    public boolean cancelDrawing();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointSelectionListener.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointSelectionListener.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener/LayoutPointSelectionListener.java	(revision 590)
@@ -0,0 +1,78 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.listener;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * una selecci�n por punto.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutPointSelectionListener implements LayoutPointListener {
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-simple").getImage();
+    protected LayoutPanel layout;
+
+    /**
+     * Crea un nuevo AreaListenerImpl.
+     * 
+     * @param mc
+     *            MapControl.
+     */
+    public LayoutPointSelectionListener(LayoutPanel l) {
+        this.layout = l;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(org.gvsig.fmap.mapcontrol.tools.Events.PointEvent)
+     */
+    public void point(PointEvent event) throws BehaviorException {
+
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    public void pointDoubleClick(PointEvent event) throws BehaviorException {
+
+    }
+
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/listener
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddViewListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddViewListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddViewListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddViewListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param layoutPanel
+     *            Layout.
+     */
+    public LayoutAddViewListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameView.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPictureListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPictureListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPictureListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFramePicture;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddPictureListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddPictureListenerImpl(LayoutPanel l) {
+        super(l);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFramePicture.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutEditBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutEditBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutEditBehavior.java	(revision 590)
@@ -0,0 +1,140 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameEditableVertex;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Behaviour que espera un listener de tipo MoveListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutEditBehavior extends LayoutBehavior {
+
+    private LayoutMoveListener listener;
+    private boolean dragged = false;
+
+    /**
+     * Crea un nuevo MoveBehavior.
+     * 
+     * @param pli
+     *            listener.
+     */
+    public LayoutEditBehavior(LayoutMoveListener lpl) {
+        listener = lpl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        getLayoutControl().getLayoutDraw().drawRectangle((Graphics2D) g);
+        g.drawImage(getLayoutControl().getImage(), 0, 0, getLayoutControl()
+            .getComponent());
+        getLayoutControl().getLayoutDraw().drawHandlers((Graphics2D) g,
+            Color.black);
+
+        IFFrame[] fframeSelect =
+            getLayoutControl().getLayoutContext().getSelectedFFrames();
+        for (int i = 0; i < fframeSelect.length; i++) {
+            if (fframeSelect[i] instanceof IFFrameEditableVertex && dragged) {
+                ((IFFrameEditableVertex) fframeSelect[i]).paint((Graphics2D) g,
+                    getLayoutControl().getAT());
+            }
+        }
+        // }
+        // else {
+        // geometryAdapter.paint((Graphics2D) g, getAT(), true);
+        // }
+        g.drawImage(getLayoutControl().getImgRuler(), 0, 0, getLayoutControl()
+            .getComponent());
+        // getLayout().drawCursor(g);
+    }
+
+    /**
+     * @throws BehaviorException
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.press(event);
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.release(event);
+        dragged = false;
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.drag(event);
+        dragged = true;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutMoveListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+
+    public boolean isAdjustable() {
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutMoveBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutMoveBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutMoveBehavior.java	(revision 590)
@@ -0,0 +1,138 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Behaviour que espera un listener de tipo MoveListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutMoveBehavior extends LayoutBehavior {
+
+    private Point2D m_FirstPoint;
+    private Point2D m_LastPoint;
+    private Point2D m_PointAnt;
+    private LayoutMoveListener listener;
+
+    /**
+     * Crea un nuevo MoveBehavior.
+     * 
+     * @param pli
+     *            listener.
+     */
+    public LayoutMoveBehavior(LayoutMoveListener lpl) {
+        listener = lpl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        m_FirstPoint = getLayoutControl().getFirstPoint();
+        m_LastPoint = getLayoutControl().getLastPoint();
+        m_PointAnt = getLayoutControl().getPointAnt();
+
+        if (getLayoutControl().getImage() != null) {
+            if ((m_FirstPoint != null) && (m_LastPoint != null)) {
+                if ((m_LastPoint == null) && (m_PointAnt == null)) {
+                    m_LastPoint = new Point();
+                    m_PointAnt = new Point();
+                }
+                g.drawImage(getLayoutControl().getImage(), (getLayoutControl()
+                    .getLastPoint().x - getLayoutControl().getPointAnt().x),
+                    (getLayoutControl().getLastPoint().y - getLayoutControl()
+                        .getPointAnt().y), getLayoutControl().getComponent());
+
+                getLayoutControl().getLayoutDraw().drawGrid((Graphics2D) g);
+                getLayoutControl().getLayoutDraw().drawRuler((Graphics2D) g,
+                    Color.black);
+            } else {
+                super.paintComponent(g);
+            }
+        }
+    }
+
+    /**
+     * @throws BehaviorException
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.press(event);
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.release(event);
+
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.drag(event);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutMoveListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/ILayoutBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/ILayoutBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/ILayoutBehavior.java	(revision 590)
@@ -0,0 +1,116 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseWheelEvent;
+
+import org.gvsig.app.project.documents.layout.LayoutControl;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+
+/**
+ * Layout behavior.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public interface ILayoutBehavior {
+
+    /**
+     * Devuelve el ToolListener que est� seleccionado.
+     * 
+     * @return ToolListener seleccionado.
+     */
+    public LayoutToolListener getListener();
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g);
+
+    /**
+     * Inserta el Layout.
+     * 
+     * @param lc
+     *            Layout a insertar.
+     */
+    public void setLayoutControl(LayoutControl lc);
+
+    /**
+     * Devuelve la imagen del cursor de la herrameinta.
+     * 
+     * @return Image cursor de la herramienta.
+     */
+    public Image getImageCursor();
+
+    /**
+     * Devuelve el Layout.
+     * 
+     * @return Layout.
+     */
+    public LayoutControl getLayoutControl();
+
+    /**
+     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+     */
+    public void mouseClicked(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
+     */
+    public void mouseEntered(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
+     */
+    public void mouseExited(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+     */
+    public void mouseMoved(MouseEvent e) throws BehaviorException;
+
+    /**
+     * @see java.awt.event.MouseWheelListener#mouseWheelMoved(java.awt.event.MouseWheelEvent)
+     */
+    public void mouseWheelMoved(MouseWheelEvent e) throws BehaviorException;
+
+    public boolean isAdjustable();
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutPointBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutPointBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutPointBehavior.java	(revision 590)
@@ -0,0 +1,120 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Graphics;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+import org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener;
+
+/**
+ * LayoutBehaviour que espera un listener de tipo LayoutPointListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutPointBehavior extends LayoutBehavior {
+
+    private LayoutPointListener listener;
+    private boolean doubleClick = false;
+
+    /**
+     * Crea un nuevo LayoutPointBehavior.
+     * 
+     * @param l
+     *            listener.
+     */
+    public LayoutPointBehavior(LayoutPointListener l) {
+        listener = l;
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mousePressed de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        if (listener.cancelDrawing()) {
+            // getMapControl().cancelDrawing();
+        }
+        if (e.getClickCount() == 2) {
+            doubleClick = true;
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        super.paintComponent(g);
+    }
+
+    /**
+     * Calls the right method from LayoutPointListener (point 
+     * and pointDoubleClick)
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             
+     */
+
+    public void mouseClicked(MouseEvent e) throws BehaviorException {
+        super.mouseClicked(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.point(event);
+        if (doubleClick) {
+            listener.pointDoubleClick(event);
+            doubleClick = false;
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(ToolListener listener) {
+        this.listener = (LayoutPointListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+
+    public void mouseMoved(MouseEvent e) throws BehaviorException {
+        super.mouseMoved(e);
+        getLayoutControl().setGeometryAdapterPoinPosition();
+    }
+
+    public boolean isAdjustable() {
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutBehavior.java	(revision 590)
@@ -0,0 +1,109 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseWheelEvent;
+
+import org.gvsig.app.project.documents.layout.LayoutControl;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+
+/**
+ * Ejecuta acciones respondiendo a eventos, por
+ * delegaci�n desde el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public abstract class LayoutBehavior implements ILayoutBehavior {
+
+    private LayoutControl layout;
+
+    public abstract LayoutToolListener getListener();
+
+    public void paintComponent(Graphics g) {
+        g.drawImage(getLayoutControl().getImage(), 0, 0, layout.getComponent());
+
+        getLayoutControl().getLayoutDraw().drawGrid((Graphics2D) g);
+        getLayoutControl().getLayoutDraw().drawRuler((Graphics2D) g,
+            Color.black);
+        getLayoutControl().getGeometryAdapter().paint((Graphics2D) g,
+            layout.getAT(), true);
+        getLayoutControl().getLayoutDraw().drawHandlers((Graphics2D) g,
+            Color.black);
+    }
+
+    public void setLayoutControl(LayoutControl lc) {
+        layout = lc;
+    }
+
+    public Image getImageCursor() {
+        return getListener().getImageCursor();
+    }
+
+    public LayoutControl getLayoutControl() {
+        return layout;
+    }
+
+    public void mouseClicked(MouseEvent e) throws BehaviorException {
+    }
+
+    public void mouseEntered(MouseEvent e) throws BehaviorException {
+    }
+
+    public void mouseExited(MouseEvent e) throws BehaviorException {
+    }
+
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            layout.setPointAnt();
+            layout.setFirstPoint();
+        }
+    }
+
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        if (e.getButton() != MouseEvent.BUTTON3) {
+            layout.setLastPoint();
+            layout.setPointAnt();
+        }
+    }
+
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        if (e.getButton() != MouseEvent.BUTTON3) {
+            layout.setLastPoint();
+        }
+    }
+
+    public void mouseMoved(MouseEvent e) throws BehaviorException {
+    }
+
+    public void mouseWheelMoved(MouseWheelEvent e) throws BehaviorException {
+    }
+
+    public boolean isAdjustable() {
+        return false;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutSelectBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutSelectBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutSelectBehavior.java	(revision 590)
@@ -0,0 +1,178 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Behaviour que espera un listener de tipo LayoutMoveListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutSelectBehavior extends LayoutBehavior {
+
+    private LayoutMoveListener listener;
+    private boolean dragged = false;
+
+    /**
+     * Crea un nuevo LayoutSelectBehavior.
+     * 
+     * @param pli
+     *            listener.
+     */
+    public LayoutSelectBehavior(LayoutMoveListener lpl) {
+        listener = lpl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        getLayoutControl().getLayoutDraw().drawRectangle((Graphics2D) g);
+
+        g.drawImage(getLayoutControl().getImage(), 0, 0, getLayoutControl()
+            .getComponent());
+
+        if (getLayoutControl().isReSel()) {
+            Rectangle reSel = getLayoutControl().getReSel();
+            reSel = new Rectangle();
+            reSel.setFrameFromDiagonal(getLayoutControl().getFirstPoint(),
+                getLayoutControl().getLastPoint());
+            g.drawRect(reSel.x, reSel.y, reSel.width, reSel.height);
+        }
+        IFFrame[] frames =
+            getLayoutControl().getLayoutContext().getSelectedFFrames();
+        for (int i = 0; i < frames.length; i++) {
+            g.setColor(Color.black);
+            frames[i].drawHandlers((Graphics2D) g);
+            int difx =
+                (getLayoutControl().getLastPoint().x - getLayoutControl()
+                    .getFirstPoint().x);
+            int dify =
+                (getLayoutControl().getLastPoint().y - getLayoutControl()
+                    .getFirstPoint().y);
+            if ((Math.abs(difx) > 3) || (Math.abs(dify) > 3)) {
+                Rectangle2D rectangle = frames[i].getMovieRect(difx, dify);
+                if (rectangle == null)
+                    return;
+                ((Graphics2D) g).rotate(
+                    Math.toRadians(frames[i].getRotation()), rectangle.getX()
+                        + (rectangle.getWidth() / 2), rectangle.getY()
+                        + (rectangle.getHeight() / 2));
+
+                if (rectangle != null && dragged
+                    && !getLayoutControl().isReSel()) {
+                    g.drawRect((int) rectangle.getMinX(),
+                        (int) rectangle.getMinY(), (int) rectangle.getWidth(),
+                        (int) rectangle.getHeight());
+                }
+
+                ((Graphics2D) g).rotate(
+                    Math.toRadians(-frames[i].getRotation()), rectangle.getX()
+                        + (rectangle.getWidth() / 2), rectangle.getY()
+                        + (rectangle.getHeight() / 2));
+
+            }
+        }
+
+        g.drawImage(getLayoutControl().getImgRuler(), 0, 0, getLayoutControl()
+            .getComponent());
+    }
+
+    /**
+     * @throws BehaviorException
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.press(event);
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.release(event);
+        dragged = false;
+
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.drag(event);
+        dragged = true;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutMoveListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+
+    public void mouseClicked(MouseEvent e) throws BehaviorException {
+        super.mouseClicked(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.click(event);
+    }
+
+    public void mouseMoved(MouseEvent e) throws BehaviorException {
+        super.mouseMoved(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.move(event);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewZoomBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewZoomBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewZoomBehavior.java	(revision 590)
@@ -0,0 +1,140 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.image.BufferedImage;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Behaviour que espera un listener de tipo MoveListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutViewZoomBehavior extends LayoutBehavior {
+
+    private LayoutMoveListener listener;
+    private boolean dragged = false;
+
+    /**
+     * Crea un nuevo MoveBehavior.
+     * 
+     * @param pli
+     *            listener.
+     */
+    public LayoutViewZoomBehavior(LayoutMoveListener lpl) {
+        listener = lpl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        BufferedImage img = getLayoutControl().getImage();
+        BufferedImage imgRuler = getLayoutControl().getImgRuler();
+        g.drawImage(img, 0, 0, getLayoutControl().getComponent());
+        g.drawImage(imgRuler, 0, 0, getLayoutControl().getComponent());
+        g.setColor(Color.black);
+        g.setXORMode(Color.white);
+
+        // Borramos el anterior
+        Rectangle r = new Rectangle();
+
+        // Dibujamos el actual
+        if (dragged && (getLayoutControl().getFirstPoint() != null)
+            && (getLayoutControl().getLastPoint() != null)) {
+            r.setFrameFromDiagonal(getLayoutControl().getFirstPoint(),
+                getLayoutControl().getLastPoint());
+            g.drawRect(r.x, r.y, r.width, r.height);
+        }
+        IFFrame[] frames =
+            getLayoutControl().getLayoutContext().getSelectedFFrames();
+        for (int i = 0; i < frames.length; i++) {
+            g.setColor(Color.black);
+            frames[i].drawHandlers((Graphics2D) g);
+        }
+        g.setPaintMode();
+    }
+
+    /**
+     * @throws BehaviorException
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.press(event);
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.release(event);
+        dragged = false;
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.drag(event);
+        dragged = true;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutMoveListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewMoveBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewMoveBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutViewMoveBehavior.java	(revision 590)
@@ -0,0 +1,165 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.app.project.documents.layout.DefaultLayoutContext;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Behaviour que espera un listener de tipo MoveListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutViewMoveBehavior extends LayoutBehavior {
+
+    private LayoutMoveListener listener;
+
+    /**
+     * Crea un nuevo MoveBehavior.
+     * 
+     * @param pli
+     *            listener.
+     */
+    public LayoutViewMoveBehavior(LayoutMoveListener lpl) {
+        listener = lpl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+    	// save original clip area
+    	Rectangle2D origClip = g.getClipBounds();
+    	// draw cached image
+        g.drawImage(getLayoutControl().getImage(), 0, 0,
+        		getLayoutControl().getComponent());
+    	
+    	IFFrameUseFMap[] fframes = getLayoutControl().getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+        for (int i = 0; i < fframes.length; i++) {
+        	IFFrameUseFMap fframe = fframes[i];
+        	Rectangle2D.Double rec =
+        		((IFFrame) fframe).getBoundingBox(getLayoutControl().getAT());
+
+        	if (getLayoutControl().getImage() != null) {
+        		rec = (Rectangle2D.Double) rec
+        			.createIntersection(getLayoutControl()
+        				.getComponent().getVisibleRect());
+        	}
+
+        	if (fframe.getBufferedImage() != null) {
+        		// clear the fframe rectangle
+        		Color c = g.getColor();
+        		g.setColor(fframe.getMapContext().getViewPort().getBackColor());
+        		g.fillRect((int) rec.x, (int) rec.y, (int) rec.width,
+        				(int) rec.height);
+        		g.setColor(c);
+        		
+        		// draw the cached image in the new position
+        		g.clipRect((int) rec.x, (int) rec.y, (int) rec.width,
+        				(int) rec.height);
+
+        		g.drawImage(fframe.getBufferedImage(), (int) rec.getX()
+        				+ getLayoutControl().getLastPoint().x
+        				- getLayoutControl().getPointAnt().x,
+        				(int) rec.getY()
+        				+ getLayoutControl().getLastPoint().y
+        				- getLayoutControl().getPointAnt().y,
+        				getLayoutControl().getComponent());
+
+        		// force a full fframe redrawn for the next drawing cycle
+        		fframe.refresh();
+        	}
+        }
+        // draw handlers and ruler
+        g.setClip(origClip);
+        getLayoutControl().getLayoutDraw().drawHandlers((Graphics2D) g,
+            Color.black);
+        g.drawImage(getLayoutControl().getImgRuler(), 0, 0, getLayoutControl()
+            .getComponent());
+    }
+
+    /**
+     * @throws BehaviorException
+     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.press(event);
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.release(event);
+
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        PointEvent event = new PointEvent(e.getPoint(), e);
+        listener.drag(event);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutMoveListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutRectangleBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutRectangleBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutRectangleBehavior.java	(revision 590)
@@ -0,0 +1,196 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutRectangleListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutToolListener;
+import org.gvsig.fmap.geom.Geometry.SUBTYPES;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
+
+/**
+ * Behaviour que espera un listener de tipo LayoutRectangleListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutRectangleBehavior extends LayoutBehavior {
+
+    private static final GeometryManager geomManager = GeometryLocator
+        .getGeometryManager();
+    private static final Logger logger = LoggerFactory
+        .getLogger(LayoutRectangleBehavior.class);
+    private LayoutRectangleListener listener;
+    private boolean dragged = false;
+
+    /**
+     * Crea un nuevo RectangleBehavior.
+     * 
+     * @param zili
+     *            listener.
+     */
+    public LayoutRectangleBehavior(LayoutRectangleListener lrl) {
+        listener = lrl;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#paintComponent(java.awt.Graphics)
+     */
+    public void paintComponent(Graphics g) {
+        BufferedImage img = getLayoutControl().getImage();
+        BufferedImage imgRuler = getLayoutControl().getImgRuler();
+        g.drawImage(img, 0, 0, getLayoutControl().getComponent());
+        g.drawImage(imgRuler, 0, 0, getLayoutControl().getComponent());
+        g.setColor(Color.black);
+        g.setXORMode(Color.white);
+
+        // Borramos el anterior
+        Rectangle r = new Rectangle();
+
+        // Dibujamos el actual
+        if (dragged && (getLayoutControl().getFirstPoint() != null)
+            && (getLayoutControl().getLastPoint() != null)) {
+            r.setFrameFromDiagonal(getLayoutControl().getFirstPoint(),
+                getLayoutControl().getLastPoint());
+            g.drawRect(r.x, r.y, r.width, r.height);
+        }
+        IFFrame[] frames =
+            getLayoutControl().getLayoutContext().getSelectedFFrames();
+        for (int i = 0; i < frames.length; i++) {
+            g.setColor(Color.black);
+            frames[i].drawHandlers((Graphics2D) g);
+        }
+        g.setPaintMode();
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mousePressed de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mousePressed(MouseEvent e) throws BehaviorException {
+        super.mousePressed(e);
+        if (listener.cancelDrawing()) {
+            // getLayout().cancelDrawing();
+        }
+        getLayoutControl().repaint();
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseReleased de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * 
+     * @throws BehaviorException
+     *             Excepci�n lanzada cuando el Behavior.
+     */
+    public void mouseReleased(MouseEvent e) throws BehaviorException {
+        super.mouseReleased(e);
+        dragged = false;
+        if (getLayoutControl().getFirstPoint() == null)
+            return;
+        Point2D p1;
+        Point2D p2;
+        Point pScreen = getLayoutControl().getLastPoint();
+
+        AffineTransform at = getLayoutControl().getAT();
+
+        p1 =
+            FLayoutUtilities.toSheetPoint(getLayoutControl().getFirstPoint(),
+                at);
+        p2 = FLayoutUtilities.toSheetPoint(pScreen, at);
+
+        if (e.getButton() == MouseEvent.BUTTON1) {
+            // Fijamos el nuevo extent
+            // Rectangle2D.Double r = new Rectangle2D.Double();
+            // r.setFrameFromDiagonal(p1, p2);
+            Envelope r;
+            try {
+                r =
+                    geomManager.createEnvelope(p1.getX(), p1.getY(), p2.getX(),
+                        p2.getY(), SUBTYPES.GEOM2D);
+                Rectangle2D rectPixel = new Rectangle();
+                rectPixel.setFrameFromDiagonal(getLayoutControl()
+                    .getFirstPoint(), pScreen);
+
+                EnvelopeEvent event = new EnvelopeEvent(r, e, rectPixel);
+                listener.rectangle(event);
+            } catch (CreateEnvelopeException e1) {
+                logger.error("Error creating the envelope", e);
+            }
+        }
+
+    }
+
+    /**
+     * Reimplementaci�n del m�todo mouseDragged de Behavior.
+     * 
+     * @param e
+     *            MouseEvent
+     * @throws BehaviorException
+     */
+    public void mouseDragged(MouseEvent e) throws BehaviorException {
+        super.mouseDragged(e);
+        dragged = true;
+        getLayoutControl().repaint();
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#setListener(com.iver.cit.gvsig.fmap.tools.ToolListener)
+     */
+    public void setListener(LayoutToolListener listener) {
+        this.listener = (LayoutRectangleListener) listener;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior#getListener()
+     */
+    public LayoutToolListener getListener() {
+        return listener;
+    }
+
+    public boolean isAdjustable() {
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutZoomBehavior.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutZoomBehavior.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior/LayoutZoomBehavior.java	(revision 590)
@@ -0,0 +1,41 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools.behavior;
+
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutRectangleListener;
+
+/**
+ * Behaviour que espera un listener de tipo LayoutRectangleListener.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutZoomBehavior extends LayoutRectangleBehavior {
+
+    public boolean isAdjustable() {
+        return false;
+    }
+
+    public LayoutZoomBehavior(LayoutRectangleListener lrl) {
+        super(lrl);
+    }
+
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/behavior
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddTextListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddTextListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddTextListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameText;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddTextListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param layoutPanel
+     *            Layout.
+     */
+    public LayoutAddTextListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameText.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLineListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLineListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLineListenerImpl.java	(revision 590)
@@ -0,0 +1,97 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.PolyLineAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * una l�nea.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddLineListenerImpl extends AbstractLayoutGraphicListener
+    implements LayoutPointListener {
+
+    public static final Image iLine = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-polyline").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddLineListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddLineListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            if (layoutPanel.getLayoutControl().addGeometryAdapterPoint() == 2) {
+                endGraphic();
+            }
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iLine;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public GeometryAdapter createGeometryAdapter() {
+        return new PolyLineAdapter();
+    }
+
+    @Override
+    public int getFFrameGraphicsType() {
+        return Geometry.TYPES.CURVE;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolygonListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolygonListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolygonListenerImpl.java	(revision 590)
@@ -0,0 +1,109 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.PolygonAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * un zoom menos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddPolygonListenerImpl extends AbstractLayoutToolListener
+    implements LayoutPointListener, ILayoutGraphicListener {
+
+    public static final Image iPolygon = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-polygon").getImage();
+
+    /**
+     * Crea un nuevo LayoutZoomOutListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutAddPolygonListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            layoutPanel.getLayoutControl().addGeometryAdapterPoint();
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iPolygon;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+        layoutPanel.getLayoutControl().delLastPoint();
+        endGraphic();
+    }
+
+    public void endGraphic() {
+        layoutPanel.getLayoutControl().getGeometryAdapter().end();
+        FFrameGraphics fframe =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+        fframe.setGeometryAdapter(layoutPanel.getLayoutControl()
+            .getGeometryAdapter());
+        fframe.update(Geometry.TYPES.SURFACE, layoutPanel.getLayoutControl()
+            .getAT());
+        fframe.setBoundBox(layoutPanel.getLayoutControl().getGeometryAdapter()
+            .getBounds2D());
+        layoutPanel.getLayoutContext().addFFrame(fframe, true, true);
+        layoutPanel.getLayoutControl().setGeometryAdapter(new PolygonAdapter());
+        PluginServices.getMainFrame().enableControls();
+        layoutPanel.getLayoutControl().refresh();
+    }
+
+    public GeometryAdapter createGeometryAdapter() {
+        return new PolygonAdapter();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddScaleListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddScaleListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddScaleListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameScaleBar;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddScaleListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddScaleListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameScaleBar.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddBoxListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddBoxListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddBoxListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameTable;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddBoxListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddBoxListenerImpl(LayoutPanel l) {
+        super(l);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameTable.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPointListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPointListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPointListenerImpl.java	(revision 590)
@@ -0,0 +1,118 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.PointAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * realizar
+ * un zoom menos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddPointListenerImpl extends AbstractLayoutToolListener
+    implements LayoutPointListener, ILayoutGraphicListener {
+
+    public static final Image iPoint = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-point").getImage();
+
+    /**
+     * Crea un nuevo LayoutZoomOutListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutAddPointListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            endGraphic();
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iPoint;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void endGraphic() {
+        layoutPanel.getLayoutControl().addGeometryAdapterPoint();
+        layoutPanel.getLayoutControl().getGeometryAdapter().end();
+        PluginServices.getMainFrame().enableControls();
+        FFrameGraphics fframe =
+            (FFrameGraphics) layoutManager
+                .createFrame(FFrameGraphics.PERSISTENCE_DEFINITION_NAME);
+
+        // fframe.setLayout(layout);
+        fframe.setGeometryAdapter(layoutPanel.getLayoutControl()
+            .getGeometryAdapter());
+        fframe.update(Geometry.TYPES.POINT, layoutPanel.getLayoutControl()
+            .getAT());
+        Rectangle2D r =
+            layoutPanel.getLayoutControl().getGeometryAdapter().getBounds2D();
+        double d = 0.5;// FLayoutUtilities.toSheetDistance(50,layout.getAT());
+        r =
+            new Rectangle2D.Double(r.getX() - (d / 2), r.getY() - d, d * 2,
+                d * 2);
+        fframe.setBoundBox(r);
+        layoutPanel.getLayoutContext().addFFrame(fframe, true, true);
+        layoutPanel.getLayoutControl().setGeometryAdapter(new PointAdapter());
+        layoutPanel.getLayoutControl().refresh();
+    }
+
+    public GeometryAdapter createGeometryAdapter() {
+        return new PointAdapter();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddNorthListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddNorthListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddNorthListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameNorth;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddNorthListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddNorthListenerImpl(LayoutPanel l) {
+        super(l);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameNorth.PERSISTENCE_DEFINITION_NAME;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolylineListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolylineListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddPolylineListenerImpl.java	(revision 590)
@@ -0,0 +1,94 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.event.MouseEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.PolyLineAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutPointListener;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPointListener como herramienta para
+ * a�adir una polilinea.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddPolylineListenerImpl extends
+    AbstractLayoutGraphicListener implements LayoutPointListener {
+
+    public static final Image iLine = PluginServices.getIconTheme()
+        .get("cursor-layout-insert-polyline").getImage();
+
+    /**
+     * Crea un nuevo LayoutZoomOutListenerImpl.
+     * 
+     * @param mapControl
+     *            MapControl.
+     */
+    public LayoutAddPolylineListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.PointEvent)
+     */
+    public void point(PointEvent event) {
+        if (event.getEvent().getButton() == MouseEvent.BUTTON1) {
+            layoutPanel.getLayoutControl().addGeometryAdapterPoint();
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return iLine;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        System.out.println("cancelDrawing del ZoomOutListenerImpl");
+        return true;
+    }
+
+    public void pointDoubleClick(PointEvent event) {
+        layoutPanel.getLayoutControl().delLastPoint();
+        endGraphic();
+    }
+
+    public GeometryAdapter createGeometryAdapter() {
+        return new PolyLineAdapter();
+    }
+
+    @Override
+    public int getFFrameGraphicsType() {
+        return Geometry.TYPES.CURVE;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomInListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomInListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomInListenerImpl.java	(revision 590)
@@ -0,0 +1,103 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPanListener como herramienta para
+ * realizar el
+ * zoom m�s sobre una vista seleccionada.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutViewZoomInListenerImpl extends AbstractLayoutToolListener
+    implements LayoutMoveListener {
+
+    public static final Image izoomin = PluginServices.getIconTheme()
+        .get("cursor-layout-view-navigation-zoom-in-topoint").getImage();
+
+    /**
+     * Crea un nuevo LayoutViewZoomInListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutViewZoomInListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return izoomin;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        Point p1 = layoutPanel.getLayoutControl().getFirstPoint();
+        layoutPanel.getLayoutControl().setLastPoint();
+        layoutPanel.getLayoutControl().setPointAnt();
+        Point p2 = event.getEvent().getPoint();
+        layoutPanel.getLayoutControl().getLayoutZooms().setViewZoomIn(p1, p2);
+        layoutPanel.getLayoutControl().refresh();
+        PluginsLocator.getMainFrame().refreshControls();
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void click(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutEditGraphicsListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutEditGraphicsListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutEditGraphicsListenerImpl.java	(revision 590)
@@ -0,0 +1,136 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameEditableVertex;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutMoveListener como herramienta para
+ * editar
+ * una geometr�a.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutEditGraphicsListenerImpl extends AbstractLayoutToolListener
+    implements LayoutMoveListener {
+
+    public static final Image icrux = PluginServices.getIconTheme()
+        .get("cursor-layout-graphic-edit-vertex").getImage();
+
+    /**
+     * Crea un nuevo LayoutSelectionListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutEditGraphicsListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+        IFFrame[] fframes = layoutPanel.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame frame = fframes[i];
+            if (frame instanceof IFFrameEditableVertex) {
+                ((IFFrameEditableVertex) frame).pointDragged(FLayoutUtilities
+                    .toSheetPoint(event.getPoint(), layoutPanel
+                        .getLayoutControl().getAT()));
+            }
+        }
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return icrux;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        IFFrame[] fframes = layoutPanel.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame frame = fframes[i];
+            if (frame instanceof IFFrameEditableVertex) {
+                ((IFFrameEditableVertex) frame).pointPressed(FLayoutUtilities
+                    .toSheetPoint(event.getPoint(), layoutPanel
+                        .getLayoutControl().getAT()));
+            }
+        }
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        IFFrame[] fframes = layoutPanel.getLayoutContext().getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame frame = fframes[i];
+            if (frame instanceof IFFrameEditableVertex) {
+                if (frame.getSelected() != IFFrame.NOSELECT
+                    && ((IFFrameEditableVertex) frame).isEditing()) {
+                    IFFrame fframeAux;
+                    try {
+                        fframeAux = (IFFrame) frame.clone();
+                        ((IFFrameEditableVertex) fframeAux).startEditing();
+                        ((IFFrameEditableVertex) fframeAux).pointReleased(
+                            FLayoutUtilities.toSheetPoint(event.getPoint(),
+                                layoutPanel.getLayoutControl().getAT()),
+                            ((IFFrameEditableVertex) frame).getGeometry());
+                        layoutPanel.getLayoutContext().getFrameCommandsRecord()
+                            .update(frame, fframeAux);
+                        fframeAux.getBoundingBox(layoutPanel.getLayoutControl()
+                            .getAT());
+                        layoutPanel.getLayoutContext().updateFFrames();
+                    } catch (CloneNotSupportedException e) {
+                        throw new BehaviorException(
+                            "It is not possible to clone the object", e);
+                    }
+                }
+            }
+        }
+        layoutPanel.getLayoutControl().refresh();
+    }
+
+    public void click(PointEvent event) {
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomOutListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomOutListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutViewZoomOutListenerImpl.java	(revision 590)
@@ -0,0 +1,102 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+import java.awt.Point;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutMoveListener;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+
+/**
+ * Implementaci�n de la interfaz LayoutPanListener como herramienta para
+ * realizar el
+ * zoom menos sobre una vista seleccionada.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutViewZoomOutListenerImpl extends AbstractLayoutToolListener
+    implements LayoutMoveListener {
+
+    public static final Image izoomout = PluginServices.getIconTheme()
+        .get("cursor-layout-view-navigation-zoom-out-topoint").getImage();
+
+    /**
+     * Crea un nuevo LayoutViewZoomInListenerImpl.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutViewZoomOutListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener#move(java.awt.geom.Point2D,
+     *      java.awt.geom.Point2D)
+     */
+    public void drag(PointEvent event) {
+
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return izoomout;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return true;
+    }
+
+    public void press(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+    }
+
+    public void release(PointEvent event) throws BehaviorException {
+        layoutPanel.getLayoutControl().setLastPoint();
+        layoutPanel.getLayoutControl().setPointAnt();
+        Point p2 = event.getEvent().getPoint();
+        layoutPanel.getLayoutControl().getLayoutZooms().setViewZoomOut(p2);
+        layoutPanel.getLayoutControl().refresh();
+        PluginsLocator.getMainFrame().refreshControls();
+    }
+
+    public void move(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void click(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLegendListenerImpl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLegendListenerImpl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools/LayoutAddLegendListenerImpl.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.tools;
+
+import java.awt.Image;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.listener.LayoutAddRectangleWithDialogListener;
+
+/**
+ * Implementaci�n de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserci�n por rect�ngulo.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddLegendListenerImpl extends
+    LayoutAddRectangleWithDialogListener {
+
+    private final Image img = PluginServices.getIconTheme()
+        .get("cursor-selection-by-rectangle").getImage();
+
+    /**
+     * Crea un nuevo LayoutAddRectangleListener.
+     * 
+     * @param l
+     *            Layout.
+     */
+    public LayoutAddLegendListenerImpl(LayoutPanel layoutPanel) {
+        super(layoutPanel);
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#getCursor()
+     */
+    public Image getImageCursor() {
+        return img;
+    }
+
+    /**
+     * @see org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    @Override
+    public String getFFrameName() {
+        return FFrameLegend.PERSISTENCE_DEFINITION_NAME;
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/tools
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutDocument.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutDocument.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutDocument.java	(revision 590)
@@ -0,0 +1,77 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.util.Iterator;
+import org.gvsig.app.project.documents.AbstractDocument;
+import org.gvsig.app.project.documents.DocumentManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * Modelo del Layout.
+ * 
+ * @author Fernando Gonz�lez Cort�s
+ */
+public class DefaultLayoutDocument extends AbstractDocument implements
+    LayoutDocument {
+
+    private static final long serialVersionUID = 7320640550072493414L;
+    public static final String PERSISTENCE_DEFINITION_NAME = "DefaultLayoutDocument";
+
+    static final String LAYOUT_CONTEXT_OBJECT = "layoutContext";
+
+    private LayoutContext layoutContext = null;
+
+    public DefaultLayoutDocument(DocumentManager factory) {
+        super(factory);
+        this.layoutContext = new DefaultLayoutContext();
+
+    }
+
+    public DefaultLayoutDocument() {
+        this(null);
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        super.loadFromState(state);
+        this.layoutContext = (LayoutContext) state.get(LAYOUT_CONTEXT_OBJECT);
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        super.saveToState(state);
+        state.set(LAYOUT_CONTEXT_OBJECT, layoutContext);
+    }
+
+    public LayoutContext getLayoutContext() {
+        return layoutContext;
+    }
+
+    public Iterator deepiterator() {
+        return this.layoutContext.deepiterator();
+    }
+    
+    public Iterator iterator() {
+        return this.layoutContext.iterator();
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameManager.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameManager.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameManager.java	(revision 590)
@@ -0,0 +1,243 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.commands;
+
+import java.util.ArrayList;
+import java.util.BitSet;
+
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameViewDependence;
+
+public class FrameManager {
+    private ArrayList<IFFrame> fframes = new ArrayList<IFFrame>();
+    private BitSet invalidates = new BitSet();
+
+    /**
+     * Returns from an index the FFrame.
+     * 
+     * @param index
+     * 
+     * @return FFrame.
+     */
+    public IFFrame getFFrame(int index) {
+        return fframes.get(index);
+    }
+
+    /**
+     * Returns the number of FFrame.
+     * 
+     * @return Number of FFrames
+     */
+    public int getFFrameCount() {
+        return fframes.size();
+    }
+
+    /**
+     * Undo add FFrame from index.
+     * 
+     * @param index
+     */
+    public void undoAddFFrame(int index) {
+        doRemoveFFrame(index);
+    }
+
+    /**
+     * Add FFrame.
+     * 
+     * @param frame
+     * 
+     * @return index of new fframe.
+     */
+    public int doAddFFrame(IFFrame frame) {
+        fframes.add(frame);
+        int index = fframes.size() - 1;
+        notifyAdded(index);
+        return index; 
+    }
+
+    /**
+     * Add FFrame from index.
+     * 
+     * @param frame
+     *            New FFrame.
+     * @param index
+     *            Index of new FFrame.
+     */
+    public void doAddFFrame(IFFrame frame, int index) {
+        invalidates.set(index, false);
+        fframes.set(index, frame);
+        notifyAdded(index);
+    }
+
+    /**
+     * Undo modify an FFrame modified.
+     * 
+     * @param fant
+     *            Previous fframe.
+     * @param fnew
+     *            New FFrame.
+     * @param indexAnt
+     *            Actual index.
+     * @param indexLast
+     *            Previous index.
+     */
+    public void undoModifyFFrame(int index, int newIndex) {
+        undoRemoveFFrame(index);
+        undoAddFFrame(newIndex);
+        IFFrame fant = fframes.get(newIndex);
+        IFFrame fnew = fframes.get(index);
+        refreshDependences(fant, fnew);
+    }
+
+    /**
+     * Modify FFrame from index and new FFrame.
+     * 
+     * @param indexAnt
+     *            Actual index.
+     * @param frameNext
+     *            New FFrame.
+     * 
+     * @return New index of FFrame.
+     */
+    public int doModifyFFrame(int indexAnt, IFFrame frameNext) {
+        doRemoveFFrame(indexAnt);
+
+        return doAddFFrame(frameNext);
+    }
+
+    /**
+     * Undo Remove FFrame from index.
+     * 
+     * @param index
+     *            Actual index of FFrame.
+     */
+    public void undoRemoveFFrame(int index) {
+        invalidates.set(index, false);
+        notifyAdded(index);
+    }
+
+    /**
+     * Remove FFrame from actual index.
+     * 
+     * @param index
+     *            Actual index.
+     */
+    public void doRemoveFFrame(int index) {
+        invalidates.set(index, true);
+        notifyRemoved(index);
+    }
+    
+    protected void notifyRemoved(int index) {
+    	IFFrame frame = fframes.get(index);
+    	frame.frameRemoved();
+    }
+    
+    protected void notifyAdded(int index) {
+    	IFFrame frame = fframes.get(index);
+    	frame.frameAdded();
+    }
+
+    /**
+     * Returns all the fframes that are not removed.
+     * 
+     * @return Vector with fframes.
+     */
+    public IFFrame[] getFFrames() {
+        ArrayList<IFFrame> frames = new ArrayList<IFFrame>();
+
+        for (int i = 0; i < getFFrameCount(); i++) {
+            if (!invalidates.get(i)) {
+                frames.add(fframes.get(i));
+            }
+        }
+
+        IFFrame[] fframesV = frames.toArray(new IFFrame[0]);
+
+        return fframesV;
+    }
+
+    /**
+     * Returns all the fframes, remove and done not remove.
+     * 
+     * @return All FFrames.
+     */
+    public IFFrame[] getAllFFrames() {
+        return fframes.toArray(new IFFrame[0]);
+    }
+
+    /**
+     * Returns all the fframes, remove and done not remove and the ones that are
+     * in the FFrameGroups
+     * 
+     * @return All FFrames.
+     */
+    public IFFrame[] getAllFFrameToDepends() {
+        IFFrame[] fs = getAllFFrames();
+
+        return getFFrameToDepends(fs);
+    }
+
+    private IFFrame[] getFFrameToDepends(IFFrame[] fs) {
+        ArrayList<IFFrame> result = new ArrayList<IFFrame>();
+
+        for (int i = 0; i < fs.length; i++) {
+            result.add(fs[i]);
+
+            if (fs[i] instanceof FFrameGroup) {
+                IFFrame[] ffs =
+                    getFFrameToDepends(((FFrameGroup) fs[i]).getFFrames());
+
+                for (int j = 0; j < ffs.length; j++) {
+                    result.add(ffs[j]);
+                }
+            }
+        }
+
+        return result.toArray(new IFFrame[0]);
+    }
+
+    public void refreshDependences(IFFrame fant, IFFrame fnew) {
+        for (int i = 0; i < fframes.size(); i++) {
+            if (fframes.get(i) instanceof IFFrameViewDependence) {
+                IFFrameViewDependence f =
+                    (IFFrameViewDependence) fframes.get(i);
+                f.refreshDependence(fant, fnew);
+            }
+        }
+    }
+
+    public void redoModifyFFrame(int index, int newIndex, IFFrame frame) {
+        doRemoveFFrame(index);
+        doAddFFrame(frame, newIndex);
+        IFFrame fant = fframes.get(newIndex);
+        refreshDependences(fant, frame);
+    }
+
+    public BitSet invalidates() {
+        return invalidates;
+    }
+
+    public void clear() {
+
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameCommandsRecord.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameCommandsRecord.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/FrameCommandsRecord.java	(revision 590)
@@ -0,0 +1,79 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.commands;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.tools.undo.command.impl.DefaultUndoRedoCommandStack;
+
+/**
+ * Clase en memoria para registrar y gestionar los comandos que vamos
+ * realizando. La forma en que ha sido implementada esta clase, en vez de una
+ * �nica lista para albergar los comandos de deshacer(undos) y los de
+ * rehacer(redos), se ha optado por dos pilas una para deshacer(undos) y otra
+ * para rehacer(redos), de esta forma : Cuando se a�ade un nuevo comando, se
+ * inserta este a la pila de deshacer(undos) y se borra de la de
+ * rehacer(redos). Si se realiza un deshacer se desapila este comando de la
+ * pila deshacer(undos) y se apila en la de rehacer(redos). Y de la misma
+ * forma cuando se realiza un rehacer se desapila este comando de la pila de
+ * rehacer(redos) y pasa a la de deshacer(undos).
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FrameCommandsRecord extends DefaultUndoRedoCommandStack {
+
+    private FrameManager expansionManager;
+
+    public FrameCommandsRecord(FrameManager expansionManager) {
+        this.expansionManager = expansionManager;
+    }
+
+    public void insert(IFFrame frame) {
+        InsertFrameCommand command =
+            new InsertFrameCommand(expansionManager, frame, frame.getName());
+        add(command);
+        command.execute();
+    }
+
+    public void delete(IFFrame frame) {
+        DeleteFrameCommand command =
+            new DeleteFrameCommand(expansionManager, frame, frame.getName());
+        add(command);
+        command.execute();
+    }
+
+    public void update(IFFrame frame, IFFrame oldFrame) {
+        UpdateFrameCommand command =
+            new UpdateFrameCommand(expansionManager, frame, oldFrame,
+                frame.getName());
+        add(command);
+        command.execute();
+    }
+
+    public void clear() {
+        super.clear();
+        expansionManager.clear();
+    }
+
+    public FrameManager getFrameManager() {
+        return expansionManager;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/DeleteFrameCommand.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/DeleteFrameCommand.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/DeleteFrameCommand.java	(revision 590)
@@ -0,0 +1,73 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.commands;
+
+import java.io.IOException;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.tools.undo.command.Command;
+import org.gvsig.tools.undo.command.impl.AbstractCommand;
+
+public class DeleteFrameCommand extends AbstractCommand {
+
+    private FrameManager fm;
+    private int index;
+
+    public DeleteFrameCommand(FrameManager fm, IFFrame frame, String description) {
+        super(description);
+        this.fm = fm;
+        for (int i = 0; i < fm.getAllFFrames().length; i++) {
+            if (fm.getFFrame(i).equals(frame)) {
+                index = i;
+            }
+        }
+    }
+
+    /**
+     * @throws DriverIOException
+     * @throws IOException
+     * @see com.iver.cit.gvsig.fmap.edition.Command#undo()
+     */
+    public void undo() {
+        fm.undoRemoveFFrame(index);
+    }
+
+    /**
+     * @throws IOException
+     * @throws DriverIOException
+     * @see com.iver.cit.gvsig.fmap.edition.Command#redo()
+     */
+    public void redo() {
+        fm.doRemoveFFrame(index);
+    }
+
+    public int getType() {
+        return Command.DELETE;
+    }
+
+    public void execute() {
+        if (fm.invalidates().get(index)) {
+            return;
+        }
+        fm.doRemoveFFrame(index);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/UpdateFrameCommand.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/UpdateFrameCommand.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/UpdateFrameCommand.java	(revision 590)
@@ -0,0 +1,66 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.commands;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.tools.undo.command.Command;
+import org.gvsig.tools.undo.command.impl.AbstractCommand;
+
+public class UpdateFrameCommand extends AbstractCommand {
+    private int index;
+    private int newIndex;
+    private FrameManager fm;
+    private IFFrame frame;
+    private IFFrame antFrame;
+
+    public UpdateFrameCommand(FrameManager fm, IFFrame antFrame, IFFrame frame,
+        String description) {
+        super(description);
+        this.fm = fm;
+        this.frame = frame;
+        this.antFrame = antFrame;
+    }
+
+    public void undo() {
+        fm.undoModifyFFrame(index, newIndex);
+    }
+
+    public void redo() {
+        fm.redoModifyFFrame(index, newIndex, frame);
+    }
+
+    public int getType() {
+        return Command.UPDATE;
+    }
+
+    public void execute() {
+        index = -1;
+        IFFrame[] fframes = fm.getAllFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i].equals(antFrame) && !fm.invalidates().get(i)) {
+                index = i;
+            }
+        }
+        newIndex = fm.doModifyFFrame(index, frame);
+        fm.refreshDependences(antFrame, frame);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/InsertFrameCommand.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/InsertFrameCommand.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands/InsertFrameCommand.java	(revision 590)
@@ -0,0 +1,71 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout.commands;
+
+import java.io.IOException;
+
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.tools.undo.command.Command;
+import org.gvsig.tools.undo.command.impl.AbstractCommand;
+
+/**
+ * 
+ */
+public class InsertFrameCommand extends AbstractCommand {
+    private IFFrame frame;
+    private int index;
+    private FrameManager fm;
+
+    public InsertFrameCommand(FrameManager fm, IFFrame f, String description) {
+        super(description);
+        this.fm = fm;
+        frame = f;
+    }
+
+    /**
+     * @throws IOException
+     * @throws DriverIOException
+     * @throws IOException
+     * @throws DriverIOException
+     * @see com.iver.cit.gvsig.fmap.edition.Command#undo()
+     */
+    public void undo() {
+        fm.undoAddFFrame(index);
+    }
+
+    /**
+     * @throws DriverIOException
+     * @throws IOException
+     * @see com.iver.cit.gvsig.fmap.edition.Command#redo()
+     */
+    public void redo() {
+        fm.doAddFFrame(frame, index);
+    }
+
+    public int getType() {
+        return Command.INSERT;
+    }
+
+    public void execute() {
+        index = fm.doAddFFrame(frame);
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/commands
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutContext.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutContext.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutContext.java	(revision 590)
@@ -0,0 +1,291 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.geom.AffineTransform;
+import java.util.Iterator;
+
+import org.gvsig.app.project.documents.layout.commands.FrameCommandsRecord;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.toc.TocModelObserver;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface LayoutContext extends Persistent, Observable {
+
+    /**
+     * Returns the AffineTransform that is applying in the Layout.
+     *
+     * @return AffineTransform
+     */
+    public AffineTransform getAT();
+
+    /**
+     * Call all LayoutDrawListeners.
+     *
+     */
+    public void notifAllObservers();
+
+    /**
+     * It returns the print attributes of the Layout.
+     *
+     * @return Attributes.
+     */
+    public Attributes getAttributes();
+
+    /**
+     * Inserts the print attributes of Layout.
+     *
+     * @param attributes Attributes.
+     */
+    public void setAtributes(Attributes attributes);
+
+    /**
+     * It obtains the Array with all the FFrames that have been added al Layout.
+     *
+     * @return Array with all the FFrames that have been added al Layout.
+     */
+    public IFFrame[] getFFrames();
+
+    /**
+     * It obtains the FFrame from an index.
+     *
+     */
+    public IFFrame getFFrame(int i);
+
+    /**
+     * It orders the FFrames depending on its position specified by level.
+     *
+     */
+    public void updateFFrames();
+
+    /**
+     * Remove the fframes selected.
+     *
+     */
+    public void delFFrameSelected();
+
+    /**
+     * Clear the selection of FFrames.
+     *
+     */
+    public void clearSelection();
+
+    /**
+     * Remove the fframe of index.
+     *
+     */
+    public void delFFrame(int index);
+
+    /**
+     * Remove the fframe of parameter.
+     *
+     * @param frame FFrame to remove.
+     */
+    public void delFFrame(IFFrame frame);
+
+    /**
+     * Returns the EditableFeatureSource, is the control of all change in the
+     * FFrames of Layout.
+     *
+     * @return EditableFatureSource.
+     */
+    public FrameCommandsRecord getFrameCommandsRecord();
+
+    /**
+     * It adds a fframe to Arraylist of FFrames .
+     *
+     * @param frame fframe to add.
+     * @param clearSelection True True if clean the selection of the fframes
+     * already added and false if intends to maintain the same selection.
+     * @param select Boolean that indicates if has to remain selected the FFrame
+     * that is added or not.
+     */
+    public void addFFrame(IFFrame frame, boolean clearSelection, boolean select);
+
+    /**
+     * It adds a fframe to Arraylist of FFrames with the same properties.
+     *
+     * @param frame fframe to add.
+     */
+    public void addFFrameSameProperties(IFFrame frame);
+
+    /**
+     * Returns other number behind the current fframes.
+     *
+     * @return new Position behind.
+     */
+    public int getNumBehind();
+
+    /**
+     * Returns other number before the current fframes.
+     *
+     * @return new Position before.
+     */
+    public int getNumBefore();
+
+    /**
+     * It returns all the fframes included them erased and modified in all its
+     * previous forms.
+     *
+     * @return IFFrame[] Array of FFrames.
+     */
+    public IFFrame[] getAllFFrames();
+
+    /**
+     * Gets the list of selected FFrames
+     *
+     * @return An Array of selected FFrames
+     */
+    public IFFrame[] getSelectedFFrames();
+
+    /**
+     * Gets the list of selected FFrames that are instance of the provided
+     * Class.
+     *
+     * @param <T>
+     *
+     * @param clazz A class
+     * @return An Array of selected FFrames
+     */
+    public <T> T[] getSelectedFFrames(Class<T> clazz);
+
+    /**
+     * It returns if the Layout is in edition.
+     *
+     * @return True if Layout is in edition.
+     */
+    public boolean isEditable();
+
+    /**
+     * It inserts if the Layout is in edition.
+     *
+     * @param b True if Layout is in edition.
+     */
+    public void setEditable(boolean b);
+
+    /**
+     * It returns if has been applying in the fframes that are added to Layout
+     * the grid, or not.
+     *
+     * @return true if has been applying the grid.
+     */
+    public boolean isAdjustingToGrid();
+
+    /**
+     * It inserts if has been applying in the fframes that are added to Layout
+     * the grid, or not.
+     *
+     * @param b true if has been applying the grid.
+     */
+    public void setAdjustToGrid(boolean b);
+
+    /**
+     * It inserts if is shown or not the rule of the Layout.
+     *
+     * @param b True if is shown or not the rule of the Layout.
+     */
+    public void setRuler(boolean b);
+
+    /**
+     * Returns if is shown or not the rule of the Layout.
+     *
+     * @return True si se muestra la regla.
+     */
+    public boolean getRuler();
+
+    /**
+     * It returns if has been showing the grid of Layout, or not.
+     *
+     * @return true if has been showing the grid of Layout.
+     */
+    public boolean isGridVisible();
+
+    /**
+     * It inserts if draws the Grid in the Layout or not.
+     *
+     * @param b True if draws the Grid in the Layout.
+     */
+    public void setGridVisible(boolean b);
+
+    /**
+     * Refresh all FFrames of Layout.
+     */
+    public void fullRefresh();
+
+    public void setNumBehind(int numBehind);
+
+    public void setNumBefore(int numBefore);
+
+    /**
+     * Sets the model of the TOC. The LayoutPanel will create a TOC in the user
+     * interface if a tocModel has been set.
+     */
+    public void setTocModel(MapContext tocModel);
+
+    /**
+     * Gets the model of the TOC. The LayoutPanel will create a TOC in the user
+     * interface if a tocModel has been set.
+     */
+    public MapContext getTocModel();
+
+    /**
+     * Triggers a notification to the TocModel observers of type
+     * {@link TocModelChangedNotification#MODEL_CHANGED}
+     */
+    public void notifyTocUpdated(TocModelChangedNotification.Type notificationType);
+
+    public void addTocObserver(TocModelObserver observer);
+
+    public void removeTocObserver(TocModelObserver observer);
+
+    public void removeTocObservers();
+
+    /**
+     * True when the document window has been opened at least once, false
+     * otherwise. This is required to decide whether the page setting dialog has
+     * to be shown to the user, otherwise it would be shown every time the
+     * document is opened from project persistence
+     */
+    public boolean hasDocBeenOpened();
+
+    /**
+     * True when the document window has been opened at least once, false
+     * otherwise. This is required to decide whether the page setting dialog has
+     * to be shown to the user, otherwise it would be shown every time the
+     * document is opened from project persistence
+     */
+    public void setHasDocBeenOpened(boolean hasBeenOpened);
+    
+    /**
+     * Get an Iterator over al elements in the layout.
+     * 
+     * @return 
+     */
+    public Iterator deepiterator();
+    
+    public Iterator iterator();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutControl.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutControl.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutControl.java	(revision 590)
@@ -0,0 +1,667 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.Rectangle2D.Double;
+import java.awt.image.BufferedImage;
+import java.awt.image.MemoryImageSource;
+import java.util.HashMap;
+
+import javax.swing.JComponent;
+
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameEditableVertex;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.geometryadapters.GeometryAdapter;
+import org.gvsig.app.project.documents.layout.geometryadapters.PolyLineAdapter;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddBoxListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddCircleListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddLegendListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddLineListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddNorthListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddOverViewListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddPictureListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddPointListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddPolygonListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddPolylineListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddRectangleListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddScaleListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddTextListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutAddViewListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutEditGraphicsListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutPanListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutSelectListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutViewPanListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutViewZoomInListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutViewZoomOutListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutZoomInListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.LayoutZoomOutListenerImpl;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutEditBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutMoveBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutPointBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutRectangleBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutSelectBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutViewMoveBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutViewZoomBehavior;
+import org.gvsig.app.project.documents.layout.tools.behavior.LayoutZoomBehavior;
+import org.gvsig.app.project.documents.layout.tools.listener.ILayoutGraphicListener;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.observer.Observable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Control of Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class DefaultLayoutControl extends JComponent implements LayoutControl {
+    private static final int DESACTUALIZADO = 4;
+    private static final int ACTUALIZADO = 5;
+    
+    private static final long serialVersionUID = -8290006366669291510L;
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "LayoutControl";
+
+    private int status = DESACTUALIZADO;
+    private Rectangle2D rectVisible;
+    private BufferedImage img = null;
+    private BufferedImage imgRuler = null;
+    private LayoutContext layoutContext;
+    private Point origin = new Point(50, 50);
+    private Point rectOrigin = new Point(origin);
+    /**
+     * Size and position of the layout sheet within visible area of
+     * the layout component, measured in screen coordinates (pixels).
+     */
+    private Rectangle2D.Double rect = new Rectangle2D.Double(rectOrigin.x,
+        rectOrigin.y, 400, 300);
+    /**
+     * Visible area of the layout document, measured on paper coordinates.
+     */
+    private Rectangle2D.Double viewPort = new Rectangle2D.Double();
+    private FLayoutDraw layoutDraw = null;
+    private FLayoutFunctions layoutFunctions = null;
+    private LayoutBehavior currentLayoutTool = null;
+    private Image imageCursor = null;
+    private HashMap namesLayoutTools = new HashMap();
+    private Point m_FirstPoint = new Point(0, 0);
+    private Point m_PointAnt = new Point(0, 0);
+    private Point m_LastPoint = new Point(0, 0);
+    private LayoutEvents layoutEvents;
+    private Point position;
+    private GeometryAdapter geometryAdapter = new PolyLineAdapter();
+
+    private String currentTool;
+    private boolean m_bCancelDrawing = false;
+    private Rectangle reSel = null;
+    private boolean isReSel = true;
+    private FLayoutZooms layoutZooms;
+	private LayoutPanel layoutPanel;
+
+    private static Cursor transparentCursor = Toolkit.getDefaultToolkit()
+        .createCustomCursor(
+            Toolkit.getDefaultToolkit().createImage(
+                new MemoryImageSource(16, 16, new int[16 * 16], 0, 16)),
+            new Point(0, 0), "invisiblecursor");
+
+    /**
+     * Create a new object of LayoutControl.
+     * 
+     * @param layout
+     */
+    public DefaultLayoutControl() {  
+               
+    }
+    
+    public void initialize(LayoutPanel layoutPanel){
+    	setFocusable(true);
+    	this.layoutPanel = layoutPanel;
+        layoutDraw = new FLayoutDraw(layoutPanel);
+        layoutEvents = new LayoutEvents(layoutPanel);
+        layoutZooms = new FLayoutZooms(layoutPanel);
+        layoutFunctions = new FLayoutFunctions(layoutPanel);
+        addComponentListener(layoutEvents);
+        addMouseMotionListener(layoutEvents);
+        addMouseListener(layoutEvents);
+
+        LayoutPanListenerImpl lpl = new LayoutPanListenerImpl(layoutPanel);
+        addLayoutTool("layoutpan", new LayoutMoveBehavior(lpl));
+
+        LayoutZoomInListenerImpl lzil = new LayoutZoomInListenerImpl(layoutPanel);
+        addLayoutTool("layoutzoomin", new LayoutZoomBehavior(lzil));
+
+        LayoutZoomOutListenerImpl lzol = new LayoutZoomOutListenerImpl(layoutPanel);
+        addLayoutTool("layoutzoomout", new LayoutZoomBehavior(lzol));
+
+        LayoutAddViewListenerImpl lavl = new LayoutAddViewListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddview", new LayoutRectangleBehavior(lavl));
+
+        LayoutAddOverViewListenerImpl laovl =
+            new LayoutAddOverViewListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddoverview", new LayoutRectangleBehavior(laovl));
+
+        LayoutAddPictureListenerImpl lapl =
+            new LayoutAddPictureListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddpicture", new LayoutRectangleBehavior(lapl));
+
+        LayoutAddNorthListenerImpl lanorthl =
+            new LayoutAddNorthListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddnorth", new LayoutRectangleBehavior(lanorthl));
+
+        LayoutAddScaleListenerImpl lasl =
+            new LayoutAddScaleListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddscale", new LayoutRectangleBehavior(lasl));
+
+        LayoutAddLegendListenerImpl lall =
+            new LayoutAddLegendListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddlegend", new LayoutRectangleBehavior(lall));
+
+        LayoutAddTextListenerImpl latl = new LayoutAddTextListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddtext", new LayoutRectangleBehavior(latl));
+
+        LayoutAddBoxListenerImpl labl = new LayoutAddBoxListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddbox", new LayoutRectangleBehavior(labl));
+
+        LayoutAddPointListenerImpl lapointl =
+            new LayoutAddPointListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddpoint", new LayoutPointBehavior(lapointl));
+
+        LayoutAddLineListenerImpl lalinel =
+            new LayoutAddLineListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddline", new LayoutPointBehavior(lalinel));
+
+        LayoutAddPolygonListenerImpl lapolygonl =
+            new LayoutAddPolygonListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddpolygon", new LayoutPointBehavior(lapolygonl));
+
+        LayoutAddPolylineListenerImpl lapolylinel =
+            new LayoutAddPolylineListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddpolyline", new LayoutPointBehavior(lapolylinel));
+
+        LayoutAddCircleListenerImpl lacirclel =
+            new LayoutAddCircleListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddcircle", new LayoutPointBehavior(lacirclel));
+
+        LayoutAddRectangleListenerImpl larectanglel =
+            new LayoutAddRectangleListenerImpl(layoutPanel);
+        addLayoutTool("layoutaddrectangle", new LayoutPointBehavior(
+            larectanglel));
+
+        LayoutViewPanListenerImpl lvpl = new LayoutViewPanListenerImpl(layoutPanel);
+        addLayoutTool("layoutviewpan", new LayoutViewMoveBehavior(lvpl));
+
+        LayoutViewZoomInListenerImpl lvzil =
+            new LayoutViewZoomInListenerImpl(layoutPanel);
+        addLayoutTool("layoutviewzoomin", new LayoutViewZoomBehavior(lvzil));
+
+        LayoutViewZoomOutListenerImpl lvzol =
+            new LayoutViewZoomOutListenerImpl(layoutPanel);
+        addLayoutTool("layoutviewzoomout", new LayoutViewZoomBehavior(lvzol));
+
+        LayoutSelectListenerImpl lselectl =
+            new LayoutSelectListenerImpl(layoutPanel);
+        addLayoutTool("layoutselect", new LayoutSelectBehavior(lselectl));
+
+        LayoutEditGraphicsListenerImpl leditl =
+            new LayoutEditGraphicsListenerImpl(layoutPanel);
+        addLayoutTool("layoutedit", new LayoutEditBehavior(leditl));
+    }
+
+    public String getCurrentTool() {
+        return currentTool;
+    }
+
+    public void addLayoutTool(String name, LayoutBehavior tool) {
+        namesLayoutTools.put(name, tool);
+        tool.setLayoutControl(this);
+    }
+
+    public void setLayoutContext(LayoutContext lc) {
+        layoutContext = lc;
+        layoutContext.addObserver(this);
+        fullRect();
+    }
+
+    /**
+     * paintComponent of Layout.
+     * 
+     * @param g
+     *            Graphics of Layout.
+     */
+    protected void paintComponent(Graphics g) {
+        clipVisibleRect((Graphics2D) g);
+
+        Rectangle rClip = g.getClipBounds();
+
+        if (rClip == null) {
+            System.err.println("clip = null");
+        }
+
+        switch (status) {
+        case DESACTUALIZADO:
+            if (getWidth() == 0) {
+                return;
+            }
+
+            img =
+                new BufferedImage(getWidth(), getHeight(),
+                    BufferedImage.TYPE_INT_ARGB);
+            imgRuler =
+                new BufferedImage(getWidth(), getHeight(),
+                    BufferedImage.TYPE_INT_ARGB);
+
+            Graphics gimag = img.getGraphics();
+            Graphics gimgRuler = imgRuler.getGraphics();
+            clipVisibleRect((Graphics2D) gimag);
+
+            try {
+                layoutDraw.drawLayout((Graphics2D) gimag, img);
+            } catch (ReadException e) {
+                e.printStackTrace();
+            }
+
+            g.setClip(rClip);
+            layoutDraw.drawRectangle((Graphics2D) g);
+
+            g.drawImage(img, 0, 0, this);
+            g.setClip(rClip);
+
+            layoutDraw.drawGrid((Graphics2D) gimgRuler);
+            layoutDraw.drawRuler((Graphics2D) gimgRuler, Color.black);
+            setStatus(ACTUALIZADO);
+            repaint();
+
+            break;
+
+        case ACTUALIZADO:
+            layoutDraw.drawRectangle((Graphics2D) g);
+
+            if (currentLayoutTool != null) {
+                currentLayoutTool.paintComponent(g);
+            } else {
+                g.drawImage(img, 0, 0, this);
+                layoutDraw.drawHandlers((Graphics2D) g, Color.black);
+            }
+
+            g.setClip(rClip);
+            drawCursor(g);
+        }
+    }
+
+    private void setStatus(int s) {
+        status = s;
+    }
+
+    /**
+     * Clip on visible rectangle.
+     * 
+     * @param g2d
+     *            Graphics.
+     */
+    private void clipVisibleRect(Graphics2D g2d) {
+        rectVisible = this.getVisibleRect();
+        g2d.clipRect((int) rectVisible.getMinX(), (int) rectVisible.getMinY(),
+            (int) rectVisible.getWidth(), (int) rectVisible.getHeight());
+    }
+
+    public BufferedImage getImgRuler() {
+        return imgRuler;
+    }
+
+    public void fullRect() {
+        Rectangle2D r = new Rectangle2D.Double(origin.x, origin.y, getWidth(),
+            getHeight());
+
+        if (layoutContext.getAttributes().isLandscape()) {
+            r =
+                layoutContext.getAttributes().getRectangleLandscape(r,
+                    getWidth(), getHeight());
+        } else {
+            r =
+                layoutContext.getAttributes().getRectanglePortrait(r,
+                    getWidth(), getHeight());
+        }
+        setRect(r);
+        refresh();
+    }
+
+    public Rectangle2D.Double getRect() {
+    	return (Rectangle2D.Double) rect.clone();
+    }
+
+    public void setRect(Rectangle2D r) {
+        rect.setRect(r);
+        Rectangle2D bounds = getBounds();
+        if (rect.getWidth()>0 && bounds.getWidth()>0) { // only when the component has been laid out and rect properly initialized
+        	// ensure the AT is properly initialized
+        	layoutDraw.initializeAffineTransform();
+        	AffineTransform at = layoutContext.getAT();
+        	if (at!=null) {
+        		Rectangle2D.Double newVp = new Rectangle2D.Double(0d, 0d, bounds.getWidth(), bounds.getHeight());
+        		viewPort.setRect(FLayoutUtilities.toSheetRect(newVp, at));
+        	}
+        }
+    }
+
+    public BufferedImage getImage() {
+        return img;
+    }
+
+    /**
+     * Draw the cursor on the Graphics.
+     * 
+     * @param g
+     *            Graphics.
+     */
+    private void drawCursor(Graphics g) {
+        if ((imageCursor != null) && (position != null)) {
+            Point pAdjusted = position;
+            g.drawImage(imageCursor, (int) pAdjusted.getX() - 16,
+                (int) pAdjusted.getY() - 16, this);
+        }
+    }
+
+    public void setMapCursor(Image image) {
+        imageCursor = image;
+    }
+
+    public void setTool(String toolName) {
+        LayoutBehavior layoutTool =
+            (LayoutBehavior) namesLayoutTools.get(toolName);
+        currentLayoutTool = layoutTool;
+        currentLayoutTool.setLayoutControl(this);
+        currentTool = toolName;
+        this.setMapCursor(layoutTool.getImageCursor());
+
+        if (getCurrentLayoutTool().getListener() instanceof ILayoutGraphicListener) {
+            geometryAdapter =
+                ((ILayoutGraphicListener) getCurrentLayoutTool().getListener())
+                    .createGeometryAdapter();
+        }
+
+        if (getCurrentTool().equals("layoutedit")) {
+            startEdit();
+        } else {
+            stopEdit();
+        }
+    }
+
+	public void setDefaultTool() {
+        PluginsLocator.getMainFrame().setSelectedTool("selection-select-by-rectangle-layout");
+        setTool("layoutselect");
+	}
+
+    public void startEdit() {
+        IFFrame[] fframes = layoutContext.getFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame frame = fframes[i];
+
+            if (frame instanceof IFFrameEditableVertex) {
+                if (frame.getSelected() != IFFrame.NOSELECT) {
+                    ((IFFrameEditableVertex) frame).startEditing();
+                } else {
+                    ((IFFrameEditableVertex) frame).stopEditing();
+                }
+            }
+        }
+
+        refresh();
+    }
+
+    public void stopEdit() {
+        boolean refresh = false;
+        IFFrame[] fframes = layoutContext.getFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            IFFrame frame = fframes[i];
+
+            if (frame instanceof IFFrameEditableVertex) {
+                if (((IFFrameEditableVertex) frame).isEditing()) {
+                    ((IFFrameEditableVertex) fframes[i]).stopEditing();
+                    refresh = true;
+                }
+            }
+        }
+
+        if (refresh) {
+            refresh();
+        }
+    }
+
+    public Point getRectOrigin() {
+        return rectOrigin;
+    }
+
+    public FLayoutDraw getLayoutDraw() {
+        return layoutDraw;
+    }
+
+    public LayoutBehavior getCurrentLayoutTool() {
+        return currentLayoutTool;
+    }
+
+    public Point getFirstPoint() {
+        return m_FirstPoint;
+    }
+
+    public Point getPointAnt() {
+        return m_PointAnt;
+    }
+
+    public Point getLastPoint() {
+        return m_LastPoint;
+    }
+
+    public void setFirstPoint() {
+        m_FirstPoint = position;
+    }
+
+    public void setPointAnt() {
+        m_PointAnt = position;
+    }
+
+    public void setLastPoint() {
+        m_LastPoint = position;
+    }
+
+    public void setPosition(Point point2) {
+        if (layoutContext.isAdjustingToGrid()
+            && getCurrentLayoutTool().isAdjustable()) {
+            position =
+                FLayoutUtilities.getPointGrid(point2, layoutContext
+                    .getAttributes().getHGridGapCm(), layoutContext
+                    .getAttributes().getVGridGapCm(), layoutContext.getAT());
+        } else {
+            position = point2;
+        }
+    }
+
+    public Point getPosition() {
+        return position;
+    }
+
+    public AffineTransform getAT() {
+        return layoutContext.getAT();
+    }
+
+    public GeometryAdapter getGeometryAdapter() {
+        return geometryAdapter;
+    }
+
+    public void delLastPoint() {
+        getGeometryAdapter().delLastPoint();
+    }
+
+    public int addGeometryAdapterPoint() {
+        return getGeometryAdapter().addPoint(
+            FLayoutUtilities.toSheetPoint(getPosition(), getAT()));
+    }
+
+    public void setGeometryAdapterPoinPosition() {
+        getGeometryAdapter().pointPosition(
+            FLayoutUtilities.toSheetPoint(getPosition(), getAT()));
+    }
+
+    public void clearMouseImage() {
+        setCursor(transparentCursor);
+    }
+
+    public void refresh() {
+    	AffineTransform at = calculateTransformFromViewport();
+    	if (at!=null) {
+        	// update rect according to the viewport rectangle
+    		Size s = getLayoutContext().getAttributes().getPaperSize();
+    		Rectangle2D paperRect = new Rectangle2D.Double(0, 0, s.getWidth(), s.getHeight());
+    		Rectangle2D newRect = FLayoutUtilities.fromSheetRect(paperRect, at);
+    		setRect(newRect);
+    	}
+    	// repaint
+        setStatus(DESACTUALIZADO);
+        invalidate();
+        repaint();
+    }
+    
+    /**
+     * Calculates the affine transform using the viewport and the control size,
+     * instead of calculating it from {@link #rect}. as usual. This is required when
+     * the component size changes, as {@link #rect}. has to be recalculated using
+     * the viewport, and thus we can't calculate the affine transform using
+     * {@link #rect}.
+     * 
+     * @return An matrix to transform from paper coordinates to screen coordinates
+     */
+    protected AffineTransform calculateTransformFromViewport() {
+    	Rectangle2D bounds = getBounds();
+    	if (bounds.getWidth()>0 && viewPort.getHeight()>0) {
+    		AffineTransform at = new AffineTransform();
+    		// paper (paper units) to screen (pixels) scale
+        	double scale, scale1, scale2;
+        	scale1 = bounds.getHeight() / viewPort.getHeight() * 1;
+        	scale2 = bounds.getWidth() / viewPort.getWidth() * 1;
+        	scale = (scale1+scale2)/2d; // average scale
+    		AffineTransform scaleAt = new AffineTransform();
+    		AffineTransform translationAt = new AffineTransform();
+    		translationAt.setToTranslation(-viewPort.getMinX(), -viewPort.getMinY());
+    		scaleAt.setToScale(scale, scale);
+    		at.concatenate(scaleAt);
+    		at.concatenate(translationAt);
+    		return at;
+    	}
+    	return null;
+    }
+
+    public synchronized boolean isDrawingCancelled() {
+        return m_bCancelDrawing;
+    }
+
+    public synchronized void setCancelDrawing(boolean b) {
+        m_bCancelDrawing = b;
+
+        for (int i = 0; i < layoutContext.getFFrames().length; i++) {
+            IFFrame fframe = layoutContext.getFFrame(i);
+
+            if (fframe instanceof IFFrameUseFMap
+                && (((IFFrameUseFMap) fframe).getMapContext() != null)) {
+                // //TODO((FFrameView)
+                // getFFrames().get(i)).getFMap().setCancelDrawing(b);
+            }
+        }
+    }
+
+    public Rectangle getReSel() {
+        return reSel;
+    }
+
+    public boolean isReSel() {
+        return isReSel;
+    }
+
+    public void setIsReSel(boolean b) {
+        isReSel = b;
+    }
+
+    public void viewFull() throws ReadException {
+        IFFrame[] fframes = layoutContext.getSelectedFFrames();
+
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+
+                if (fframe.getMapContext() != null) {
+                    fframe.fullExtent();
+                }
+
+                fframe.refresh();
+            }
+        }
+
+        refresh();
+    }
+
+    public FLayoutZooms getLayoutZooms() {
+        return layoutZooms;
+    }
+
+    public FLayoutFunctions getLayoutFunctions() {
+        return layoutFunctions;
+    }
+
+    public LayoutContext getLayoutContext() {
+        return layoutContext;
+    }
+
+    public void setGeometryAdapter(GeometryAdapter adapter) {
+        geometryAdapter = adapter;
+    }
+
+    public JComponent getComponent() {
+        return this;
+    }
+
+    public void update(Observable observable, Object notification) {
+       if ((notification != null) && (notification instanceof LayoutNotification)){
+    	   LayoutNotification layoutNotification = (LayoutNotification)notification;
+           if (LayoutNotification.LAYOUT_VALIDATED.equals(layoutNotification.getType())){
+               status = ACTUALIZADO;
+           }else if (LayoutNotification.LAYOUT_INVALIDATED.equals(layoutNotification.getType())){
+               status = DESACTUALIZADO;
+           }else if (LayoutNotification.LAYOUT_REFRESH.equals(layoutNotification.getType())){
+               refresh();
+           }
+       }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutNotification.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutNotification.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutNotification.java	(revision 590)
@@ -0,0 +1,47 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+
+
+/**
+ * @author gvSIG Team
+ * @version $Id$
+ *
+ */
+public interface LayoutNotification {
+	/** Fired when the layout has to be invalidated */
+    public static final String LAYOUT_INVALIDATED = "layout_invalidated";
+
+    /** Fired when the layout doesn't have to be repainted */
+    public static final String LAYOUT_VALIDATED = "layout_validated";
+    
+
+    /** Fired when the layout has to be invalidated and immediately repainted */
+    public static final String LAYOUT_REFRESH = "layout_refresh";
+	
+    /**
+     * Returns the type of this notification, represented by one of the constants defined in this interface.
+     * @return a String containing this notification's type
+     */
+    public String getType();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Attributes.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Attributes.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/Attributes.java	(revision 590)
@@ -0,0 +1,1452 @@
+/**
+ * gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright (C) 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.app.project.documents.layout;
+
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.print.PageFormat;
+import java.awt.print.Paper;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+
+import javax.print.attribute.DocAttributeSet;
+import javax.print.attribute.HashDocAttributeSet;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.standard.Copies;
+import javax.print.attribute.standard.Fidelity;
+import javax.print.attribute.standard.Media;
+import javax.print.attribute.standard.MediaPrintableArea;
+import javax.print.attribute.standard.MediaSizeName;
+import javax.print.attribute.standard.OrientationRequested;
+import javax.print.attribute.standard.PrintQuality;
+import javax.print.attribute.standard.Sides;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.extension.LayoutExtension;
+import org.gvsig.app.gui.preferencespage.PreferenceKeys;
+import org.gvsig.compat.CompatLocator;
+import org.gvsig.compat.print.PrintAttributes;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.i18n.Messages;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.Persistent;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.utils.XMLEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.app.project.documents.layout.Size;
+
+/**
+ * Attributes of Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ * @author jldominguez
+ */
+public class Attributes implements Persistent, Cloneable {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "Attributes";
+    public static final String DPI_FIELD = "DPI";
+    public static final String DPISCREEN_FIELD = "DPISCREEN";
+    public static final String TYPEUNIT_FIELD = "typeUnit";
+    public static final String NUMX_FIELD = "numX";
+    public static final String NUMY_FIELD = "numY";
+    public static final String UNITX_FIELD = "unitX";
+    public static final String UNITY_FIELD = "unitY";
+    public static final String HASMARGIN_FIELD = "hasMargin";
+    public static final String RESOLUTIONSEL_FIELD = "resolutionSel";
+    public static final String TYPESEL_FIELD = "typeSel";
+    public static final String SELTYPEUNIT_FIELD = "selTypeUnit";
+    public static final String SIZEPAPER_FIELD = "sizePaper";
+    public static final String AREA_FIELD = "area";
+    public static final String SIZEINUNITS_FIELD = "sizeInUnits";
+    public static final String ISLANDSEL_FIELD = "isLandSel";
+    public static final String DEGREES = "Grados";
+    public static final int HIGH = 0;
+    public static final int NORMAL = 1;
+    public static final int DRAFT = 2;
+
+    // Para impresi�n
+    public final static double PULGADA = 2.54;
+
+    public final static Size STANDARD_LETTER_PAPER_SIZE = new Size(8.5, 11.0);
+    public final static Size STANDARD_FOLIO_PAPER_SIZE = new Size(8.5, 13.0);
+    public final static Size STANDARD_LEGAL_PAPER_SIZE = new Size(8.5, 14.0);
+    public final static Size STANDARD_TABLOID_PAPER_SIZE = new Size(11.0, 17.0);
+    public final static Size METRIC_A0_PAPER_SIZE = new Size(118.9, 84.1);
+    public final static Size METRIC_A1_PAPER_SIZE = new Size(84.1, 59.4);
+    public final static Size METRIC_A2_PAPER_SIZE = new Size(59.4, 42.0);
+    public final static Size METRIC_A3_PAPER_SIZE = new Size(42.0, 29.7);
+    public final static Size METRIC_A4_PAPER_SIZE = new Size(29.7, 21.0);
+    public final static Size METRIC_A5_PAPER_SIZE = new Size(21.0, 14.8);
+    public final static Size ANSI_ENG_A_PAPER_SIZE = new Size(11.0, 8.5);
+    public final static Size ANSI_ENG_B_PAPER_SIZE = new Size(17.0, 11.0);
+    public final static Size ANSI_ENG_C_PAPER_SIZE = new Size(22.0, 17.0);
+    public final static Size ANSI_ENG_D_PAPER_SIZE = new Size(34.0, 22.0);
+    public final static Size ANSI_ENG_E_PAPER_SIZE = new Size(44.0, 34.0);
+    public final static Size ANSI_ARCH_A_PAPER_SIZE = new Size(12.0, 9.0);
+    public final static Size ANSI_ARCH_B_PAPER_SIZE = new Size(18.0, 12.0);
+    public final static Size ANSI_ARCH_C_PAPER_SIZE = new Size(24.0, 18.0);
+    public final static Size ANSI_ARCH_D_PAPER_SIZE = new Size(36.0, 24.0);
+    public final static Size ANSI_ARCH_E_PAPER_SIZE = new Size(42.0, 30.0);
+    
+    /**
+     * Stores the last custom paper size. It will be equal to
+     * {@link #getPaperSize()} when {@link #getType()} is
+     * {@link #CUSTOM}.
+     * CUSTOM_PAPER_SIZE knows about portrait/landscape
+     * (same as other PAPER constants)
+     */
+    private Size last_custom_paper_size = new Size(100.0, 100.0);
+    
+    public final static int PRINT = 0;
+    public final static int CUSTOM = 6;
+    public final static int A0 = 5;
+    public final static int A1 = 4;
+    public final static int A2 = 3;
+    public final static int A3 = 2;
+    public final static int A4 = 1;
+    public static int DPI = 300;
+    public static int DPISCREEN = 72;
+    private static Point2D defaultGridGap;
+
+    private PrintRequestAttributeSet attributes =
+        new HashPrintRequestAttributeSet();
+    /**
+     * Media size name, used when type is {@link #PRINT}.
+     * @see #setType(int)
+     */
+    private MediaSizeName m_type = MediaSizeName.ISO_A4;
+    private OrientationRequested m_Orientation;
+    /**
+     * Change factor from configured map unit (m_selTypeUnit) to centimeters
+     */
+    private double m_TypeUnit = getConversionFactorToCm(2); // [2] = Centimeters
+    private String m_NameUnit;
+    /**
+     * Horizontal space between grid lines, measured in centimeters
+     */
+    private Double m_gridGapCmX = null;
+    /**
+     * Vertical space between grid lines, measured  in centimeters
+     */
+    private Double m_gridGapCmY = null;
+    /**
+     * Horizontal space between grid lines, measured in centimeters
+     */
+    private double m_gridGapPxX = 0;
+    /**
+     * Vertical space between grid lines, measured  in pixels
+     */
+    private double m_gridGapPxY = 0;
+    private boolean hasmargin;
+    private int m_resolutionSel = NORMAL;
+    private int m_typeSel = PRINT;
+    /**
+     * The selected unit (km, cm, etc) for this layout. It defaults to centimeters
+     * 
+     * @see {@link MapContext#getDistanceNames()}
+     * @see {@link MapContext#getDistanceTrans2Meter()}
+     */
+    private int m_selTypeUnit = 2;
+    
+    /**
+     * Paper size in centimeters.
+     * This field changes when it's landscape
+     * (it "knows" about portrait/landscape)
+     */
+    private Size m_sizePaper = new Size(
+        METRIC_A4_PAPER_SIZE.getHeight(),
+        METRIC_A4_PAPER_SIZE.getWidth());
+
+    /**
+     * Print area (top, bottom, left, right).
+     * This array changes when it's landscape
+     * (it "knows" about portrait/landscape)
+     */
+    private double[] area_tblr = {
+        0,
+        0,
+        0,
+        0 };
+    
+    /**
+     * Page size in user selected units
+     * This field changes when it's landscape
+     * (it "knows" about portrait/landscape)
+     */
+    private Size m_sizeinUnits = m_sizePaper;
+
+    /**
+     * Create a new object of Attributes.
+     * 
+     */
+    public Attributes() {
+        m_NameUnit = Messages.getText("Centimetros");
+        m_Orientation = OrientationRequested.LANDSCAPE;
+        m_type = MediaSizeName.ISO_A4;
+        resetSizeinUnits();
+
+        hasmargin = false;
+        attributes.add(new Copies(1));
+        attributes.add(MediaSizeName.ISO_A4);
+        attributes.add(Sides.ONE_SIDED);
+        attributes.add(Fidelity.FIDELITY_FALSE);
+        attributes.add(PrintQuality.NORMAL);
+
+        setType(m_typeSel);
+
+        attributes.add(new MediaPrintableArea(0, 0,
+                (float) ((getPaperSize().getWidth() * DPISCREEN) / PULGADA),
+                (float) ((getPaperSize().getHeight() * DPISCREEN) / PULGADA),
+                MediaPrintableArea.MM)); // FIXME: centimeters or milimeters
+    }
+
+    /**
+     * @return
+     */
+    public boolean isLandscape() {
+        return m_Orientation.getValue() ==
+            OrientationRequested.LANDSCAPE.getValue();
+    }
+    
+    /**
+     * @return
+     */
+    public boolean isPortrait() {
+        return m_Orientation.getValue() ==
+            OrientationRequested.PORTRAIT.getValue();
+    }
+
+    /**
+     * Inserts the Layout's properties to print.
+     * 
+     * @param typeSel
+     *            Type of sheet.
+     * @param units
+     *            Units.
+     * @param isLand
+     *            True if the sheet is horizontal.
+     * @param margin
+     *            True if the sheet has margin.
+     * @param resolution
+     *            Type of quality of resolution.
+     * @param area
+     *            Printing area (top, bottom, left, right). 
+     */
+    public void setSelectedOptions(int typeSel, int units, boolean isLand,
+        boolean margin, int resolution, double[] _area_tplr) {
+        setType(typeSel);
+        setUnit(units);
+        setIsLandScape(isLand);
+        hasmargin = margin;
+        setResolution(resolution);
+        area_tblr = _area_tplr;
+    }
+    
+    /**
+     * Paper size, measured in centimeters.
+     * This field knows about orientation.
+     * 
+     * Note that this size is always measured in centimeters, regardless
+     * the selected unit for the page. However, the user should be always
+     * presented measures in the selected unit.
+     * 
+     * @see #getUnit()
+     * @see #setUnit(int)
+     * 
+     * @return
+     */
+    public Size getPaperSize() {
+        return m_sizePaper;
+    }
+    
+    /**
+     * Sets the paper size, measured in centimeters
+     * @param paperSize
+     */
+    public void setPaperSize(Size paperSize) {
+    	this.m_sizePaper = getCorrectedSize(paperSize);
+    	if (getType()==CUSTOM) {
+    		this.last_custom_paper_size = paperSize;
+    	}
+    	resetSizeinUnits();
+    }
+    
+    /**
+     * Gets the last selected custom paper size. It will be equal to
+     * {@link #getPaperSize()} when {@link #getType()} is
+     * {@link #CUSTOM}.
+     * @return
+     */
+    public Size getCustomPaperSize() {
+    	return this.last_custom_paper_size;
+    }
+
+    /**
+     * Returns a PageFormat with the properties of printing.
+     * 
+     * @return PageFormat
+     */
+    public PageFormat getPageFormat() {
+        PageFormat pf1 = new PageFormat();
+        Paper paper = pf1.getPaper();
+
+        paper.setSize(
+            (m_sizePaper.getWidth() * DPISCREEN) / PULGADA,
+            (m_sizePaper.getHeight() * DPISCREEN) / PULGADA);
+
+        if (isLandscape()) {
+            pf1.setOrientation(0);
+            /*
+             * 'area_tblr' and 'm_sizeinUnits' depend on
+             * whether it is portrait or landscape, but
+             * 'Paper' and 'm_sizePaper' must not know if it's
+             * portrait/landscape, so we change order of
+             * parameters. 'PageFormat' will do the changes again
+             * because it is aware of portrait/landscape
+             */
+            paper.setImageableArea(
+                getInPixels(area_tblr[1]),
+                getInPixels(area_tblr[2]),
+                getInPixels(m_sizeinUnits.getHeight() - area_tblr[0] - area_tblr[1]),
+                getInPixels(m_sizeinUnits.getWidth()  - area_tblr[2] - area_tblr[3]));
+        } else {
+            // portrait
+            pf1.setOrientation(1);
+            paper.setImageableArea(
+                getInPixels(area_tblr[2]),
+                getInPixels(area_tblr[0]),
+                getInPixels(m_sizeinUnits.getWidth() - area_tblr[2] - area_tblr[3]),
+                getInPixels(m_sizeinUnits.getHeight()  - area_tblr[0] - area_tblr[1]));
+        }
+
+        pf1.setPaper(paper);
+        return pf1;
+    }
+
+    /**
+     * Changes centimeters to pixels.
+     * 
+     * @param d
+     *            Centimeters.
+     * 
+     * @return Pixels.
+     */
+    private double getInPixels(double d) {
+        return d * (DPISCREEN / PULGADA);
+    }
+
+    /**
+     * Changes pixels to centimeters.
+     * 
+     * @param d
+     *            Pixel.
+     * 
+     * @return Centimeters.
+     */
+    private double getInCM(double d) {
+        return d / (DPISCREEN / PULGADA);
+    }
+
+    /**
+     * Returns the printing area.
+     * The value returned changes if orientation changes
+     * (it "knows" about portrait/landscape)
+     * 
+     * @return Rectangle Area.
+     */
+    public Rectangle2D getArea() {
+        Rectangle2D.Double rect = new Rectangle2D.Double();
+        rect.setRect(
+                area_tblr[2],
+                area_tblr[0],
+                m_sizePaper.getWidth() - area_tblr[2] - area_tblr[3],
+                m_sizePaper.getHeight()  - area_tblr[0] - area_tblr[1]);
+        return rect;
+    }
+    
+    public double[] getAreaInsets() {
+        return area_tblr;
+    }
+
+    /**
+     * Inserts the attributes with a PageFormat.
+     * 
+     * @param pf
+     *            PageFormat.
+     */
+    public void setPageFormat(PageFormat pf) {
+        
+        /*
+         * Paper does not know about orientation
+         */
+        Size portrait_size = new Size(
+            pf.getPaper().getHeight(),
+            pf.getPaper().getWidth());
+        setType(getTypePaper(portrait_size, true));
+
+        if (pf.getOrientation() == 0) {
+            setIsLandScape(true);
+        } else {
+            setIsLandScape(false);
+        }
+        
+
+        attributes.add(m_Orientation);
+
+        // tipo formato
+        if (isLandscape()) {
+            // landscape
+            area_tblr[1] = getInCM(pf.getImageableX());
+            area_tblr[2] = getInCM(pf.getImageableY());
+            area_tblr[0] = 
+                portrait_size.getWidth() - getInCM(pf.getImageableHeight())
+                - area_tblr[1];
+            area_tblr[3] =
+                portrait_size.getHeight() - getInCM(pf.getImageableWidth())
+                - area_tblr[2];
+        } else {
+            // portrait
+            area_tblr[2] = getInCM(pf.getImageableX());
+            area_tblr[0] = getInCM(pf.getImageableY());
+            area_tblr[1] =
+                portrait_size.getHeight() - getInCM(pf.getImageableHeight())
+                - area_tblr[0];
+            area_tblr[3] =
+                portrait_size.getWidth() - getInCM(pf.getImageableWidth())
+                - area_tblr[2];
+        }
+        
+        /*
+         * 'area_tblr' and 'pf' "know"
+         * about orientation
+         * 
+         */
+        attributes.add(new MediaPrintableArea(
+            (float) (area_tblr[2] * 10),
+            (float) (area_tblr[0] * 10),
+            (float) (getInCM(pf.getImageableWidth()) * 10),
+            (float) (getInCM(pf.getImageableHeight()) * 10),
+            MediaPrintableArea.MM));
+    }
+
+    /**
+     * Returns a PrintRequestAttributeSet with all properties to the
+     * PrintDialog.
+     * 
+     * @return PrintRequestAttributesSet.
+     */
+    public PrintRequestAttributeSet toPrintRequestAttributeSet() {
+        HashPrintRequestAttributeSet resul = new HashPrintRequestAttributeSet();
+
+        setType(m_typeSel);
+
+        resul.add(m_type);
+
+        // units, no hace falta a�adirlo a attributes
+        resul.add(m_Orientation);
+        // setArea(area_tblr);
+        
+        Rectangle2D rect = this.getArea();
+        resul.add(new MediaPrintableArea(
+            (float) (rect.getX() *10),
+            (float) (rect.getY() *10),
+            (float) (rect.getWidth() *10),
+            (float) (rect.getHeight() *10),
+            MediaPrintableArea.MM));
+
+        resul.add(toPrintQuality(m_resolutionSel));
+        return resul;
+    }
+    
+    public DocAttributeSet toDocAttributes() {
+        HashDocAttributeSet resul = new HashDocAttributeSet();
+
+        setType(m_typeSel);
+
+        resul.add(m_type);
+
+        // units, no hace falta a�adirlo a attributes
+        resul.add(m_Orientation);
+        // setArea(area_tblr);
+        
+        Rectangle2D rect = this.getArea();
+        resul.add(new MediaPrintableArea(
+            (float) (rect.getX() *10),
+            (float) (rect.getY() *10),
+            (float) (rect.getWidth() *10),
+            (float) (rect.getHeight() *10),
+            MediaPrintableArea.MM));
+
+        resul.add(toPrintQuality(m_resolutionSel));
+        return resul;
+    }
+
+    public PrintAttributes toPrintAttributes() {
+        PrintAttributes resul =
+            CompatLocator.getGraphicsUtils().createPrintAttributes();
+
+        if (m_resolutionSel == DRAFT) {
+            resul.setPrintQuality(PrintAttributes.PRINT_QUALITY_DRAFT);
+
+        } else
+            if (m_resolutionSel == NORMAL) {
+                resul.setPrintQuality(PrintAttributes.PRINT_QUALITY_NORMAL);
+
+            } else
+                if (m_resolutionSel == HIGH) {
+                    resul.setPrintQuality(PrintAttributes.PRINT_QUALITY_HIGH);
+                } else {
+                    throw new UnsupportedOperationException(
+                        "Unsupported Print Quality: " + m_resolutionSel);
+                }
+        setType(m_typeSel);
+
+        return resul;
+    }
+
+    /**
+     * Returns a PrintRequestAttributeSet with all properties to the
+     * PrintDialog.
+     * 
+     * @return PrintRequestAttributesSet.
+     */
+    public PrintRequestAttributeSet toPrintAttributeSet() {
+        HashPrintRequestAttributeSet resul = new HashPrintRequestAttributeSet();
+
+        setType(m_typeSel);
+
+        resul.add(m_type);
+
+        resul.add(m_Orientation);
+        
+        Rectangle2D rect = this.getArea();
+        resul.add(new MediaPrintableArea(
+            (float) (rect.getX() * DPISCREEN / PULGADA),
+            (float) (rect.getY() * DPISCREEN / PULGADA),
+            (float) (rect.getWidth() * DPISCREEN / PULGADA),
+            (float) (rect.getHeight() * DPISCREEN / PULGADA),
+            MediaPrintableArea.MM));
+
+        resul.add(toPrintQuality(m_resolutionSel));
+        return resul;
+    }
+    /**
+     * Returns true if the margin should be used.
+     * 
+     * @return True if margin should be used.
+     */
+    public boolean isMargin() {
+        return hasmargin;
+    }
+
+    /**
+     * Returns the resolution of properties to print.
+     * 
+     * @return Resolution.
+     */
+    public int getResolution() {
+        return m_resolutionSel;
+    }
+
+    /**
+     * Inserts the resolution to apply at printing.
+     * 
+     * @param i
+     *            Type of resolution.
+     * 
+     *            The type of resolution can be:
+     * 
+     *            DRAFT: 27 dpi.
+     *            NORMAL: 300 dpi.
+     *            HIGH: 600 dpi.
+     */
+    public void setResolution(int i) {
+        m_resolutionSel = i;
+        switch (i) {
+        case (HIGH):
+            DPI = 600;
+            break;
+
+        case (NORMAL):
+            DPI = 300;
+            break;
+
+        case (DRAFT):
+            DPI = 72;
+            break;
+        }
+        attributes.add(toPrintQuality(i));
+    }
+    
+    /**
+     * Converts print quality from Attributes format
+     * ({@link #HIGH}, {@link #NORMAL}, {@link #DRAFT})
+     * to {@link PrintQuality} format.
+     * 
+     * @param quality
+     * @return
+     */
+    public static PrintQuality toPrintQuality(int quality) {
+        switch (quality) {
+        case (HIGH):
+        	return PrintQuality.HIGH;
+        case (NORMAL):
+            return PrintQuality.NORMAL;
+        case (DRAFT):
+        	return PrintQuality.DRAFT;
+        default:
+        	return PrintQuality.NORMAL;
+        }
+    }
+
+    /**
+     * Returns attributes of PrintDialog.
+     * 
+     * @return Attributes of printing.
+     */
+    public PrintRequestAttributeSet getAttributes() {
+        return attributes;
+    }
+
+    /**
+     * Returns True if the position of sheet is horizontal.
+     * 
+     * @return True if position is horizontal.
+     */
+
+    /**
+     * Returns the format of sheet.
+     * 
+     * @return Format of sheet.
+     */
+    public int getType() {
+        return m_typeSel;
+    }
+
+    /**
+     * Inserts the number of units to define the coords X grid.
+     * 
+     * @param d
+     *            number of units to define the grid.
+     */
+    public void setHGridGrapCm(double d) {
+        m_gridGapCmX = new Double(d);
+    }
+
+    /**
+     * Gets the grid gap for the x axis, in centimeters. The grip gap is the
+     * distance from one point to the next point in the snapping grid.
+     * 
+     * @return Default grid gap for the x axis, measured in centimeters
+     */
+    public double getHGridGapCm() {
+        if (m_gridGapCmX == null) {
+            m_gridGapCmX = new Double(getDefaultGridGap().getX());
+        }
+        return m_gridGapCmX.doubleValue();
+    }
+
+    /**
+     * Gets the grid gap for the y axis, in centimeters. The grip gap is the
+     * distance from one point to the next point in the snapping grid.
+     * 
+     * @return Default grid gap for the y axis, measured in centimeters
+     */
+    public double getVGridGapCm() {
+        if (m_gridGapCmY == null) {
+            m_gridGapCmY = new Double(getDefaultGridGap().getY());
+        }
+        return m_gridGapCmY.doubleValue();
+    }
+
+    /**
+     * Inserts the number of units to define the coords X grid.
+     * 
+     * @param d
+     *            number of units to define the grid.
+     */
+    public void setVGridGrapCm(double d) {
+        m_gridGapCmY = new Double(d);
+    }
+
+    /**
+     * Inserts true if the sheet is horizontal or false if is vertical.
+     * 
+     * @param b
+     *            True if sheet is horizontal.
+     */
+    public void setIsLandScape(boolean b) {
+        if (b) {
+            m_Orientation = OrientationRequested.LANDSCAPE;
+        } else {
+            m_Orientation = OrientationRequested.PORTRAIT;
+        }
+        setType(m_typeSel);
+    }
+
+    /**
+     * Sets the type of sheet to show. See
+     * {@link #PRINT}, {@link #CUSTOM}, {@link #A4}, {@link #A3}, {@link #A2},
+     * {@link #A1}, {@link #A0}.
+     * 
+     * @param t
+     *            Type of sheet.
+     */
+    public void setType(int t) {
+        m_typeSel = t;
+        switch (t) {
+        case (PRINT):
+            m_type = ((MediaSizeName) attributes.get(Media.class));
+        	// FIXME: Shouldn't we adapt the actual size to the printer???? 
+        	setPaperSize(METRIC_A4_PAPER_SIZE);
+            break;
+
+        case (A4):
+            m_type = MediaSizeName.ISO_A4;
+        	setPaperSize(METRIC_A4_PAPER_SIZE);
+            break;
+
+        case (A3):
+            m_type = MediaSizeName.ISO_A3;
+        	setPaperSize(METRIC_A3_PAPER_SIZE);
+            break;
+
+        case (A2):
+            m_type = MediaSizeName.ISO_A2;
+        	setPaperSize(METRIC_A2_PAPER_SIZE);
+            break;
+
+        case (A1):
+            m_type = MediaSizeName.ISO_A1;
+        	setPaperSize(METRIC_A1_PAPER_SIZE);
+            break;
+
+        case (A0):
+            m_type = MediaSizeName.ISO_A0;
+        	setPaperSize(METRIC_A0_PAPER_SIZE);
+
+            break;
+
+        case (CUSTOM):
+            m_type = MediaSizeName.PERSONAL_ENVELOPE;
+        	setPaperSize(last_custom_paper_size);
+            break;
+        }
+        attributes.add(m_type);
+    }
+
+    /**
+     * Sets the paper size, measured on the selected units
+     * @see #getUnit()
+     */
+    public void setPaperSizeInUnits(Size sizeInUnits) {
+    	setPaperSize(new Size(sizeInUnits.getHeight() * m_TypeUnit,
+    			sizeInUnits.getWidth() * m_TypeUnit));
+    }
+    
+    /**
+     * Returns the size of sheet.
+     * 
+     * @param isLand
+     *            True if is horizontal and false if is vertical.
+     * @param type
+     *            Type of sheet.
+     * 
+     * @return Size of sheet with these properties.
+     */
+    public Size getPaperSizeinUnits(boolean isLand, int type) {
+        Size size = null;
+
+        switch (type) {
+        case (PRINT):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A4_PAPER_SIZE.getWidth(),
+                        METRIC_A4_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A4_PAPER_SIZE;
+            }
+
+            break;
+
+        case (A4):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A4_PAPER_SIZE.getWidth(),
+                        METRIC_A4_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A4_PAPER_SIZE;
+            }
+
+            break;
+
+        case (A3):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A3_PAPER_SIZE.getWidth(),
+                        METRIC_A3_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A3_PAPER_SIZE;
+            }
+
+            break;
+
+        case (A2):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A2_PAPER_SIZE.getWidth(),
+                        METRIC_A2_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A2_PAPER_SIZE;
+            }
+
+            break;
+
+        case (A1):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A1_PAPER_SIZE.getWidth(),
+                        METRIC_A1_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A1_PAPER_SIZE;
+            }
+
+            break;
+
+        case (A0):
+
+            if (isLand) {
+                size =
+                    new Size(METRIC_A0_PAPER_SIZE.getWidth(),
+                        METRIC_A0_PAPER_SIZE.getHeight());
+            } else {
+                size = METRIC_A0_PAPER_SIZE;
+            }
+
+            break;
+
+        case (CUSTOM):
+            if (isLandscape()) {
+                size =
+                    new Size(
+                        last_custom_paper_size.getWidth() * m_TypeUnit,
+                        last_custom_paper_size.getHeight() * m_TypeUnit);
+            } else {
+                size =
+                    new Size(
+                        last_custom_paper_size.getHeight() * m_TypeUnit,
+                        last_custom_paper_size.getWidth() * m_TypeUnit);
+            }
+            break;
+        }
+
+        Size resp = new Size(
+            size.getHeight() / m_TypeUnit, 
+            size.getWidth() / m_TypeUnit);
+
+        return resp;
+    }
+    
+    
+    
+    /**
+     * Returns the type of unit in use (cm, mm, km, etc), codified as
+     * a position in the array returned by {@link MapContext#getDistanceNames()}
+     *
+     * @see #setUnit(int)
+     * @see MapContext#getDistanceNames() 
+     * @see MapContext#getDistanceTrans2Meter()
+     * @see MapContext#getDistanceAbbr()
+     * @see MapContext#getDistancePosition(String)
+     * @see MapContext#getDistancePosition(String)
+
+     * 
+     * @return Type of units.
+     */
+    public int getUnit() {
+        return m_selTypeUnit;
+    }
+
+    /**
+     * @deprecated Use {@link #getUnit()} instead
+     */
+    @Deprecated
+    public int getSelTypeUnit() {
+    	return getUnit();
+    }
+    /**
+     * Returns the name of the selected units.
+     * @see #getUnit()
+     * 
+     * @return String Name of units.
+     */
+    public String getNameUnit() {
+        return m_NameUnit;
+    }
+
+    /**
+     * Sets the type of unit that is used in the Layout, defined as an
+     * integer indicating a position in the array
+     * {@link MapContext#getDistanceNames()}. By default is
+     * centimeters.
+     * 
+     * @param sel
+     *            Type of unit.
+     * @see #getUnit()
+     */
+    public void setUnit(int sel) {
+        Logger logger = LoggerFactory
+                .getLogger(LayoutExtension.class);
+        logger.debug("setUnit: "+sel);
+        m_selTypeUnit = sel;
+        m_TypeUnit = getConversionFactorToCm(sel);
+        resetSizeinUnits();
+        m_NameUnit =
+            PluginServices.getText(this, MapContext.getDistanceNames()[sel]);
+    }
+
+    /**
+     * Actualize to date m_sizeinUnits with the height and width of the sheet
+     * in the units of media selected.
+     * 
+     * @param b
+     *            True if is horizontal.
+     */
+    private void resetSizeinUnits() {
+    	Size correctedSize = getCorrectedSize(m_sizePaper);
+    	m_sizeinUnits =
+                new Size(correctedSize.getHeight() / m_TypeUnit,
+                		correctedSize.getWidth() / m_TypeUnit);
+    }
+
+    /**
+     * Returns a double in the unit of measure selected from the double in
+     * centimeters.
+     * 
+     * @param d
+     *            Distance in centimeters.
+     * 
+     * @return Distance in the unit measure selected.
+     */
+    public double toUnits(double d) {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(2);
+
+        String s = String.valueOf(nf.format(d));
+        s = s.replace(',', '.');
+
+        return (Double.valueOf(s).doubleValue() / m_TypeUnit);
+    }
+
+    /**
+     * Returns a double in centimeters from the the unit of measure selected.
+     * 
+     * @param d
+     *            Distance in the unit measure selected.
+     * 
+     * @return Distance in centimeters.
+     */
+    public double fromUnits(double d) {
+        return (d * m_TypeUnit);
+    }
+
+    /**
+     * Returns one centimeter in pixels on screen in this moment.
+     * 
+     * @param rect
+     *            Rectangle of sheet.
+     * 
+     * @return Pixels from centimeter.
+     */
+    public double getPixXCm(Rectangle2D rect) {
+        double value = m_sizePaper.getWidth();
+        double cm = getConversionFactorToCm(2);
+        double unidades = 0;
+        unidades = ((rect.getMaxX() - rect.getMinX()) / ((value / cm)));
+        return unidades;
+    }
+
+    /**
+     * Calculates the grid gap for the x axis, in pixels,
+     * based on the paper width (in cm) and the width
+     * of the rectangle of sheet in screen, measured in
+     * pixels.
+     *  
+     * The grip gap is the distance from one
+     * point to the next point in the snapping grid.
+     * 
+     * @param rect
+     *            Rectangle of sheet, measured in pixels
+     */
+    public void calculateGridGapX(Rectangle2D rect) {
+        double width = m_sizePaper.getWidth();
+        double numberOfGaps = width / getHGridGapCm();
+        double unidades =
+            (rect.getMaxX() - rect.getMinX()) / numberOfGaps;
+        m_gridGapPxX = unidades;
+    }
+
+    /**
+     * Calculates the grid gap for the y axis, in pixels,
+     * based on the paper height (in cm) and the height
+     * of the rectangle of sheet in screen, measured in
+     * pixels.
+     *  
+     * The grip gap is the distance from one
+     * point to the next point in the snapping grid.
+     * 
+     * @param rect
+     *            Rectangle of sheet, measured in pixels
+     */
+    public void calculateGridGapY(Rectangle2D rect) {
+        double height = m_sizePaper.getHeight();
+        double numberOfGaps = height / getVGridGapCm();
+        double unidades =
+            (rect.getMaxY() - rect.getMinY()) / numberOfGaps;
+        m_gridGapPxY = unidades;
+    }
+
+    
+    private double getPaperSizeRatio() {
+        double resp = 1;
+        if (isLandscape()) {
+            resp = m_sizePaper.getWidth() / m_sizePaper.getHeight();
+        } else {
+            resp = m_sizePaper.getHeight() / m_sizePaper.getWidth();
+        }
+        return resp;
+    }
+    /**
+     * Obtains the rectangle that represents the sheet with the characteristics
+     * that contains attributes
+     * 
+     * @param rect
+     *            rectangle.
+     * 
+     */
+    public void obtainRect(boolean isPrint, Rectangle2D rect, int w, int h) {
+        double value1 = 0;
+        double value2 = 0;
+
+        if (!isPrint) {
+            if (isLandscape()) {
+                rect = getRectangleLandscape(rect, w, h);
+            } else {
+                rect = getRectanglePortrait(rect, w, h);
+            }
+        } else {
+            value1 = m_sizePaper.getWidth();
+            value2 = m_sizePaper.getHeight();
+            rect.setRect(0, 0, ((value1 / PULGADA) * DPI),
+                ((value2 / PULGADA) * DPI));
+        }
+
+        calculateGridGapX(rect);
+        calculateGridGapY(rect);
+    }
+
+    /**
+     * It obtains the rect that is adjusted to the size of the window,
+     * to see the full extent of horizontal layout.
+     * 
+     * @param rect
+     *            Rectangle sheet.
+     * @param w
+     *            Width of Layout.
+     * @param h
+     *            Height of Layout.
+     * 
+     * @return Rectangle modified.
+     */
+    public Rectangle2D.Double getRectangleLandscape(Rectangle2D rect, int w,
+        int h) {
+        Rectangle2D.Double rectaux = new Rectangle2D.Double();
+        int x0 = (int) rect.getMinX();
+        int y0 = (int) rect.getMinY();
+
+        // Don't use the whole component space to draw the sheet,
+        // add some margin to make the sheet evident.
+        // 2 * x0: margin left and margin right
+        // 2 * y0: margin top and margin bottom
+        int newHeight = (h - (2 * y0));
+        int newWidth = (int) (newHeight * getPaperSizeRatio());
+        if (((int) (((h) - (2 * y0)) * getPaperSizeRatio())) > ((w) - (2 * x0))) {
+        	newWidth = ((w) - (2 * x0));
+        	newHeight = (int) (newWidth / getPaperSizeRatio());
+        }
+        rectaux.setRect(x0, y0, newWidth, newHeight);
+        return rectaux;
+    }
+
+    /**
+     * Returns the size of sheet in the units of measure selected.
+     * 
+     * @return Size of sheet.
+     */
+    public Size getPaperSizeInUnits() {
+        return m_sizeinUnits;
+    }
+    
+    /**
+     * @deprecated Use {@link #getPaperSizeInUnits()} instead
+     * 
+     */
+    @Deprecated
+    public Size getSizeInUnits() {
+    	return getPaperSizeInUnits();
+    }
+
+    /**
+     * It obtains the rect that is adjusted to the size of the window,
+     * to see the full extent of vertical layout.
+     * 
+     * @param rect
+     *            Rectangle sheet.
+     * @param w
+     *            Width of Layout.
+     * @param h
+     *            Height of Layout.
+     * 
+     * @return Rectangle modified.
+     */
+    public Rectangle2D.Double getRectanglePortrait(Rectangle2D rect, int w,
+        int h) {
+        Rectangle2D.Double rectaux = new Rectangle2D.Double();
+        int x0 = (int) rect.getMinX();
+        int y0 = (int) rect.getMinY();
+                
+        // Don't use the whole component space to draw the sheet,
+        // add some margin to make the sheet evident.
+        // 2 * x0: margin left and margin right
+        // 2 * y0: margin top and margin bottom
+        int newWidth = (w - (2 * x0));
+        int newHeight = (int) (newWidth * getPaperSizeRatio());
+        if (((int) (((w) - (2 * x0)) * getPaperSizeRatio())) > ((h) - (2 * y0))) {
+        	newHeight = (h - (2 * y0));
+        	newWidth = (int) (newHeight / getPaperSizeRatio());
+        }
+        rectaux.setRect(x0, y0, newWidth, newHeight);
+        return rectaux;
+    }
+    
+    /**
+     * Adapts the provided size to the configured orientation
+     * @param size
+     * @return
+     */
+    private Size getCorrectedSize(Size size) {
+    	Size result;
+    	if ( (isLandscape() && (size.getWidth()<size.getHeight()))
+    			|| (isPortrait() && (size.getHeight()<size.getWidth()))) {
+    		// swap sizes to ensure they match the configured orientation
+    		result = new Size(size.getWidth(), size.getHeight());    			
+    	}
+    	else {
+    		result = size;		
+    	}
+    	return result;
+    }
+    
+    /**
+     * Adapts the provided size to the configured orientation
+     * @param size
+     * @return
+     */
+    private Size getCorrectedSize(double height, double width) {
+    	Size result;
+    	if ( (isLandscape() && (width<height))
+    			|| (isPortrait() && (height<width))) {
+    		// swap sizes to ensure they match the configured orientation
+    		result = new Size(width, height);    			
+    	}
+    	else {
+    		result = new Size(height, width);		
+    	}
+    	return result;
+    }
+
+    /**
+     * It obtains the type of format from the size.
+     * 
+     * @param size
+     *            Size of sheet.
+     * 
+     * @return Type of sheet.
+     */
+    private int getTypePaper(Size size, boolean is_portrait) {
+
+        double tol = 1d;
+        double width, height;
+        // the METRIC constants are defined as portrait sizes
+        // so we must compare with the right paper size
+        
+        if (size.getHeight()<size.getWidth()) {
+        	height = size.getWidth();
+        	width = size.getHeight();
+        }
+        else {
+        	width = size.getWidth();
+        	height = size.getHeight();
+        }
+        double conversionFactor = PULGADA / DPISCREEN;
+        
+        if (((width * conversionFactor)  <
+        		(tol + METRIC_A4_PAPER_SIZE.getWidth()))
+        		&& ((height * conversionFactor) <
+        				(tol + METRIC_A4_PAPER_SIZE.getHeight()))) {
+        	return A4;
+        }
+        else if (((width * conversionFactor) <
+        		(tol + METRIC_A3_PAPER_SIZE.getWidth()))
+        		&& ((height * conversionFactor) <
+        				(tol + METRIC_A3_PAPER_SIZE.getHeight()))) {
+        	return A3;
+        }
+        else if (((width * conversionFactor) <
+        		(tol + METRIC_A2_PAPER_SIZE.getWidth()))
+        		&& ((height * conversionFactor) <
+        				(tol + METRIC_A2_PAPER_SIZE.getHeight()))) {
+        	return A2;
+        }
+        else if (((width * conversionFactor) < 
+        		(tol + METRIC_A1_PAPER_SIZE.getWidth()))
+        		&& ((height * conversionFactor) < 
+        				(tol + METRIC_A1_PAPER_SIZE.getHeight()))) {
+        	return A1;
+        } else if (((width * conversionFactor) <
+        				(tol + METRIC_A0_PAPER_SIZE.getWidth()))
+        			&& ((height * conversionFactor) < 
+        					(tol + METRIC_A0_PAPER_SIZE.getHeight()))) {
+        		return A0;
+        	}
+
+        return A4;
+    }
+
+    /**
+     * Sets the default grid gap. The grip gap is the distance from one
+     * point to the next point in the snapping grid.
+     * 
+     * @param hGap
+     *            Horizontal distance.
+     * @param vGap
+     *            Vertical distance.
+     * @param hUnitAbbr The abbreviation of the measure in which hGap has
+     * been provided, codified as one of the abbreviations specified in
+     * {@link MapContext#getDistanceAbbr()}
+     * 
+     * @param vUnitAbbr The abbreviation of the measure in which vGap has
+     * been provided, codified as one of the abbreviations specified in
+     * {@link MapContext#getDistanceAbbr()}
+     */
+    public static void setDefaultGridGap(double hGap, double vGap, String hUnitAbbr, String vUnitAbbr) {
+    	int hUnit = getDistanceAbbrPosition(hUnitAbbr);
+        int vUnit = getDistanceAbbrPosition(vUnitAbbr);
+        double hGapCm = hGap*getConversionFactorToCm(hUnit);
+        double vGapCm = vGap*getConversionFactorToCm(vUnit);
+        defaultGridGap = new Point2D.Double(hGapCm, vGapCm);
+    }
+
+    /**
+     * Gets the default grid gap, in centimeters. The grip gap is the distance
+     * from one point to the next point in the snapping grid.
+     * 
+     * @return Default grid gap, measured in centimeters
+     */
+    public static Point2D getDefaultGridGap() {
+        if (defaultGridGap == null) {
+        	PluginServices pluginServices = PluginsLocator.getManager().getPlugin(LayoutExtension.class);
+            XMLEntity xml = null;
+            if (pluginServices != null) {
+                xml = pluginServices.getPersistentXML();
+            }
+            double hGap =
+                ((xml != null) && (xml
+                    .contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME))) ? xml
+                    .getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_KEY_NAME)
+                    : PreferenceKeys.FACTORY_DEFAULT_HORIZONTAL_GAP;
+            double vGap =
+                ((xml != null) && (xml
+                    .contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME))) ? xml
+                    .getDoubleProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_KEY_NAME)
+                    : PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP;
+            String hUnitName = ((xml != null) && (xml
+                    .contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME))) ? xml
+                    .getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_HORIZONTAL_GAP_UNITS_KEY_NAME)
+                    : PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT; // cm by default
+            String vUnitName = ((xml != null) && (xml
+            		.contains(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME))) ? xml
+            				.getStringProperty(PreferenceKeys.DEFAULT_LAYOUT_GRID_VERTICAL_GAP_UNITS_KEY_NAME)
+            				: PreferenceKeys.FACTORY_DEFAULT_VERTICAL_GAP_UNIT; // cm by default
+            int hUnit = getDistanceAbbrPosition(hUnitName);
+            int vUnit = getDistanceAbbrPosition(vUnitName);
+            double hGapCm = hGap*getConversionFactorToCm(hUnit);
+            double vGapCm = vGap*getConversionFactorToCm(vUnit);
+            defaultGridGap = new Point2D.Double(hGapCm, vGapCm);
+        }
+        return defaultGridGap;
+    }
+    
+    public static int getDistanceAbbrPosition(String unitAbbr) {
+    	ArrayList list = MapContext.DISTANCEABBR;
+		for (int i = 0; i < list.size(); i++) {
+			if (list.get(i).equals(unitAbbr)){
+				return i;
+			}
+		}
+		return 0;
+    	
+    }
+
+    /**
+     * Gets the grid gap for the y axis, in pixels.
+     * The grip gap is the distance from one
+     * point to the next point in the snapping grid.
+     * 
+     * @return Number of pixels of each grid gap for the y axis
+     */
+    public double getVGridGapPx() {
+        return m_gridGapPxY;
+    }
+
+    /**
+     * Gets the grid gap for the x axis, in pixels.
+     * The grip gap is the distance from one
+     * point to the next point in the snapping grid.
+     * 
+     * @return Number of pixels of each grid gap for the x axis
+     */
+    public double getHGridGapPx() {
+        return m_gridGapPxX;
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(Attributes.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Attributes persistence definition", null, null);
+
+            definition.addDynFieldInt(DPI_FIELD).setMandatory(true);
+            definition.addDynFieldInt(DPISCREEN_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(TYPEUNIT_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(NUMX_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(NUMY_FIELD).setMandatory(false);
+            definition.addDynFieldDouble(UNITX_FIELD).setMandatory(true);
+            definition.addDynFieldDouble(UNITY_FIELD).setMandatory(true);
+            definition.addDynFieldBoolean(HASMARGIN_FIELD).setMandatory(true);
+            definition.addDynFieldInt(RESOLUTIONSEL_FIELD).setMandatory(true);
+            definition.addDynFieldInt(TYPESEL_FIELD).setMandatory(true);
+            definition.addDynFieldInt(SELTYPEUNIT_FIELD).setMandatory(true);
+            definition.addDynFieldObject(SIZEPAPER_FIELD).setMandatory(true)
+                .setClassOfValue(Size.class);
+            definition.addDynFieldArray(AREA_FIELD)
+                .setClassOfItems(String.class).setMandatory(true);
+            definition.addDynFieldObject(SIZEINUNITS_FIELD).setMandatory(true)
+                .setClassOfValue(Size.class);
+            definition.addDynFieldBoolean(ISLANDSEL_FIELD).setMandatory(true);
+        }
+
+        Size.registerPersistent();
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        DPI = state.getInt(DPI_FIELD);
+        DPISCREEN = state.getInt(DPISCREEN_FIELD);
+        m_TypeUnit = state.getDouble(TYPEUNIT_FIELD);
+        m_gridGapCmX = (Double) state.get(NUMX_FIELD);
+        m_gridGapCmY = (Double) state.get(NUMY_FIELD);
+        m_gridGapPxX = (Double) state.get(UNITX_FIELD);
+        m_gridGapPxY = (Double) state.get(UNITY_FIELD);
+        hasmargin = state.getBoolean(HASMARGIN_FIELD);
+        m_resolutionSel = state.getInt(RESOLUTIONSEL_FIELD);
+        m_typeSel = state.getInt(TYPESEL_FIELD);
+        m_selTypeUnit = state.getInt(SELTYPEUNIT_FIELD);
+        m_sizePaper = (Size) state.get(SIZEPAPER_FIELD);
+        area_tblr = state.getDoubleArray(AREA_FIELD);
+        m_sizeinUnits = (Size) state.get(SIZEINUNITS_FIELD);
+        boolean lands = state.getBoolean(ISLANDSEL_FIELD);
+        this.setIsLandScape(lands);
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(DPI_FIELD, DPI);
+        state.set(DPISCREEN_FIELD, DPISCREEN);
+        state.set(TYPEUNIT_FIELD, m_TypeUnit);
+        state.set(NUMX_FIELD, m_gridGapCmX);
+        state.set(NUMY_FIELD, m_gridGapCmY);
+        state.set(UNITX_FIELD, m_gridGapPxX);
+        state.set(UNITY_FIELD, m_gridGapPxY);
+        state.set(HASMARGIN_FIELD, hasmargin);
+        state.set(RESOLUTIONSEL_FIELD, m_resolutionSel);
+        state.set(TYPESEL_FIELD, m_typeSel);
+        state.set(SELTYPEUNIT_FIELD, m_selTypeUnit);
+        state.set(SIZEPAPER_FIELD, m_sizePaper);
+        state.set(AREA_FIELD, area_tblr);
+        state.set(SIZEINUNITS_FIELD, m_sizeinUnits);
+        state.set(ISLANDSEL_FIELD, this.isLandscape());
+    }
+    
+    /**
+     * Gets the conversion factor from the specified unit to centimeters.
+     * If you have some distance measured in the specified unit, you can
+     * multiply it by this factor in order to convert the distance to cm. 
+     * 
+     * @param unit The source unit, codified as a position in the array
+     *             {@link MapContext#getDistanceNames()}
+     * @return A conversion factor from the specified unit to cm
+     */
+    public static double getConversionFactorToCm(int unit) {
+    	return 100.0d*MapContext.getDistanceTrans2Meter()[unit];
+    }
+    
+    @Override
+    public Object clone() {
+    	Attributes cloned = null;
+    	try {
+    		cloned = (Attributes) super.clone();
+
+    		cloned.setSelectedOptions(this.getType(), this.getUnit(), this.isLandscape(), this.isMargin(), this.getResolution(), this.getAreaInsets());
+    		cloned.setPaperSize(this.getPaperSize());
+    		cloned.setVGridGrapCm(this.getVGridGapCm());
+    		cloned.setHGridGrapCm(this.getHGridGapCm());
+    		
+    	} catch (CloneNotSupportedException e) {}
+    	return cloned;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutContext.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutContext.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/DefaultLayoutContext.java	(revision 590)
@@ -0,0 +1,503 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.geom.AffineTransform;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.commands.FrameCommandsRecord;
+import org.gvsig.app.project.documents.layout.commands.FrameManager;
+import org.gvsig.app.project.documents.layout.fframes.FFrame;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.toc.TocModelObserver;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.observer.ObservableHelper;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+/**
+ * Model of LayoutControl.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class DefaultLayoutContext implements LayoutContext {
+
+    public static final String PERSISTENCE_DEFINITION_NAME = "LayoutContext";
+
+    private static final String ISADJUSTINGTOGRID_FIELD = "isAdjustingToGrid";
+    private static final String IS_GRID_VISIBLE = "IS_GRID_VISIBLE";
+    private static final String IS_RULER_VISIBLE = "IS_RULER_VISIBLE";
+    private static final String ISEDITABLE_FIELD = "isEditable";
+    /**
+     * True when the document window has been opened at least once, false otherwise. This is required
+     * to decide whether the page setting dialog has to be shown to the user, otherwise it would be
+     * shown every time the document is opened from project persistence
+     */
+    private static final String HAS_WINDOW_BEEN_EVER_OPEN_FIELD = "hasDocBeenOpened";
+    
+    private static final String NUMBEHIND_FIELD = "numBehind";
+    private static final String NUMBEFORE_FIELD = "numBefore";
+    private static final String ATTRIBUTES_FIELD = "attributes";
+    private static final String FFRAMES_FIELD = "fframes";
+
+    private static DefaultLayoutManager layoutManager = null;
+
+    private Attributes m_attributes = null;
+    private IFFrame[] fframes;
+    private FrameCommandsRecord fcr;
+    private static Hashtable nums = new Hashtable();
+    private int numBefore = 0;
+    private int numBehind = 0;
+    private boolean isEditable = true;
+    private Boolean adjustToGrid = null;
+    private boolean hasDocBeenOpened = false;
+    
+    private Boolean m_showRuler;
+    private Boolean isGridVisible = null;
+    
+    private AffineTransform m_MatrizTransf;
+    
+    private ObservableHelper observers;
+    private CustomizableObserverHelper tocObservers = new CustomizableObserverHelper() {
+		
+		@Override
+		protected void doNotify(Object listener, Object data) {
+			TocModelObserver l = (TocModelObserver) listener;
+			l.tocUpdated(DefaultLayoutContext.this, (TocModelChangedNotification) data);
+		}
+	};
+
+	private MapContext tocModel = null;
+    
+    /**
+     * Create a new object of LayoutContext.
+     */
+    public DefaultLayoutContext() {
+        layoutManager =
+            (DefaultLayoutManager) ProjectManager.getInstance()
+                .getDocumentManager(DefaultLayoutManager.TYPENAME);
+        observers = new ObservableHelper();
+        m_attributes = new Attributes();
+        m_MatrizTransf = new AffineTransform();
+        m_MatrizTransf.setToIdentity();
+        FrameManager fm = new FrameManager();
+        fcr = new FrameCommandsRecord(fm);
+        updateFFrames();
+    }
+
+    public AffineTransform getAT() {
+        return m_MatrizTransf;
+    }
+
+    public Attributes getAttributes() {
+        return m_attributes;
+    }
+
+    public void setAtributes(Attributes attributes) {
+        m_attributes = attributes;
+    }
+
+    public IFFrame[] getFFrames() {
+        return fframes;
+    }
+
+    public IFFrame getFFrame(int i) {
+        return fframes[i];
+    }
+
+    public void updateFFrames() {
+        ArrayList frames = new ArrayList();
+        IFFrame[] auxfframes = fcr.getFrameManager().getFFrames();
+        for (int j = numBehind; j <= numBefore; j++) {
+            for (int i = 0; i < auxfframes.length; i++) {
+                if (auxfframes[i].getLevel() == j) {
+                    frames.add(auxfframes[i]);
+                    continue;
+                }
+            }
+        }
+        fframes = (IFFrame[]) frames.toArray(new IFFrame[0]);
+    }
+
+    public void delFFrameSelected() {
+        fcr.startComplex(PluginServices.getText(this, "remove_elements"));
+        IFFrame[] validFrames = fcr.getFrameManager().getFFrames();
+        for (int i = 0; i<validFrames.length; i++) {
+            IFFrame fframe = validFrames[i];
+
+            if (fframe.isSelected()) {
+                fframe.setSelected(false);
+                fcr.delete(fframe);
+            }
+        }
+        fcr.endComplex();
+        updateFFrames();
+    }
+
+    public void clearSelection() {
+        for (int i = fcr.getFrameManager().getAllFFrames().length - 1; i >= 0; i--) {
+            IFFrame fframe = fcr.getFrameManager().getFFrame(i);
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                fframe.setSelected(false);
+            }
+        }
+    }
+
+    public void delFFrame(int index) {
+    	IFFrame frame = getFFrame(index);
+    	delFFrame(frame);
+    }
+
+    public void delFFrame(IFFrame frame) {
+        for (int i = 0; i < fcr.getFrameManager().getAllFFrames().length; i++) {
+            if (fcr.getFrameManager().getFFrame(i).equals(frame)) {
+            	frame.setSelected(false);
+                fcr.delete(frame);
+            }
+        }
+        updateFFrames();
+    }
+
+    public FrameCommandsRecord getFrameCommandsRecord() {
+        return fcr;
+    }
+
+    public void addFFrame(IFFrame frame, boolean clearSelection, boolean select) {
+    	frame.setLayoutContext(this);
+        IFFrame[] fframes = getFFrames();
+        if (clearSelection) {
+            for (int i = fframes.length - 1; i >= 0; i--) {
+                IFFrame fframe1 = fframes[i];
+                fframe1.setSelected(false);
+            }
+        }
+
+        if (nums.containsKey(frame.getClass())) {
+            nums.put(
+                frame.getClass(),
+                new Integer(Integer.parseInt(nums.get(frame.getClass())
+                    .toString()) + 1));
+        } else {
+            nums.put(frame.getClass(), new Integer(0));
+        }
+
+        frame.setNum(Integer.parseInt(nums.get(frame.getClass()).toString()));
+        fcr.insert(frame);
+        frame.setSelected(select);
+        frame.setLevel(getNumBefore());
+        updateFFrames();
+    }
+
+    public void addFFrameSameProperties(IFFrame frame) {
+        fcr.insert(frame);
+        frame.setSelected(true);
+        frame.setLevel(getNumBefore());
+        updateFFrames();
+    }
+
+    public int getNumBehind() {
+        return --numBehind;
+    }
+
+    public int getNumBefore() {
+        return ++numBefore;
+    }
+
+    public IFFrame[] getAllFFrames() {
+        List all = new ArrayList();
+        return (IFFrame[]) allFFrames(getFFrames(), all)
+            .toArray(new IFFrame[0]);
+    }
+
+    public Iterator deepiterator() {
+        List all = new ArrayList();
+        allFFrames(getFFrames(), all);
+        return all.iterator();
+    }
+
+    public Iterator iterator() {
+        return Arrays.asList(fframes).iterator();
+    }
+        
+    private List allFFrames(IFFrame[] fframes, List all) {
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof FFrameGroup) {
+                List groupFrames =
+                    allFFrames(((FFrameGroup) fframes[i]).getFFrames(), all);
+                if (!all.containsAll(groupFrames)) {
+                    all.addAll(groupFrames);
+                }
+
+            } else {
+                if (!all.contains(fframes[i])) {
+                    all.add(fframes[i]);
+                }
+            }
+        }
+        return all;
+    }
+
+    public IFFrame[] getSelectedFFrames() {
+        ArrayList selecList = new ArrayList();
+        IFFrame[] fframes = getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+            IFFrame fframe = fframes[i];
+
+            if (fframe.getSelected() != IFFrame.NOSELECT) {
+                selecList.add(fframe);
+            }
+        }
+        return (IFFrame[]) selecList.toArray(new IFFrame[selecList.size()]);
+    }
+
+	public <T> T[] getSelectedFFrames(Class<T> clazz) {
+        ArrayList<T> selecList = new ArrayList<T>();
+        IFFrame[] fframes = getFFrames();
+        for (int i = fframes.length - 1; i >= 0; i--) {
+        	IFFrame fframe = fframes[i];
+        	if (clazz.isInstance(fframe)) {
+                if (fframe.getSelected() != IFFrame.NOSELECT) {
+                    selecList.add((T)fframe);
+                }
+        	}
+        }
+        T[] newInstance = (T[])Array.newInstance(clazz, selecList.size());
+		return selecList.toArray(newInstance);
+	}
+
+    public boolean isEditable() {
+        return isEditable;
+    }
+
+    public void setEditable(boolean b) {
+        if (!b) {
+            clearSelection();
+            // layoutControl.setTool("layoutzoomin");
+            PluginServices.getMainFrame().setSelectedTool("ZOOM_IN");
+        }
+        isEditable = b;
+
+    }
+
+    public boolean isAdjustingToGrid() {
+        if (adjustToGrid == null) {
+            adjustToGrid = new Boolean(layoutManager.getDefaultAdjustToGrid());
+        }
+        return adjustToGrid.booleanValue();
+    }
+
+    public void setAdjustToGrid(boolean b) {
+        adjustToGrid = new Boolean(b);
+    }
+
+    public void setRuler(boolean b) {
+        m_showRuler = new Boolean(b);
+    }
+
+    public boolean getRuler() {
+        if (m_showRuler == null) {
+            m_showRuler = new Boolean(layoutManager.getDefaultShowRulers());
+        }
+        return m_showRuler.booleanValue();
+    }
+
+    public boolean isGridVisible() {
+        if (isGridVisible == null) {
+            isGridVisible = new Boolean(layoutManager.getDefaultShowGrid());
+        }
+        return isGridVisible.booleanValue();
+    }
+
+    public void setGridVisible(boolean b) {
+        isGridVisible = new Boolean(b);
+    }
+
+    public void fullRefresh() {
+        IFFrame[] fframes = getFFrames();
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof IFFrameUseFMap) {
+                IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i];
+                fframe.refresh();
+            }
+        }
+        notifAllObservers();
+    }
+    
+    public void notifAllObservers(){
+        observers.notifyObservers(this, 
+            new DefaultLayoutNotification(LayoutNotification.LAYOUT_REFRESH));
+    }
+
+    public static void registerPersistent() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        if (manager.getDefinition(PERSISTENCE_DEFINITION_NAME) == null) {
+            DynStruct definition =
+                manager.addDefinition(DefaultLayoutContext.class,
+                    PERSISTENCE_DEFINITION_NAME,
+                    "Layout context persistence definition", null, null);
+
+            definition.addDynFieldInt(NUMBEHIND_FIELD).setMandatory(true);
+            definition.addDynFieldInt(NUMBEFORE_FIELD).setMandatory(true);
+            definition.addDynFieldObject(ATTRIBUTES_FIELD)
+                .setClassOfValue(Attributes.class).setMandatory(true);
+            definition.addDynFieldArray(FFRAMES_FIELD)
+                .setClassOfItems(IFFrame.class).setMandatory(true);
+            // ==================
+            definition.addDynFieldBoolean(ISADJUSTINGTOGRID_FIELD).setMandatory(true);
+            definition.addDynFieldBoolean(ISEDITABLE_FIELD).setMandatory(true);
+            definition.addDynFieldBoolean(IS_GRID_VISIBLE).setMandatory(false);
+            definition.addDynFieldBoolean(IS_RULER_VISIBLE).setMandatory(false);
+            definition.addDynFieldBoolean(HAS_WINDOW_BEEN_EVER_OPEN_FIELD).setMandatory(false);
+        }
+
+        FFrame.registerPersistent();
+        Attributes.registerPersistent();
+    }
+
+    public void loadFromState(PersistentState state)
+        throws PersistenceException {
+        adjustToGrid = state.getBoolean(ISADJUSTINGTOGRID_FIELD);
+        isEditable = state.getBoolean(ISEDITABLE_FIELD);
+        
+        if (state.hasValue(IS_GRID_VISIBLE)) {
+            isGridVisible = state.getBoolean(IS_GRID_VISIBLE);
+        }
+        if (state.hasValue(IS_RULER_VISIBLE)) {
+            m_showRuler = state.getBoolean(IS_RULER_VISIBLE);
+        }
+        if (state.hasValue(HAS_WINDOW_BEEN_EVER_OPEN_FIELD)) {
+        	setHasDocBeenOpened(state.getBoolean(HAS_WINDOW_BEEN_EVER_OPEN_FIELD));
+        }
+        else {
+        	// if not present, assume it was opened (as we are loading from persistence)
+        	setHasDocBeenOpened(true);
+        }
+        
+        numBehind = state.getInt(NUMBEHIND_FIELD);
+        numBefore = state.getInt(NUMBEFORE_FIELD);
+        m_attributes = (Attributes) state.get(ATTRIBUTES_FIELD);
+        IFFrame[] fframes =
+            (IFFrame[]) state.getArray(FFRAMES_FIELD, IFFrame.class);
+        for (int i = 0; i < fframes.length; i++) {
+            addFFrame(fframes[i], true, true);
+        }
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set(ISADJUSTINGTOGRID_FIELD, isAdjustingToGrid());
+        state.set(ISEDITABLE_FIELD, isEditable());
+        state.set(NUMBEHIND_FIELD, numBehind);
+        state.set(NUMBEFORE_FIELD, numBefore);
+        state.set(ATTRIBUTES_FIELD, m_attributes);
+        state.set(FFRAMES_FIELD, fframes);
+        state.set(HAS_WINDOW_BEEN_EVER_OPEN_FIELD, new Boolean(hasDocBeenOpened()));
+        state.set(IS_RULER_VISIBLE, this.getRuler());
+        state.set(IS_GRID_VISIBLE, this.isGridVisible());
+    }
+
+    public void setNumBefore(int numBefore) {
+        this.numBefore = numBefore;
+
+    }
+
+    public void setNumBehind(int numBehind) {
+        this.numBehind = numBehind;
+    }    
+
+    public void addObserver(Observer o) {
+        observers.addObserver(o);        
+    }
+
+    public void deleteObserver(Observer o) {
+      observers.deleteObserver(o);        
+    }
+
+    public void deleteObservers() {
+       observers.deleteObservers();        
+    }
+
+	public void setTocModel(MapContext tocModel) {
+		MapContext oldModel = this.tocModel;
+		this.tocModel = tocModel;
+		if (tocModel==oldModel){
+			// no real change
+			return;
+		}
+		else {
+	    	tocObservers.notifyObservers(this, 
+	                new TocModelChangedImpl(TocModelChangedNotification.Type.MODEL_SET, tocModel));			
+		}
+	}
+	
+	public void notifyTocUpdated(TocModelChangedNotification.Type type) {
+    	tocObservers.notifyObservers(this, 
+    			new TocModelChangedImpl(type, tocModel));			
+		
+	}
+
+	public MapContext getTocModel() {
+		return this.tocModel;
+	}
+
+	public void addTocObserver(TocModelObserver observer) {
+		this.tocObservers.addObserver(observer);
+	}
+
+	public void removeTocObserver(TocModelObserver observer) {
+		this.tocObservers.deleteObserver(observer);
+	}
+
+	public void removeTocObservers() {
+		this.tocObservers.deleteObservers();		
+	}
+
+    /**
+     * True when the document window has been opened at least once, false otherwise. This is required
+     * to decide whether the page setting dialog has to be shown to the user, otherwise it would be
+     * shown every time the document is opened from project persistence
+     */
+	public boolean hasDocBeenOpened() {
+		return hasDocBeenOpened;
+	}
+
+    /**
+     * True when the document window has been opened at least once, false otherwise. This is required
+     * to decide whether the page setting dialog has to be shown to the user, otherwise it would be
+     * shown every time the document is opened from project persistence
+     */
+	public void setHasDocBeenOpened(boolean hasBeenOpened) {
+		this.hasDocBeenOpened = hasBeenOpened;
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedNotification.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedNotification.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/TocModelChangedNotification.java	(revision 590)
@@ -0,0 +1,45 @@
+package org.gvsig.app.project.documents.layout;
+
+import org.gvsig.fmap.mapcontext.MapContext;
+
+/**
+ * Fired when the Toc model changes.
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public interface TocModelChangedNotification {
+	
+	public enum Type {
+		/**
+		 * The model (MapContext object) has been set (understood as
+		 * added, removed or replaced) by a new one, including a null one.
+		 */
+		MODEL_SET,
+
+		/**
+		 * An item has been added or removed to the model
+		 * (layer added, removed, reordered, etc)
+		 */
+		MODEL_CHANGED,
+		/**
+		 * There has been some update on an existing item of the model
+		 * collection
+		 * (visibility changed, item selected, etc)
+		 */		
+		ITEM_UPDATED
+	}
+
+    /**
+     * Returns the type of this notification, represented by one of the constants defined in this interface.
+     * @return a String containing this notification's type
+     */
+    public Type getType();
+    
+    /**
+     * Gets the added or changed model
+     * 
+     * @return The added or changed model, or <code>null</code> if the
+     * model has been removed
+     */
+    public MapContext getModel();
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutKeyEvent.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutKeyEvent.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutKeyEvent.java	(revision 590)
@@ -0,0 +1,213 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.project.documents.layout;
+
+import java.awt.KeyEventDispatcher;
+import java.awt.event.KeyEvent;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.app.project.documents.view.toc.DnDJTree;
+import org.gvsig.tools.undo.RedoException;
+import org.gvsig.tools.undo.UndoException;
+
+public class LayoutKeyEvent implements KeyEventDispatcher {
+
+    private static IFFrame[] selectFFrames = new IFFrame[0];
+    private int difX;
+    private int difY;
+
+    public static boolean copy(LayoutPanel layout)
+        throws CloneNotSupportedException {
+        IFFrame[] fframes = layout.getLayoutContext().getSelectedFFrames();
+        if (fframes.length == 0)
+            return false;
+        selectFFrames = new IFFrame[fframes.length];
+        for (int i = 0; i < fframes.length; i++) {
+            selectFFrames[i] = (IFFrame) fframes[i].clone();
+        }
+        return true;
+    }
+
+    public static boolean cut(LayoutPanel layout)
+        throws CloneNotSupportedException {
+        IFFrame[] fframes = layout.getLayoutContext().getSelectedFFrames();
+        if (fframes.length == 0)
+            return false;
+        selectFFrames = new IFFrame[fframes.length];
+        for (int i = 0; i < fframes.length; i++) {
+            selectFFrames[i] = (IFFrame) fframes[i].clone();
+        }
+        layout.getLayoutContext().delFFrameSelected();
+        layout.getLayoutContext().notifAllObservers();        
+        return true;
+    }
+
+    public static boolean paste(LayoutPanel layout)
+        throws CloneNotSupportedException {
+        IFFrame copyFFrame = null;
+        layout.getLayoutContext().getFrameCommandsRecord()
+            .startComplex(PluginServices.getText(layout, "paste_elements"));
+        for (int i = 0; i < selectFFrames.length; i++) {
+            copyFFrame = (IFFrame) selectFFrames[i].clone();
+            if (i == 0)
+                layout.getLayoutContext().addFFrame(copyFFrame, true, true);
+            else
+                layout.getLayoutContext().addFFrame(copyFFrame, false, true);
+        }
+        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+        layout.getLayoutContext().notifAllObservers();      
+        return true;
+    }
+
+    public static boolean undo(LayoutPanel layout) {
+        LayoutContext lcontext = layout.getLayoutContext();
+        try {
+            lcontext.getFrameCommandsRecord().undo();
+        } catch (UndoException e) {
+            e.printStackTrace();
+        }
+        layout.getLayoutContext().updateFFrames();
+        layout.getLayoutContext().notifAllObservers();      
+        PluginServices.getMainFrame().enableControls();
+        return true;
+    }
+
+    public static boolean redo(LayoutPanel layout) {
+        LayoutContext lcontext = layout.getLayoutContext();
+        try {
+            lcontext.getFrameCommandsRecord().redo();
+        } catch (RedoException e) {
+            e.printStackTrace();
+        }
+        lcontext.updateFFrames();
+        layout.getLayoutContext().notifAllObservers();      
+        PluginServices.getMainFrame().enableControls();
+        return true;
+    }
+
+    public boolean dispatchKeyEvent(KeyEvent e) {
+        IWindow view = PluginServices.getMDIManager().getActiveWindow();
+
+        try {
+            if (e.getID() == KeyEvent.KEY_PRESSED
+                || !(view instanceof LayoutPanel)
+                || !( (e.getSource() instanceof LayoutControl)
+                		|| (e.getSource() instanceof DnDJTree)))
+                return false;
+            LayoutPanel layout = (LayoutPanel) view;
+            if (!layout.getLayoutContext().isEditable())
+                return false;
+            IFFrame[] fframes = layout.getLayoutContext().getSelectedFFrames();
+            int dif = 10;
+            if (e.getModifiers() == KeyEvent.CTRL_MASK) {
+                switch (e.getKeyCode()) {
+                case KeyEvent.VK_C:
+                    copy(layout);
+                    break;
+                case KeyEvent.VK_X:
+                    cut(layout);
+                    break;
+                case KeyEvent.VK_V:
+                    paste(layout);
+                    break;
+                case KeyEvent.VK_Z:
+                    undo(layout);
+                    break;
+                case KeyEvent.VK_Y:
+                    redo(layout);
+                    break;
+                }
+            } else {
+                switch (e.getKeyCode()) {
+                case KeyEvent.VK_LEFT:
+                    difX = difX - dif;
+                    break;
+
+                case KeyEvent.VK_RIGHT:
+                    difX = difX + dif;
+                    break;
+                case KeyEvent.VK_UP:
+                    difY = difY - dif;
+                    break;
+                case KeyEvent.VK_DOWN:
+                    difY = difY + dif;
+                    break;
+                case KeyEvent.VK_DELETE:
+                case KeyEvent.VK_BACK_SPACE:
+                    layout.getLayoutContext().delFFrameSelected();
+                    layout.getLayoutControl().refresh();
+                    break;
+                }
+                if (e.getKeyCode() == KeyEvent.VK_LEFT
+                    || e.getKeyCode() == KeyEvent.VK_RIGHT
+                    || e.getKeyCode() == KeyEvent.VK_UP
+                    || e.getKeyCode() == KeyEvent.VK_DOWN) {
+                    if (fframes.length == 0)
+                        return false;
+                    layout
+                        .getLayoutContext()
+                        .getFrameCommandsRecord()
+                        .startComplex(
+                            PluginServices.getText(this, "move_elements"));
+                    for (int i = 0; i < fframes.length; i++) {
+                        IFFrame fframeAux = (IFFrame) fframes[i].clone();
+                        Rectangle2D r =
+                            getRectMove(fframes[i].getBoundingBox(layout
+                                .getLayoutControl().getAT()), difX, difY);
+                        fframeAux.setBoundBox(FLayoutUtilities.toSheetRect(r,
+                            layout.getLayoutControl().getAT()));
+                        layout.getLayoutContext().getFrameCommandsRecord()
+                            .update(fframes[i], fframeAux);
+                    }
+                    layout.getLayoutContext().getFrameCommandsRecord()
+                        .endComplex();
+                    layout.getLayoutContext().updateFFrames();
+                    layout.getLayoutControl().refresh();
+                }
+                difX = 0;
+                difY = 0;
+
+            }
+            return true;
+        } catch (CloneNotSupportedException e1) {
+            NotificationManager.addError(e1);
+            return false;
+        }
+    }
+
+    private Rectangle2D getRectMove(Rectangle2D r, int difX, int difY) {
+        Rectangle2D rectMove = new Rectangle2D.Double();
+        rectMove.setRect(r.getX() + difX, r.getY() + difY, r.getWidth(),
+            r.getHeight());
+        return rectMove;
+    }
+
+    public static boolean hasSelection() {
+        return selectFFrames.length > 0;
+    }
+
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutGraphicControls.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutGraphicControls.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutGraphicControls.java	(revision 590)
@@ -0,0 +1,147 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.FLayoutGraphics;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameDialogNotification;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Extensi�n que actua sobre el Layout para controlas las diferentes
+ * operaciones sobre los gr�ficos.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutGraphicControls extends Extension {
+
+    private static final Logger logger = LoggerFactory
+        .getLogger(LayoutGraphicControls.class);
+    private LayoutPanel layout = null;
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        FLayoutGraphics lg = new FLayoutGraphics(layout);
+        logger.debug("Comand : " + s);
+
+        if (s.compareTo("layout-graphic-group") == 0) {
+            layout.getLayoutContext().getFrameCommandsRecord()
+                .startComplex(PluginServices.getText(this, "group"));
+            lg.grouping();
+            layout.getLayoutContext().getFrameCommandsRecord().endComplex();
+            layout.getDocument().setModified(true);
+        } else
+            if (s.compareTo("layout-graphic-ungroup") == 0) {
+                lg.ungrouping();
+                layout.getDocument().setModified(true);
+            } else
+                if (s.compareTo("layout-graphic-properties") == 0) {
+                	lg.openFrameDialog(new Observer() {
+						public void update(Observable observable,
+								Object notification) {
+							if (notification instanceof FFrameDialogNotification &&
+									((FFrameDialogNotification)notification).getType()==FFrameDialogNotification.FRAME_CREATED) {
+								getLayout().getDocument().setModified(true);
+							}
+						}
+                	});
+                } else
+                    if (s.compareTo("layout-graphic-align") == 0) {
+                        lg.aligning();
+                        layout.getDocument().setModified(true);
+                    } else
+                        if (s.compareTo("layout-graphic-send-back") == 0) {
+                            lg.behind();
+                            layout.getDocument().setModified(true);
+                        } else
+                            if (s.compareTo("layout-graphic-bring-to-front") == 0) {
+                                lg.before();
+                                layout.getDocument().setModified(true);
+                            } else
+                                if (s.compareTo("layout-graphic-add-border") == 0) {
+                                    if (lg.border()) {
+                                        layout.getDocument().setModified(true);
+                                    }
+                                } else
+                                    if (s.compareTo("layout-graphic-position") == 0) {
+                                        lg.position();
+                                        layout.getDocument().setModified(true);
+                                    }
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        
+        IconThemeHelper.registerIcon("action", "layout-graphic-group", this);
+        IconThemeHelper.registerIcon("action", "layout-graphic-ungroup", this);
+        IconThemeHelper.registerIcon("action", "layout-graphic-bring-to-front", this);
+        IconThemeHelper.registerIcon("action", "layout-graphic-send-back", this);
+        IconThemeHelper.registerIcon("action", "layout-graphic-position", this);
+        IconThemeHelper.registerIcon("action", "layout-graphic-add-border", this);
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (!layout.getLayoutContext().isEditable())
+            return false;
+        return true;
+    }
+    
+	protected LayoutPanel getLayout() {
+		return layout;
+	}
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutCommandStackExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutCommandStackExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutCommandStackExtension.java	(revision 590)
@@ -0,0 +1,68 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.app.gui.command.CommandStackDialog;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+public class LayoutCommandStackExtension extends Extension {
+
+    private LayoutPanel layout = null;
+
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        IconThemeHelper.registerIcon("action", "edit-undo-redo-actions", this);
+    }
+
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (s.equals("edit-undo-redo-actions-layout")) {
+            CommandStackDialog csd = new CommandStackDialog();
+            csd.setModel(layout.getLayoutContext().getFrameCommandsRecord());
+            layout.getLayoutContext().getFrameCommandsRecord()
+                .addObserver(layout);
+            PluginServices.getMDIManager().addWindow(csd);
+            layout.getDocument().setModified(true);
+        }
+    }
+
+    public boolean isEnabled() {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (layout.getLayoutContext().isEditable())
+            return true;
+        return false;
+    }
+
+    public boolean isVisible() {
+        if (PluginServices.getMDIManager().getActiveWindow() instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutUndoExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutUndoExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutUndoExtension.java	(revision 590)
@@ -0,0 +1,75 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.undo.UndoException;
+
+public class LayoutUndoExtension extends Extension {
+
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        
+        IconThemeHelper.registerIcon("action", "edit-undo", this);
+    }
+
+    public void execute(String actionCommand) {
+        LayoutPanel layout =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (actionCommand.equals("edit-undo-layout")) {
+            try {
+                layout.getLayoutContext().getFrameCommandsRecord().undo();
+            } catch (UndoException e) {
+                NotificationManager.showMessageError("Undo layout", e);
+            }
+            layout.getLayoutContext().updateFFrames();
+            layout.getLayoutControl().refresh();
+            layout.getDocument().setModified(true);
+        }
+    }
+
+    public boolean isEnabled() {
+        if (PluginServices.getMDIManager().getActiveWindow() instanceof LayoutPanel) {
+            LayoutPanel layout =
+                (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+            if (layout.getLayoutContext().getFrameCommandsRecord().canUndo()
+                && layout.getLayoutContext().isEditable())
+                return true;
+        }
+        return false;
+    }
+
+    public boolean isVisible() {
+        if (PluginServices.getMDIManager().getActiveWindow() instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/TagExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/TagExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/TagExtension.java	(revision 590)
@@ -0,0 +1,130 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.awt.Component;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+public class TagExtension extends Extension {
+
+    private LayoutPanel layout = null;
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+
+        IconThemeHelper.registerIcon("action", "layout-graphic-show-tags", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-tag", this);
+
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+
+        /*
+         * FLayoutZooms zooms = new FLayoutZooms(layout);
+         * logger.debug("Comand : " + s);
+         * if (s.compareTo("SET_TAG") == 0) {
+         * layout.setTool(Layout.SET_TAG);
+         * }
+         */
+
+        // FJP: Cambio: abrimos la ventana de tag para
+        // asignar el tag a los elementos seleccionados
+        if (s.equals("layout-insert-tag")) {
+            IFFrame[] selectedFrames =
+                layout.getLayoutContext().getSelectedFFrames();
+            if (selectedFrames.length > 0) {
+                String defaultStr = "";
+                if (selectedFrames.length == 1)
+                    defaultStr = selectedFrames[0].getTag();
+                String theTag =
+                    JOptionPane.showInputDialog(
+                        (Component) PluginServices.getMainFrame(),
+                        "Introduzca el tag:", defaultStr);
+                if (theTag != null) {
+                    for (int i = 0; i < selectedFrames.length; i++)
+                        selectedFrames[i].setTag(theTag);
+                }
+                layout.getDocument().setModified(true);
+            }
+        } else
+            if (s.equals("layout-graphic-show-tags")) {
+                // IFFrame[] frames = layout.getFFrames();
+                // for (int i=0; i< frames.length; i++)
+                // {
+                // IFFrame f = frames[i];
+                // if (f instanceof FFrameText)
+                // {
+                // FFrameText txt = (FFrameText) f;
+                // if (f.getTag() != null)
+                // {
+                // txt.clearText();
+                // txt.addText(f.getTag());
+                // }
+                // }
+                // }
+                layout.setShowIconTag(true);
+                layout.getLayoutControl().refresh();
+            }
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        IFFrame[] selectedFrames =
+            layout.getLayoutContext().getSelectedFFrames();
+        if (selectedFrames == null)
+            return false;
+        return (selectedFrames.length > 0);
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f != null && f instanceof LayoutPanel) {
+            layout = (LayoutPanel) f;
+            return true;
+        }
+        return false;
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/PrintProperties.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/PrintProperties.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/PrintProperties.java	(revision 590)
@@ -0,0 +1,102 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+/**
+ */
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author vcn
+ */
+public class PrintProperties extends Extension /*
+                                                * implements
+                                                * IPreferenceExtension
+                                                */{
+
+    private LayoutPanel l;
+    // private static final IPreference printPropertiesPage = new
+    // PrintPropertiesPage();
+    // private Paper paper;
+    Rectangle2D.Double aux = null;
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param s
+     *            DOCUMENT ME!
+     */
+    public void execute(String s) {
+        if (s.compareTo("application-page-setup-layout") == 0) {
+            l = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+            l.showFConfig();
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        return (f instanceof LayoutPanel);
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        LayoutPanel f =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null || !f.getLayoutContext().isEditable()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        IconThemeHelper.registerIcon("action", "application-page-setup", this);
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutExtension.java	(revision 590)
@@ -0,0 +1,296 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.awt.Component;
+import java.io.File;
+import java.io.FileOutputStream;
+
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.preferences.IPreference;
+import org.gvsig.andami.preferences.IPreferenceExtension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.gui.preferencespage.LayoutPage;
+import org.gvsig.app.project.documents.layout.FLayoutZooms;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.i18n.Messages;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.text.JavaTextFactory;
+import org.gvsig.utils.GenericFileFilter;
+
+/**
+ * Extensi�n para controlar las operaciones basicas sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutExtension extends Extension implements IPreferenceExtension {
+
+    private static final Logger logger = LoggerFactory
+            .getLogger(LayoutExtension.class);
+
+    private LayoutPanel layout = null;
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        FLayoutZooms zooms = new FLayoutZooms(layout);
+        logger.debug("Comand : " + s);
+
+        if (s.equals("layout-navigation-pan")) {
+            layout.getLayoutControl().setTool("layoutpan");
+        }
+        else if (s.equals("layout-navigation-zoom-in-topoint")) {
+            layout.getLayoutControl().setTool("layoutzoomin");
+        }
+        else if (s.equals("layout-navigation-zoom-out-topoint")) {
+            layout.getLayoutControl().setTool("layoutzoomout");
+        }
+        else if (s.equals("layout-navigation-zoom-all")) {
+            layout.getLayoutControl().fullRect();
+        }
+        else if (s.equals("layout-navigation-zoom-real")) {
+            zooms.realZoom();
+        }
+        else if (s.equals("layout-navigation-zoom-out-center")) {
+            zooms.zoomOut();
+        }
+        else if (s.equals("layout-navigation-zoom-in-center")) {
+            zooms.zoomIn();
+        }
+        else if (s.equals("layout-navigation-zoom-selected")) {
+            zooms.zoomSelect();
+        }
+        else if (s.equals("application-layout-template-save")) {
+            saveLayout();
+        }
+    }
+
+    private void saveLayout() {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        JFileChooser jfc = new JFileChooser();
+        GenericFileFilter layoutMainFilter = new GenericFileFilter(
+                LayoutManager.TEMPLATE_FILE_POINTEXT,
+                Messages.getText("_Layout_template") + " (*"
+                        + LayoutManager.TEMPLATE_FILE_POINTEXT + ")");
+        jfc.addChoosableFileFilter(layoutMainFilter);
+        jfc.setFileFilter(layoutMainFilter);
+
+        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+            File file = jfc.getSelectedFile();
+            if (!(file.getPath().endsWith(
+                    LayoutManager.TEMPLATE_FILE_POINTEXT.toLowerCase()) || file
+                    .getPath().endsWith(LayoutManager.TEMPLATE_FILE_POINTEXT))) {
+                file = new File(file.getPath()
+                        + LayoutManager.TEMPLATE_FILE_POINTEXT);
+            }
+            if (file.exists()) {
+                int resp = JOptionPane.showConfirmDialog(
+                        (Component) PluginServices.getMainFrame(),
+                        PluginServices.getText(this,
+                                "fichero_ya_existe_seguro_desea_guardarlo"),
+                        PluginServices.getText(this, "guardar"),
+                        JOptionPane.YES_NO_OPTION);
+                if (resp != JOptionPane.YES_OPTION) {
+                    return;
+                }
+            }
+
+            try {
+                FileOutputStream fos = new FileOutputStream(
+                        file.getAbsolutePath());
+                PersistenceManager persistenceManager = ToolsLocator
+                        .getPersistenceManager();
+                PersistentState persistentState = persistenceManager
+                        .getState(layout);
+                persistenceManager.saveState(persistentState, fos);
+            }
+            catch (Exception e) {
+                NotificationManager.addError(PluginServices.getText(this,
+                        "Error_guardando_la_plantilla"), e);
+            }
+        }
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+        registerPersistence();
+        registerIcons();
+    }
+
+    private void registerPersistence() {
+        PersistenceManager manager = ToolsLocator.getPersistenceManager();
+        JavaTextFactory factory = new JavaTextFactory();
+        manager.registerFactory(factory);
+    }
+
+    private void registerIcons() {
+
+        IconThemeHelper.registerIcon("action",
+                "application-layout-template-save", this);
+
+        IconThemeHelper.registerIcon("action",
+                "layout-navigation-zoom-in-center", this);
+        IconThemeHelper.registerIcon("action",
+                "layout-navigation-zoom-out-center", this);
+        IconThemeHelper.registerIcon("action",
+                "layout-navigation-zoom-in-topoint", this);
+        IconThemeHelper.registerIcon("action",
+                "layout-navigation-zoom-out-topoint", this);
+        IconThemeHelper.registerIcon("action", "layout-navigation-zoom-all",
+                this);
+        IconThemeHelper.registerIcon("action", "layout-navigation-zoom-real",
+                this);
+        IconThemeHelper.registerIcon("action",
+                "layout-navigation-zoom-selected", this);
+        IconThemeHelper.registerIcon("action", "layout-navigation-pan", this);
+
+        IconThemeHelper.registerIcon("action",
+                "layout-view-navigation-zoom-in-topoint", this);
+        IconThemeHelper.registerIcon("action",
+                "layout-view-navigation-zoom-out-topoint", this);
+        IconThemeHelper.registerIcon("action",
+                "layout-view-navigation-zoom-all", this);
+        IconThemeHelper.registerIcon("action", "layout-view-navigation-pan",
+                this);
+        // ================================================
+        // Cursors
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-navigation-zoom-in-topoint", this);
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-navigation-zoom-out-topoint", this);
+        IconThemeHelper.registerIcon("cursor", "cursor-selection-by-rectangle",
+                this);
+        IconThemeHelper.registerIcon("cursor", "cursor-selection-simple", this);
+        IconThemeHelper
+                .registerIcon("cursor", "cursor-selection-complex", this);
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-graphic-edit-vertex", this);
+        IconThemeHelper.registerIcon("cursor", "cursor-layout-insert-circle",
+                this);
+        IconThemeHelper.registerIcon("cursor", "cursor-layout-insert-polyline",
+                this);
+        IconThemeHelper.registerIcon("cursor", "cursor-layout-insert-point",
+                this);
+        IconThemeHelper.registerIcon("cursor", "cursor-layout-insert-polygon",
+                this);
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-insert-rectangle", this);
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-view-navigation-zoom-in-topoint", this);
+        IconThemeHelper.registerIcon("cursor",
+                "cursor-layout-view-navigation-zoom-out-topoint", this);
+        // End cursors
+        // ================================================
+
+        IconThemeHelper.registerIcon("document", "document-map-icon", this);
+        IconThemeHelper.registerIcon("document", "document-map-icon-sel", this);
+
+        IconThemeHelper.registerIcon("layout", "neresize-icon", this);
+        IconThemeHelper.registerIcon("layout", "eresize-icon", this);
+        IconThemeHelper.registerIcon("layout", "nresize-icon", this);
+        IconThemeHelper.registerIcon("layout", "graphic-move-icon", this);
+
+        IconThemeHelper.registerIcon("layout", "sereresize-icon", this);
+        IconThemeHelper.registerIcon("layout", "symboltag-icon", this);
+        IconThemeHelper.registerIcon("layout", "numero-icon", this);
+        IconThemeHelper.registerIcon("layout", "barra1-icon", this);
+        IconThemeHelper.registerIcon("layout", "barra2-icon", this);
+        IconThemeHelper.registerIcon("layout", "barra3-icon", this);
+
+        IconThemeHelper.registerIcon("layout", "text-left-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-center-v-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-right-icon", this);
+        IconThemeHelper.registerIcon("layout", "left-rotation-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-up-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-center-h-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-down-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-distup-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-distcenterh-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-distdown-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-distleft-icon", this);
+
+        IconThemeHelper.registerIcon("layout", "text-distcenterv-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-distright-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-size-width-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-size-height-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-size-other-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-space-right-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-space-down-icon", this);
+        IconThemeHelper.registerIcon("layout", "text-inlayout-icon", this);
+        IconThemeHelper.registerIcon("layout", "layout-pan-icon", this);
+        IconThemeHelper.registerIcon("layout", "view-pan-icon", this);
+        IconThemeHelper.registerIcon("layout", "right-rotation-icon", this);
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        return true;
+    }
+
+    /**
+     * Devuelve el Layout sobre el que se opera.
+     * 
+     * @return Layout.
+     */
+    public LayoutPanel getLayout() {
+        return layout;
+    }
+
+    public IPreference[] getPreferencesPages() {
+        return new IPreference[] { new LayoutPage() };
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/ExportLayoutExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/ExportLayoutExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/ExportLayoutExtension.java	(revision 590)
@@ -0,0 +1,97 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.io.File;
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.util.ArrayUtils;
+
+/**
+ * Extension for exporting the layout to PDF or PostScript.
+ *
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class ExportLayoutExtension extends Extension {
+
+    private LayoutPanel layoutPanel;
+
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+
+        IconThemeHelper.registerIcon("action", "application-export-to-postscript", this);
+        IconThemeHelper.registerIcon("action", "application-export-to-pdf", this);
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        this.execute(s, null);
+    }
+
+    @Override
+    public void execute(String command, Object[] args) {
+        layoutPanel = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (command.equals("application-export-to-pdf")) {
+            Object file = ArrayUtils.get(args, 0);
+            if( file instanceof String ) {
+                file = new File((String)file);
+            }
+            if( file == null ) {
+                layoutPanel.layoutToPDF();
+            } else {
+                layoutPanel.layoutToPDF((File)file);
+            }
+        } else if (command.equals("application-export-to-postscript")) {
+            layoutPanel.layoutToPS();
+        }
+    }
+
+    public boolean isEnabled() {
+        return true;
+    }
+
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            // Layout layout = (Layout) f;
+
+            return true; // layout.m_Display.getMapControl().getMapContext().getLayers().layerCount()
+            // > 0;
+        } else {
+            return false;
+        }
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameLegendExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameLegendExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameLegendExtension.java	(revision 590)
@@ -0,0 +1,95 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.FLayoutGraphics;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.fframes.IFFrame;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Extensi�n preparada para controlar las opciones que se pueden realizar sobre
+ * una vista a�adida en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameLegendExtension extends Extension {
+
+    private LayoutPanel layout = null;
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        FLayoutGraphics lg = new FLayoutGraphics(layout);
+        if (s.compareTo("layout-graphic-simplify-legend") == 0) {
+            lg.simplify();
+            layout.getDocument().setModified(true);
+        }
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        LayoutPanel l =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        IFFrame[] fframes = l.getLayoutContext().getSelectedFFrames();
+        if (!l.getLayoutContext().isEditable())
+            return false;
+        for (int i = 0; i < fframes.length; i++) {
+            if (fframes[i] instanceof FFrameLegend) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true; // layout.m_Display.getMapControl().getMapContext().getLayers().layerCount()
+                         // > 0;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditVertexExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditVertexExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditVertexExtension.java	(revision 590)
@@ -0,0 +1,122 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Extensi�n que contiene todas las herramientas de edici�n.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutEditVertexExtension extends Extension {
+
+    private static final Logger logger = LoggerFactory
+        .getLogger(LayoutEditVertexExtension.class);;
+    private LayoutPanel layout = null;
+
+    /**
+     * DOCUMENT ME!
+     */
+    public void initialize() {
+        // TODO Auto-generated method stub
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        
+        IconThemeHelper.registerIcon(
+            "action", "layout-graphic-edit-vertex", this);
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @param s
+     *            DOCUMENT ME!
+     */
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        logger.debug("Comand : " + s);
+        if (s.compareTo("layout-graphic-edit-vertex") == 0) {
+            layout.getLayoutControl().setTool("layoutedit");
+            layout.getDocument().setModified(true);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public boolean isEnabled() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            LayoutPanel layout = (LayoutPanel) f;
+            if (layout.getLayoutContext().isEditable()) {
+                return true;
+                // IFFrame[] fframes = layout.getFFrames();
+                // for (int i = 0; i < fframes.length; i++) {
+                // if (fframes[i].getSelected() != IFFrame.NOSELECT
+                // && fframes[i] instanceof IFFrameEditableVertex) {
+                // return true;
+                // }
+                // }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            // Layout layout = (Layout) f;
+            return true; // layout.m_Display.getMapControl().getMapContext().getLayers().layerCount()
+                         // > 0;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutMainExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutMainExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutMainExtension.java	(revision 590)
@@ -0,0 +1,351 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.awt.Component;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.prefs.Preferences;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.project.Project;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.layout.DefaultLayoutManager;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.LayoutManager;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.BeforeLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.BehindLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.CancelLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.CopyLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.CutLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.PasteLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.PositionLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.PropertyLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.RefreshLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.SelectAllLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.SimplifyLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.contextmenu.gui.TerminateLayoutMenuEntry;
+import org.gvsig.app.project.documents.layout.fframes.FFrame;
+import org.gvsig.app.project.documents.layout.fframes.FFrameBasicFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphics;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGraphicsFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGrid;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGridFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroup;
+import org.gvsig.app.project.documents.layout.fframes.FFrameGroupFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegend;
+import org.gvsig.app.project.documents.layout.fframes.FFrameLegendFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameNorth;
+import org.gvsig.app.project.documents.layout.fframes.FFrameNorthFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverViewFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFramePicture;
+import org.gvsig.app.project.documents.layout.fframes.FFramePictureFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameScaleBar;
+import org.gvsig.app.project.documents.layout.fframes.FFrameScaleBarFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameSymbol;
+import org.gvsig.app.project.documents.layout.fframes.FFrameSymbolFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameTable;
+import org.gvsig.app.project.documents.layout.fframes.FFrameTableFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameText;
+import org.gvsig.app.project.documents.layout.fframes.FFrameTextFactory;
+import org.gvsig.app.project.documents.layout.fframes.FFrameView;
+import org.gvsig.app.project.documents.layout.fframes.FFrameViewFactory;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameBoxDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameGraphicsDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameGridDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameGroupDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameLegendDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameNorthDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameOverViewDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFramePictureDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameScaleBarDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameTextDialog;
+import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.FFrameViewDialog;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.gui.beans.swing.JFileChooser;
+import org.gvsig.i18n.Messages;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+import org.gvsig.tools.persistence.PersistenceManager;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+import org.gvsig.utils.GenericFileFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Extension que proporciona controles para crear proyectos nuevos, abrirlos y
+ * guardarlos. Adem�s los tipos de tabla que soporta el proyecto son a�adidos en
+ * esta clase.
+ * 
+ * @author Fernando Gonz�lez Cort�s
+ */
+public class LayoutMainExtension extends Extension {
+
+    private static final Logger logger = LoggerFactory
+            .getLogger(FFrameView.class);
+
+    private String templatesPath;
+
+    public static final String LAYOUT_TEMPLATE_FILECHOOSER_ID = "LAYOUT_TEMPLATE_FILECHOOSER_ID";
+
+    private void registerIcons() {
+
+        IconThemeHelper.registerIcon("action",
+                "application-layout-template-open", this);
+    }
+
+    public void initialize() {
+        registerIcons();
+    }
+
+    public void postInitialize() {
+        super.postInitialize();
+        initializeDocumentActionsExtensionPoint();
+        registerDocuments();
+        registerFFrames();
+        registerContextMenuOptions();
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#updateUI(java.lang.String)
+     */
+    public void execute(String actionCommand) {
+        if ("application-layout-template-open".equals(actionCommand)) {
+            openLayout();
+        }
+    }
+
+    private void openLayout() {
+        LayoutPanel layout = null;
+
+        if (templatesPath == null) {
+            Preferences prefs = Preferences.userRoot().node("gvsig.foldering");
+            templatesPath = prefs.get("TemplatesFolder", null);
+        }
+
+        JFileChooser jfc = new JFileChooser(LAYOUT_TEMPLATE_FILECHOOSER_ID,
+                templatesPath);
+        GenericFileFilter layoutMainExtensionFilter = new GenericFileFilter(
+                LayoutManager.TEMPLATE_FILE_POINTEXT,
+                Messages.getText("_Layout_template") + " (*"
+                        + LayoutManager.TEMPLATE_FILE_POINTEXT + ")");
+        jfc.addChoosableFileFilter(layoutMainExtensionFilter);
+        jfc.setFileFilter(layoutMainExtensionFilter);
+
+        if (jfc.showOpenDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+            File file = jfc.getSelectedFile();
+            try {
+                if (!file.exists()) {
+                    /*
+                     * The user has written a file name instead of clicking on
+                     * one and it does not exist
+                     */
+                    File auxfile = new File(file.getPath()
+                            + LayoutManager.TEMPLATE_FILE_POINTEXT);
+                    if (!auxfile.exists()) {
+                        /*
+                         * Not even this one exists: error
+                         */
+                        throw new IOException("File does not exist: "
+                                + file.getName());
+                    }
+                    else {
+                        file = auxfile;
+                    }
+                }
+
+                File xmlFile = new File(file.getAbsolutePath());
+                FileInputStream is = new FileInputStream(xmlFile);
+
+                PersistenceManager persistenceManager = ToolsLocator
+                        .getPersistenceManager();
+                PersistentState persistentState = persistenceManager
+                        .loadState(is);
+                layout = (LayoutPanel) persistenceManager
+                        .create(persistentState);
+
+            }
+            catch (Exception e) {
+                String tit = Messages.getText("_Layout_template");
+                String msg = null;
+
+                if (e instanceof PersistenceException) {
+                    msg = Messages.getText("_Bad_format_in_layout_template");
+                }
+                else {
+                    msg = Messages.getText("_Cant_load_layout_template");
+                }
+
+                msg = msg + ": " + file.getPath();
+                msg = msg + "\n" + e.getMessage();
+                logger.warn(msg, e);
+                JOptionPane.showMessageDialog(ApplicationLocator.getManager()
+                        .getRootComponent(), msg, tit,
+                        JOptionPane.ERROR_MESSAGE);
+            }
+
+            if (layout == null) {
+                return;
+            }
+
+            LayoutDocument layoutDocument = (LayoutDocument) layout
+                    .getDocument();
+            /*
+             * (LayoutDocument) ProjectManager.getInstance().createDocument(
+             * DefaultLayoutManager.TYPENAME, file.getName());
+             */
+
+            Project p = ApplicationLocator.getManager().getProjectManager()
+                    .getCurrentProject();
+            p.addDocument(layoutDocument);
+
+            layout.getLayoutControl().setTool("layoutselect");
+
+            LayoutManager lm = (LayoutManager) layoutDocument.getFactory();
+            layout.setLayoutManager(lm);
+
+            PluginServices.getMDIManager().addWindow(layout);
+
+        }
+    }
+
+    private void registerDocuments() {
+        DefaultLayoutManager.register();
+    }
+
+    private void registerFFrames() {
+        DefaultLayoutManager layoutManager = (DefaultLayoutManager) ProjectManager
+                .getInstance()
+                .getDocumentManager(DefaultLayoutManager.TYPENAME);
+
+        // Register Frames
+        layoutManager.registerFrameFactory(new FFrameBasicFactory());
+        layoutManager.registerFrameFactory(new FFrameGraphicsFactory());
+        layoutManager.registerFrameFactory(new FFrameGroupFactory());
+        layoutManager.registerFrameFactory(new FFrameLegendFactory());
+        layoutManager.registerFrameFactory(new FFrameNorthFactory());
+        layoutManager.registerFrameFactory(new FFrameOverViewFactory());
+        layoutManager.registerFrameFactory(new FFramePictureFactory());
+        layoutManager.registerFrameFactory(new FFrameScaleBarFactory());
+        layoutManager.registerFrameFactory(new FFrameSymbolFactory());
+        layoutManager.registerFrameFactory(new FFrameTableFactory());
+        layoutManager.registerFrameFactory(new FFrameTextFactory());
+        layoutManager.registerFrameFactory(new FFrameViewFactory());
+        layoutManager.registerFrameFactory(new FFrameGridFactory());
+
+        // Register FFrameDialogs forms
+        layoutManager.registerFFrameDialog(
+                FFrameGraphics.PERSISTENCE_DEFINITION_NAME,
+                FFrameGraphicsDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameSymbol.PERSISTENCE_DEFINITION_NAME,
+                FFrameGraphicsDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameGroup.PERSISTENCE_DEFINITION_NAME,
+                FFrameGroupDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameTable.PERSISTENCE_DEFINITION_NAME, FFrameBoxDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameLegend.PERSISTENCE_DEFINITION_NAME,
+                FFrameLegendDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFramePicture.PERSISTENCE_DEFINITION_NAME,
+                FFramePictureDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameNorth.PERSISTENCE_DEFINITION_NAME,
+                FFrameNorthDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameScaleBar.PERSISTENCE_DEFINITION_NAME,
+                FFrameScaleBarDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameText.PERSISTENCE_DEFINITION_NAME, FFrameTextDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameView.PERSISTENCE_DEFINITION_NAME, FFrameViewDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameOverView.PERSISTENCE_DEFINITION_NAME,
+                FFrameOverViewDialog.class);
+        layoutManager.registerFFrameDialog(
+                FFrameGrid.PERSISTENCE_DEFINITION_NAME, FFrameGridDialog.class);
+
+        FFrame.initializeIcons();
+        FFrameTable.initializeIcons();
+    }
+
+    private void registerContextMenuOptions() {
+        LayoutManager layoutManager = (LayoutManager) ProjectManager
+                .getInstance().getDocumentManager("project.document.layout");
+
+        layoutManager.registerLayoutMenuAction("Terminate",
+                TerminateLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Cancel",
+                CancelLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Copy",
+                CopyLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Cut", CutLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Paste",
+                PasteLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Simplify",
+                SimplifyLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Property",
+                PropertyLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("SelectAll",
+                SelectAllLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Behind",
+                BehindLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Before",
+                BeforeLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Position",
+                PositionLayoutMenuEntry.class);
+        layoutManager.registerLayoutMenuAction("Refresh",
+                RefreshLayoutMenuEntry.class);
+
+    }
+
+    private void initializeDocumentActionsExtensionPoint() {
+        ExtensionPointManager epMan = ToolsLocator.getExtensionPointManager();
+        epMan.add(
+                "DocumentActions_Map",
+                "Context menu options of the map document list"
+                        + " in the project window "
+                        + "(register instances of "
+                        + "org.gvsig.app.project.AbstractDocumentContextMenuAction)");
+    }
+
+    public boolean isEnabled() {
+        return true;
+    }
+
+    public boolean isVisible() {
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertToolsExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertToolsExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertToolsExtension.java	(revision 590)
@@ -0,0 +1,196 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Extensi�n para editar los v�rtices de las geometr�as a�adidas en un
+ * FFrameGraphics.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutInsertToolsExtension extends Extension {
+
+    private static final Logger logger = LoggerFactory
+        .getLogger(LayoutInsertToolsExtension.class);
+
+    private LayoutPanel layout = null;
+
+    public void initialize() {
+        // TODO Auto-generated method stub
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        
+        IconThemeHelper.registerIcon("action", "layout-insert-text", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-point", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-rectangle", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-circle", this);
+
+        IconThemeHelper.registerIcon("action", "layout-insert-line", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-polyline", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-polygon", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-image", this);
+
+        IconThemeHelper.registerIcon("action", "layout-insert-view", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-locator", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-legend", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-scalebar", this);
+
+        IconThemeHelper.registerIcon("action", "layout-insert-north", this);
+        IconThemeHelper.registerIcon("action", "layout-insert-box", this);
+
+        // ============================================================
+        
+        IconThemeHelper.registerIcon("action", "edit-delete", this);
+        IconThemeHelper.registerIcon("action", "selection-by-rectangle", this);
+    }
+
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        logger.debug("Comand : " + s);
+        boolean insertGroupPosibility = false;
+        
+        if (s.equals("selection-select-by-rectangle-layout")) {
+            layout.getLayoutControl().setTool("layoutselect");
+        } else
+            if (s.equals("layout-insert-view")) {
+                layout.getLayoutControl().setTool("layoutaddview");
+                insertGroupPosibility = true;
+            } else
+                if (s.equals("layout-insert-locator")) {
+                    layout.getLayoutControl().setTool("layoutaddoverview");
+                    insertGroupPosibility = true;
+                } else
+                    if (s.equals("layout-insert-image")) {
+                        layout.getLayoutControl().setTool("layoutaddpicture");
+                        insertGroupPosibility = true;
+                    } else
+                        if (s.equals("layout-insert-scalebar")) {
+                            layout.getLayoutControl().setTool("layoutaddscale");
+                            insertGroupPosibility = true;
+                        } else
+                            if (s.equals("layout-insert-legend")) {
+                                layout.getLayoutControl().setTool(
+                                    "layoutaddlegend");
+                                insertGroupPosibility = true;
+                            } else
+                                if (s.equals("layout-insert-text")) {
+                                    layout.getLayoutControl().setTool(
+                                        "layoutaddtext");
+                                    insertGroupPosibility = true;
+                                } else
+                                    if (s.equals("layout-insert-north")) {
+                                        layout.getLayoutControl().setTool(
+                                            "layoutaddnorth");
+                                        insertGroupPosibility = true;
+                                    } else
+                                        if (s.equals("layout-insert-box")) {
+                                            layout.getLayoutControl().setTool(
+                                                "layoutaddbox");
+                                            insertGroupPosibility = true;
+                                        } else
+                                            if (s.equals("layout-insert-point")) {
+                                                layout.getLayoutControl()
+                                                    .setTool("layoutaddpoint");
+                                            } else
+                                                if (s.equals("layout-insert-line")) {
+                                                    layout.getLayoutControl()
+                                                        .setTool(
+                                                            "layoutaddline");
+                                                } else
+                                                    if (s.equals("layout-insert-polyline")) {
+                                                        layout
+                                                            .getLayoutControl()
+                                                            .setTool(
+                                                                "layoutaddpolyline");
+                                                    } else
+                                                        if (s.equals("layout-insert-circle")) {
+                                                            layout
+                                                                .getLayoutControl()
+                                                                .setTool(
+                                                                    "layoutaddcircle");
+                                                        } else
+                                                            if (s
+                                                                .equals("layout-insert-rectangle")) {
+                                                                layout
+                                                                    .getLayoutControl()
+                                                                    .setTool(
+                                                                        "layoutaddrectangle");
+                                                            } else
+                                                                if (s
+                                                                    .equals("layout-insert-polygon")) {
+                                                                    layout
+                                                                        .getLayoutControl()
+                                                                        .setTool(
+                                                                            "layoutaddpolygon");
+                                                                } else
+                                                                    if (s
+                                                                        .equals("edit-delete-layout")) {
+                                                                        layout
+                                                                            .getLayoutContext()
+                                                                            .delFFrameSelected();
+                                                                        layout
+                                                                            .getLayoutControl()
+                                                                            .refresh();
+                                                                    }
+        layout.getDocument().setModified(true);
+    }
+
+    public boolean isEnabled() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return ((LayoutPanel) f).getLayoutContext().isEditable();
+        }
+
+        return false;
+    }
+
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutRedoExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutRedoExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutRedoExtension.java	(revision 590)
@@ -0,0 +1,74 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.tools.undo.RedoException;
+
+public class LayoutRedoExtension extends Extension {
+
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+
+        IconThemeHelper.registerIcon("action", "edit-redo", this);
+    }
+
+    public void execute(String actionCommand) {
+        LayoutPanel layout =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (actionCommand.equals("edit-redo-layout")) {
+            try {
+                layout.getLayoutContext().getFrameCommandsRecord().redo();
+            } catch (RedoException e) {
+                NotificationManager.showMessageError("Redo layout", e);
+            }
+            layout.getLayoutContext().updateFFrames();
+            layout.getLayoutControl().refresh();
+            layout.getDocument().setModified(true);
+        }
+    }
+
+    public boolean isEnabled() {
+        if (PluginServices.getMDIManager().getActiveWindow() instanceof LayoutPanel) {
+            LayoutPanel layout =
+                (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+            if (layout.getLayoutContext().getFrameCommandsRecord().canRedo()
+                && layout.getLayoutContext().isEditable())
+                return true;
+        }
+        return false;
+    }
+
+    public boolean isVisible() {
+        if (PluginServices.getMDIManager().getActiveWindow() instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertOverViewExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertOverViewExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutInsertOverViewExtension.java	(revision 590)
@@ -0,0 +1,77 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Extensi�n para insertar un localizador sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutInsertOverViewExtension extends Extension {
+
+    private LayoutPanel layout = null;
+
+    public void initialize() {
+        // TODO Auto-generated method stub
+    }
+
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        if (s.equals("layout-insert-locator")) {
+            layout.getLayoutControl().setTool("layoutaddoverview");
+        }
+    }
+
+    public boolean isEnabled() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return ((LayoutPanel) f).getLayoutContext().isEditable();
+        }
+
+        return false;
+    }
+
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewPanExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewPanExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewPanExtension.java	(revision 590)
@@ -0,0 +1,112 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.PluginsManager;
+import org.gvsig.andami.actioninfo.ActionInfoManager;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dataTypes.DataTypes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Extensi�n preparada para controlar las opciones que se pueden realizar sobre
+ * una vista a�adida en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameViewPanExtension extends Extension {
+
+    private LayoutPanel layout = null;
+    private static Logger logger = LoggerFactory.getLogger(FFrameViewPanExtension.class);
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+    	
+    }
+    
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (s.compareTo("layout-view-navigation-pan") == 0) {
+        	layout.getLayoutControl().setTool("layoutviewpan");
+        	layout.getDocument().setModified(true);
+        }
+    }
+    
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+    	IWindow window = PluginServices.getMDIManager().getActiveWindow();
+    	if (window instanceof LayoutPanel) {
+    		LayoutPanel l =
+    				(LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+    		if (!l.getLayoutContext().isEditable()) {
+    			return false;
+    		}
+    		IFFrameUseFMap[] fframes = l.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+    		if (fframes.length==1 && !(fframes[0] instanceof FFrameOverView)) {
+    			IFFrameUseFMap fframeview = (IFFrameUseFMap) fframes[0];
+    			if (fframeview.getScaleType()==IFFrameUseFMap.SCALE_TYPE.NORMAL
+    					|| fframeview.getScaleType()==IFFrameUseFMap.SCALE_TYPE.FIXED_SCALE) {
+    				return true;
+    			}
+    		}
+    	}
+    	return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+        if (f == null) {
+            return false;
+        }
+        if (f instanceof LayoutPanel) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewExtension.java	(revision 590)
@@ -0,0 +1,154 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.PluginsManager;
+import org.gvsig.andami.actioninfo.ActionInfoManager;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.documents.layout.LayoutDocument;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.dal.exception.ReadException;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dataTypes.DataTypes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Extensi�n preparada para controlar las opciones que se pueden realizar sobre
+ * una vista a�adida en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameViewExtension extends Extension {
+
+    private static Logger logger = LoggerFactory.getLogger(FFrameViewExtension.class);
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+    	
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String, Object[])
+     */
+    public void execute(String command, Object[] args) {
+    	if (command.endsWith("view-change-scale")) {
+    		ApplicationManager manager = ApplicationLocator.getManager();
+    		IWindow window = manager.getActiveWindow();
+    		if (!(window instanceof LayoutPanel)) {
+    			return;
+    		}
+    		LayoutPanel layout = (LayoutPanel) window;
+    		try {
+    			if (args.length>0) {
+    				Long scale = (Long) ToolsLocator.getDataTypesManager().coerce(DataTypes.LONG, args[0]);
+    				if (layout!=null &&
+    						layout.getLayoutControl()!=null &&
+    						layout.getLayoutControl().getLayoutFunctions()!=null) {
+    					layout.getLayoutControl().getLayoutFunctions().setScale(scale);
+    				}
+    			}
+    		} catch (Throwable ex) {
+    			logger.info("Can't change scale of view.", ex);
+    			ApplicationLocator.getManager().message("Can't change scale of view.", JOptionPane.ERROR_MESSAGE);
+    		}
+    	}
+    	else {
+    		execute(command);	
+    	}
+    }
+    
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        LayoutPanel layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        if (s.compareTo("layout-view-navigation-zoom-in-topoint") == 0) {
+        	layout.getLayoutControl().setTool("layoutviewzoomin");
+        } else if (s.compareTo("layout-view-navigation-zoom-out-topoint") == 0) {
+        	layout.getLayoutControl().setTool("layoutviewzoomout");
+        } else if (s.compareTo("layout-view-navigation-zoom-all") == 0) {
+        	try {
+        		layout.getLayoutControl().viewFull();
+        	} catch (ReadException e) {
+        		NotificationManager.addError("Error de Driver", e);
+        	}
+        }
+        else {
+        	return;
+        }
+        layout.getDocument().setModified(true);
+    }
+    
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+    	IWindow window = PluginServices.getMDIManager().getActiveWindow();
+    	if (window instanceof LayoutPanel) {
+    		LayoutPanel l =
+    				(LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+    		if (!l.getLayoutContext().isEditable()) {
+    			return false;
+    		}
+    		IFFrameUseFMap[] fframes = l.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+    		if (fframes.length==1 && !(fframes[0] instanceof FFrameOverView)) {
+    			IFFrameUseFMap fframeview = (IFFrameUseFMap) fframes[0];
+    			if (fframeview.getScaleType()==IFFrameUseFMap.SCALE_TYPE.NORMAL) {
+    				return true;
+    			}
+    		}
+    	}
+    	return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditableControls.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditableControls.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutEditableControls.java	(revision 590)
@@ -0,0 +1,121 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.awt.event.KeyEvent;
+
+import javax.swing.KeyStroke;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.LayoutKeyEvent;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+
+/**
+ * Extensi�n para controlar las operaciones basicas de edici�n sobre el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutEditableControls extends Extension {
+
+    private static LayoutKeyEvent lke = new LayoutKeyEvent();
+    private static KeyStroke copyLayout = KeyStroke.getKeyStroke(KeyEvent.VK_C,
+        KeyEvent.CTRL_MASK);
+    private static KeyStroke cutLayout = KeyStroke.getKeyStroke(KeyEvent.VK_X,
+        KeyEvent.CTRL_MASK);
+    private static KeyStroke pasteLayout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_V, KeyEvent.CTRL_MASK);
+    private static KeyStroke leftLayout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_LEFT, 0);
+    private static KeyStroke rightLayout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_RIGHT, 0);
+    private static KeyStroke upLayout = KeyStroke.getKeyStroke(KeyEvent.VK_UP,
+        0);
+    private static KeyStroke downLayout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_DOWN, 0);
+    private static KeyStroke undoLayout = KeyStroke.getKeyStroke(KeyEvent.VK_Z,
+        KeyEvent.CTRL_MASK);
+    private static KeyStroke redoLayout = KeyStroke.getKeyStroke(KeyEvent.VK_Y,
+        KeyEvent.CTRL_MASK);
+    private static KeyStroke del1Layout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_DELETE, 0);
+    private static KeyStroke del2Layout = KeyStroke.getKeyStroke(
+        KeyEvent.VK_BACK_SPACE, 0);
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        LayoutPanel layout =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+        if (s.equals("layout-properties")) {
+            if (layout.showFProperties()) {
+                layout.getDocument().setModified(true);
+            }
+        }
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+        registerKeys();
+    }
+
+    private static void registerKeys() {
+        PluginServices.registerKeyStroke(copyLayout, lke);
+        PluginServices.registerKeyStroke(cutLayout, lke);
+        PluginServices.registerKeyStroke(pasteLayout, lke);
+        PluginServices.registerKeyStroke(leftLayout, lke);
+        PluginServices.registerKeyStroke(rightLayout, lke);
+        PluginServices.registerKeyStroke(upLayout, lke);
+        PluginServices.registerKeyStroke(downLayout, lke);
+        PluginServices.registerKeyStroke(undoLayout, lke);
+        PluginServices.registerKeyStroke(redoLayout, lke);
+        PluginServices.registerKeyStroke(del1Layout, lke);
+        PluginServices.registerKeyStroke(del2Layout, lke);
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        return true;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/Print.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/Print.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/Print.java	(revision 590)
@@ -0,0 +1,275 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+
+import javax.print.Doc;
+import javax.print.DocFlavor;
+import javax.print.DocPrintJob;
+import javax.print.PrintException;
+import javax.print.PrintService;
+import javax.print.PrintServiceLookup;
+import javax.print.ServiceUI;
+import javax.print.SimpleDoc;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.event.PrintJobAdapter;
+import javax.print.event.PrintJobEvent;
+import javax.print.event.PrintJobListener;
+import javax.swing.JOptionPane;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.project.documents.layout.Attributes;
+import org.gvsig.app.project.documents.layout.FLayoutUtilities;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.i18n.Messages;
+
+/**
+ * Extensi�n desde la que se imprime.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class Print extends Extension implements Printable {
+
+    private static Logger logger = LoggerFactory.getLogger(Print.class);
+    
+    public static PrinterJob printerJob = PrinterJob.getPrinterJob();
+
+    // private Paper paper;
+    Rectangle2D.Double aux = null;   
+    private PrintService[] m_cachePrintServices = null;
+    private PrintService m_cachePrintService = null;
+    
+    private static LayoutPanel theLayoutPanel = null;
+
+    public void execute(String s) {
+        if (s.compareTo("application-print-layout") == 0) {
+            doPrint((LayoutPanel) PluginServices.getMDIManager().getActiveWindow());
+        }
+    }
+
+    public void doPrint(final LayoutPanel layoutPanel) {
+        
+        theLayoutPanel = layoutPanel;
+        
+        try {
+            PluginServices.backgroundExecution(new Runnable() {
+
+                public void run() {
+                    if (layoutPanel.getLayoutContext().getAttributes().getType() == Attributes.CUSTOM) {
+                        layoutPanel.showPrintDialog(printerJob);
+                    } else {
+                        layoutPanel.showPrintDialog(null);
+                    }
+                }
+            });
+
+        } catch (Exception e) {
+            
+            logger.info("Error while showing print dialog.", e);
+            ApplicationLocator.getManager().messageDialog(
+                Messages.getText("_Error_while_showing_print_dialog"),
+                Messages.getText("Imprimir"),
+                JOptionPane.ERROR_MESSAGE);
+        }
+    }
+    
+    public void setLayout(LayoutPanel layoutp){
+        theLayoutPanel = layoutp;
+    }
+    
+    
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        return (f instanceof LayoutPanel);
+    }
+
+    public boolean isEnabled() {
+        LayoutPanel f =
+            (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        return true;
+    }
+
+   
+    public void initialize() {
+        registerIcons();
+    }
+
+    private void registerIcons() {
+        IconThemeHelper.registerIcon("action", "application-print", this);
+    }
+
+    /**
+     * Abre un di�logo para imprimir.
+     * 
+     * @param layout
+     *            Layout a imprimir.
+     */
+    public void openDialogToPrint(LayoutPanel layoutPanel) {
+      
+        theLayoutPanel = layoutPanel;
+        
+        try {
+            if (layoutPanel.getLayoutContext().getAttributes().getType() == Attributes.CUSTOM) {
+                layoutPanel.showPrintDialog(printerJob);
+            } else {
+                layoutPanel.showPrintDialog(null);
+            }
+        } catch (Exception e) {
+            System.out.println("Excepci�n al abrir el di�logo de impresi�n: "
+                + e);
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Imprime el Layout que se pasa como par�metro.
+     * 
+     * @param layout
+     *            Layout a imprimir.
+     */
+    public void printLayout(LayoutPanel layoutPanel) {
+
+        theLayoutPanel = layoutPanel;
+        
+        try {
+            printerJob.setPrintable((Printable) PluginServices
+                .getExtension(org.gvsig.app.extension.Print.class));
+
+            // Actualizar attributes
+            PrintRequestAttributeSet att =
+                layoutPanel.getLayoutContext().getAttributes()
+                    .toPrintRequestAttributeSet();
+            DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
+
+            if (m_cachePrintServices == null) {
+                m_cachePrintServices =
+                    PrintServiceLookup.lookupPrintServices(flavor, null);
+            }
+
+            PrintService defaultService = null;
+
+            if (m_cachePrintService == null) {
+                defaultService = PrintServiceLookup.lookupDefaultPrintService();
+            }
+
+            if (m_cachePrintService == null) {
+                m_cachePrintService =
+                    ServiceUI.printDialog(null, 200, 200, m_cachePrintServices,
+                        defaultService, flavor, att);
+            }
+
+            if (m_cachePrintService != null) {
+                DocPrintJob jobNuevo = m_cachePrintService.createPrintJob();
+                PrintJobListener pjlistener = new PrintJobAdapter() {
+
+                    public void printDataTransferCompleted(PrintJobEvent e) {
+                        System.out.println("Fin de impresi�n");
+                    }
+                };
+
+                jobNuevo.addPrintJobListener(pjlistener);
+
+                Doc doc =
+                    new SimpleDoc(
+                        PluginServices
+                            .getExtension(org.gvsig.app.extension.Print.class),
+                        flavor, null);
+                jobNuevo.print(doc, att);
+            }
+        } catch (PrintException pe) {
+            pe.printStackTrace();
+        }
+    }
+    
+    /**
+     * Se dibuja sobre el graphics el Layout.
+     *
+     * @param g2 graphics sobre el que se dibuja.
+     */
+    public void drawShapes(Graphics2D g2) {
+        theLayoutPanel.drawLayoutPrint(g2);
+    }
+    
+    
+    public int print(Graphics g, PageFormat format, int pi)
+        throws PrinterException {
+        
+        if (pi >= 1) {
+            return Printable.NO_SUCH_PAGE;
+        }
+
+        Graphics2D g2d = (Graphics2D) g;
+
+
+        AffineTransform at = g2d.getTransform();
+        g2d.translate(0, 0);
+        theLayoutPanel.obtainRect(true);
+
+        g2d.scale((double) 72 / (double) (Attributes.DPI),
+            (double) 72 / (double) (Attributes.DPI));
+
+        if (theLayoutPanel.getLayoutContext().getAttributes().isMargin()) {
+            g2d.setClip((int) (theLayoutPanel.getLayoutControl().getRect().getMinX() +
+                FLayoutUtilities.fromSheetDistance(theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[2],
+                    theLayoutPanel.getLayoutControl().getAT())),
+                (int) (theLayoutPanel.getLayoutControl().getRect().getMinY() +
+                FLayoutUtilities.fromSheetDistance(theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[0],
+                    theLayoutPanel.getLayoutControl().getAT())),
+                (int) (theLayoutPanel.getLayoutControl().getRect().getWidth() -
+                FLayoutUtilities.fromSheetDistance(theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[2] +
+                    theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[3], theLayoutPanel.getLayoutControl().getAT())),
+                (int) (theLayoutPanel.getLayoutControl().getRect().getHeight() -
+                FLayoutUtilities.fromSheetDistance(theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[0] +
+                    theLayoutPanel.getLayoutContext().getAttributes().getAreaInsets()[1], theLayoutPanel.getLayoutControl().getAT())));
+        }
+
+        drawShapes(g2d);
+        g2d.setTransform(at);
+
+        return Printable.PAGE_EXISTS;
+    }
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewZoomPrev.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewZoomPrev.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewZoomPrev.java	(revision 590)
@@ -0,0 +1,75 @@
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.gvsig.fmap.mapcontext.ExtentHistory;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.ViewPort;
+
+
+
+public class FFrameViewZoomPrev extends Extension {
+
+    public void postInitialize() {
+    }
+
+    public void initialize() {
+        IconThemeHelper.registerIcon("action", "layout-view-navigation-zoom-back", this);
+    }
+
+    
+    public boolean isEnabled() {
+    	IWindow window = PluginServices.getMDIManager().getActiveWindow();
+    	if (window instanceof LayoutPanel) {
+    		LayoutPanel l =
+    				(LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+    		IFFrameUseFMap[] fframes = l.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+    		if (fframes.length==1 && !(fframes[0] instanceof FFrameOverView)) {
+    			IFFrameUseFMap fframeView = (IFFrameUseFMap) fframes[0];
+    			MapContext mc = fframeView.getMapContext();
+    			if (mc!=null) {
+    				ExtentHistory history = mc.getViewPort().getEnvelopes();
+    				if (history.hasPrevious()&&fframeView.getScaleType()==IFFrameUseFMap.SCALE_TYPE.NORMAL) {
+    					return true;
+    				}
+    			}
+    		}
+    	}
+    	return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null || !(f instanceof LayoutPanel)) {
+            return false;
+        }
+        return true;
+    }
+
+    public void execute(String arg0) {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null || !(f instanceof LayoutPanel)) {
+            return;
+        }
+		LayoutPanel l =
+				(LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+   		IFFrameUseFMap[] fframes = l.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+		if (fframes.length==1 && !(fframes[0] instanceof FFrameOverView)) {
+			IFFrameUseFMap fframeView = (IFFrameUseFMap) fframes[0];
+			ViewPort vp = fframeView.getMapContext().getViewPort();
+	        vp.setPreviousEnvelope();
+	        l.getDocument().setModified(true);
+		}
+    }
+
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewAddLayerExtension.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewAddLayerExtension.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/FFrameViewAddLayerExtension.java	(revision 590)
@@ -0,0 +1,107 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ *
+ * 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.
+ *
+ */
+package org.gvsig.app.extension;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.andami.PluginsManager;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.layout.fframes.FFrameOverView;
+import org.gvsig.app.project.documents.layout.fframes.IFFrameUseFMap;
+import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Extension to control the options that can be done on a view added to layout
+ * 
+ * @author Cesar Martinez Izquierdo
+ */
+public class FFrameViewAddLayerExtension extends Extension {
+
+    private static Logger logger = LoggerFactory.getLogger(FFrameViewAddLayerExtension.class);
+    //.info("Can't change scale of view.", ex);
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+    	
+    }
+    
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        LayoutPanel layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+    	if (s.compareTo("layout-view-add-layer") == 0) {
+        	PluginsManager manager = PluginsLocator.getManager();
+        	AddLayer plugin = (AddLayer) manager.getExtension(AddLayer.class);
+        	IFFrameUseFMap[] fframes = layout.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+        	if (fframes.length>0) {
+        		if (fframes[0].getMapContext()!=null) {
+        			plugin.addLayers(fframes[0].getMapContext());
+        			fframes[0].refresh();
+        			layout.getDocument().setModified(true);
+        		}
+        	}
+        }
+    }
+    
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+    	IWindow window = PluginServices.getMDIManager().getActiveWindow();
+    	if (window instanceof LayoutPanel) {
+    		LayoutPanel l =
+    				(LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
+    		if (!l.getLayoutContext().isEditable()) {
+    			return false;
+    		}
+    		IFFrameUseFMap[] fframes = l.getLayoutContext().getSelectedFFrames(IFFrameUseFMap.class);
+    		if (fframes.length==1 && !(fframes[0] instanceof FFrameOverView) && ((IFFrameUseFMap)fframes[0]).getMapContext()!=null) {
+    			return true;
+    		}
+    	}
+    	return false;
+    }
+
+    /**
+     * @see org.gvsig.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof LayoutPanel) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/tools/persistence/text/JavaTextFactory.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/tools/persistence/text/JavaTextFactory.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/tools/persistence/text/JavaTextFactory.java	(revision 590)
@@ -0,0 +1,60 @@
+package org.gvsig.tools.persistence.text;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+import org.gvsig.tools.dynobject.DynStruct;
+import org.gvsig.tools.persistence.AbstractMultiPersistenceFactory;
+import org.gvsig.tools.persistence.PersistentState;
+import org.gvsig.tools.persistence.exception.PersistenceException;
+
+public class JavaTextFactory extends AbstractMultiPersistenceFactory {
+	private static JavaTextFactory instance = null; 
+	
+	private static final String DYNCLASS_DECIMAL_FORMAT_NAME = "DecimalFormat";
+	private static final String DYNCLASS_DECIMAL_FORMAT_DESCRIPTION = "DecimalFormat";
+	private static final String PATTERN_FIELD = "pattern";
+	private static final String DECIMAL_SEP_FIELD = "decimalSep";
+	private static final String GROUPING_SEP_FIELD = "groupingSep";
+	
+	protected void makeDefinitions() {
+		DynStruct decimalFromatDef = this.addDefinition(DecimalFormat.class, DYNCLASS_DECIMAL_FORMAT_NAME, DYNCLASS_DECIMAL_FORMAT_DESCRIPTION);
+		decimalFromatDef.addDynFieldString(PATTERN_FIELD).setMandatory(true);
+		decimalFromatDef.addDynFieldString(DECIMAL_SEP_FIELD).setMandatory(true);
+		decimalFromatDef.addDynFieldString(GROUPING_SEP_FIELD).setMandatory(true);
+	}
+	
+	public Object createFromState(PersistentState state)
+			throws PersistenceException {
+		if (this.getManagedClass(state).isAssignableFrom(DecimalFormat.class)) {
+			String pattern = state.getString(PATTERN_FIELD);
+			String decimalSep = state.getString(DECIMAL_SEP_FIELD);
+			String groupingSep = state.getString(GROUPING_SEP_FIELD);
+			
+			DecimalFormatSymbols sym = DecimalFormatSymbols.getInstance();
+			if (decimalSep!=null && decimalSep.length()>0) {
+				sym.setDecimalSeparator(decimalSep.charAt(0));
+			}
+			if (groupingSep!=null && groupingSep.length()>0) {
+				sym.setGroupingSeparator(groupingSep.charAt(0));
+			}
+			return new DecimalFormat(pattern, sym);
+		}
+		throw new RuntimeException(); //FIXME 
+	}
+
+	public void saveToState(PersistentState state, Object obj)
+			throws PersistenceException {
+		if (obj instanceof DecimalFormat) {
+			DecimalFormat format = (DecimalFormat) obj;
+			state.set(PATTERN_FIELD, format.toPattern());
+			state.set(DECIMAL_SEP_FIELD, String.valueOf(format.getDecimalFormatSymbols().getDecimalSeparator()));
+			state.set(GROUPING_SEP_FIELD, String.valueOf(format.getDecimalFormatSymbols().getGroupingSeparator()));
+			return;
+		}
+		throw new RuntimeException(); //FIXME 
+	}
+
+
+	
+}
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/math/intervals/IntervalUtils.java
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/math/intervals/IntervalUtils.java	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/math/intervals/IntervalUtils.java	(revision 590)
@@ -0,0 +1,42 @@
+package org.gvsig.math.intervals;
+
+public class IntervalUtils {
+
+	/**
+	 * Calculates an nice round interval division. For instance, for
+	 * intervalLenght = 1100000 and numberOfDivisions=5,
+	 * the result would be 250000.
+	 * 
+	 * @param intervalLength The full interval to be divided
+	 * @param numberOfDivisions The exact number of divisions to perform
+	 * @return A nice round interval division. The calculated result
+	 * ensures that the whole interval length is covered by the proposed
+	 * division, so it always fulfills the following formula:
+	 *  <code>result*numberOfDivisions>=intervalLength</code>
+	 */
+	public static double roundIntervalDivision(double intervalLength, int numberOfDivisions) {
+		if (intervalLength<=0.0d || numberOfDivisions<=0) {
+			return 0.0d;
+		}
+
+		double division = intervalLength/numberOfDivisions;
+		if (division==0.0d) {
+			return 0.0d;
+		}
+		double digitShift = Math.floor((Math.log10(division)));
+		double scale = Math.pow(10, -digitShift);
+		double firstSignificatDigit = Math.floor(scale*division);
+		double result = firstSignificatDigit*Math.pow(10, digitShift);
+		if (result*numberOfDivisions>=intervalLength) {
+			return result;
+		}
+		else {
+			result = (0.5+firstSignificatDigit)*Math.pow(10, digitShift);
+			if (result*numberOfDivisions>=intervalLength) {
+				return result;
+			}
+		}
+		result = (1+firstSignificatDigit)*Math.pow(10, digitShift);
+		return result;
+	}
+}

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/java
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/config
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/config.xml
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/config.xml	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/config.xml	(revision 590)
@@ -0,0 +1,743 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<plugin-config>
+    <alternativeNames name="org.gvsig.app.document.layout.app.mainplugin"/>
+    <libraries library-dir="lib"/>
+    <depends plugin-name="org.gvsig.app.mainplugin" />
+	<resourceBundle name="text"/>
+	<label-set class-name="org.gvsig.app.project.documents.layout.gui.LayoutPanel">
+		<label id="units" size="80"/>
+		<label id="2" size="180"/>
+		<label id="3" size="180"/>
+		<label id="4" size="50"/>
+		<label id="5" size="50"/>
+	</label-set>
+	<extensions>
+		<extension class-name="org.gvsig.app.extension.LayoutMainExtension"
+			description="Extensi�n encargada de gestionar los layouts."
+			active="true"
+			priority="10">
+			
+			<!-- Makes no sense here (?)
+			<menu text="Mapa"
+				position="500"
+				is_separator="true"/>
+			-->
+			
+			<action 
+        		name="application-layout-template-open"
+            	label="abrir_plantilla" 
+            	tooltip="abrir_plantilla" 
+        		action-command="application-layout-template-open" 
+        		icon="application-layout-template-open"
+        		position="700600000"
+        		/>
+
+			<menu text="Mapa/abrir_plantilla"
+				name="application-layout-template-open" />
+			
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.ExportLayoutExtension"
+			description="Extension for exporting the layout to PDF and PostScript."
+			active="true">
+
+			<!-- Makes no sense here?
+			<menu text="Mapa/exportar"
+				position="50010"
+				is_separator="true"/>
+			-->
+			
+			<action 
+        		name="application-export-to-pdf"
+            	label="exportar_pdf" 
+            	tooltip="exportar_pdf" 
+        		action-command="application-export-to-pdf" 
+        		icon="application-export-to-pdf"
+        		position="100900200"
+        		/>
+
+			<action 
+        		name="application-export-to-postscript"
+            	label="exportar_ps" 
+            	tooltip="exportar_ps" 
+        		action-command="application-export-to-postscript" 
+        		icon="application-export-to-postscript"
+        		position="100900300"
+        		/>
+				 
+			<tool-bar name="gvSIG" position="1">
+				<action-tool name="application-export-to-pdf"/>
+				<action-tool name="application-export-to-postscript"/>
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutExtension"
+			description="Extensi�n encargada de gestionar los eventos realizados sobre el Layout."
+			active="true">
+
+			<action 
+        		name="application-layout-template-save"
+            	label="guardar_como_plantilla" 
+            	tooltip="guardar_como_plantilla" 
+        		action-command="application-layout-template-save" 
+        		icon="application-layout-template-save"
+        		position="700650000"
+        		/>
+        		
+			<menu text="Mapa/guardar_como_plantilla"
+				name="application-layout-template-save"/>
+				 
+			<menu text="Mapa/navegacion"
+				position="700100000" 
+				is_separator="true"/>
+				
+			<!-- ###################### -->
+			
+			<action 
+        		name="layout-navigation-zoom-in-topoint"
+            	label="Zoom_Mas" 
+            	tooltip="Zoom_Mas" 
+        		action-command="layout-navigation-zoom-in-topoint" 
+        		icon="layout-navigation-zoom-in-topoint"
+        		position="700100400"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-out-topoint"
+            	label="Zoom_Menos" 
+            	tooltip="Zoom_Menos" 
+        		action-command="layout-navigation-zoom-out-topoint" 
+        		icon="layout-navigation-zoom-out-topoint"
+        		position="700100500"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-in-center"
+            	label="Zoom_Acercar" 
+            	tooltip="Zoom_Acercar" 
+        		action-command="layout-navigation-zoom-in-center" 
+        		icon="layout-navigation-zoom-in-center"
+        		position="700100200"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-out-center"
+            	label="Zoom_Alejar" 
+            	tooltip="Zoom_Alejar" 
+        		action-command="layout-navigation-zoom-out-center" 
+        		icon="layout-navigation-zoom-out-center"
+        		position="700100300"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-all"
+            	label="Zoom_Completo" 
+            	tooltip="Zoom_Completo" 
+        		action-command="layout-navigation-zoom-all" 
+        		icon="layout-navigation-zoom-all"
+        		position="700100700"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-real"
+            	label="Zoom_Real" 
+            	tooltip="Zoom_Real" 
+        		action-command="layout-navigation-zoom-real" 
+        		icon="layout-navigation-zoom-real"
+        		position="700100800"
+        		/>
+			<action 
+        		name="layout-navigation-zoom-selected"
+            	label="Zoom_Select" 
+            	tooltip="Zoom_Select" 
+        		action-command="layout-navigation-zoom-selected" 
+        		icon="layout-navigation-zoom-selected"
+        		position="700100900"
+        		/>
+
+			<action 
+				name="layout-navigation-pan"
+				label="Desplazamiento" 
+				tooltip="Desplazamiento" 
+				action-command="layout-navigation-pan" 
+				icon="layout-navigation-pan"
+				position="700100100"
+                />
+
+			<menu text="Mapa/navegacion/Zoom_Mas" name="layout-navigation-zoom-in-topoint"/>
+			<menu text="Mapa/navegacion/Zoom_Menos" name="layout-navigation-zoom-out-topoint"/>
+			<menu text="Mapa/navegacion/Zoom_Acercar" name="layout-navigation-zoom-in-center"/>
+			<menu text="Mapa/navegacion/Zoom_Alejar" name="layout-navigation-zoom-out-center"/>
+			<menu text="Mapa/navegacion/Zoom_Completo" name="layout-navigation-zoom-all"/>
+			<menu text="Mapa/navegacion/Zoom_Real" name="layout-navigation-zoom-real"/>
+			<menu text="Mapa/navegacion/Zoom_Select" name="layout-navigation-zoom-selected"/>
+			<menu text="Mapa/navegacion/Desplazamiento" name="layout-navigation-pan"/>
+			
+			
+			<tool-bar name="Layout_Tools_Zooms" position="20">
+				<selectable-tool name="layout-navigation-zoom-in-topoint" />
+				<selectable-tool name="layout-navigation-zoom-out-topoint" />
+				<action-tool name="layout-navigation-zoom-in-center" />
+				<action-tool name="layout-navigation-zoom-out-center" />
+				<action-tool name="layout-navigation-zoom-all" />
+				<action-tool name="layout-navigation-zoom-real" />
+				<action-tool name="layout-navigation-zoom-selected" />
+				<selectable-tool name="layout-navigation-pan" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutEditableControls"
+			description="Extensi�n encargada de gestionar los eventos de edici�n realizados sobre el Layout."
+			active="true">
+			
+			<action 
+        		name="layout-properties"
+            	label="propiedades" 
+            	tooltip="propiedades_mapa" 
+        		action-command="layout-properties" 
+        		position="709000000"
+        		icon="layout-properties"
+        		/>
+        		
+			<menu text="Mapa/propiedades" name="layout-properties"/>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutEditVertexExtension"
+			description="Extensi�n encargada de gestionar los eventos de edici�n realizados sobre el Layout."
+			active="true">
+				
+			<action 
+        		name="layout-graphic-edit-vertex"
+            	label="editar_vertices" 
+            	tooltip="editar_vertices" 
+        		action-command="layout-graphic-edit-vertex" 
+        		icon="layout-graphic-edit-vertex"
+        		position="700301000"
+        		/>
+
+			<menu text="Mapa/edicion/editar_vertices" name="layout-graphic-edit-vertex"/>
+			<tool-bar name="Tools_Select" position="6">
+				<selectable-tool name="layout-graphic-edit-vertex"/>
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutInsertToolsExtension"
+			description="Extensi�n encargada de gestionar los eventos de edici�n realizados sobre el Layout."
+			active="true">
+			
+			<action 
+        		name="selection-select-by-rectangle-layout"
+            	label="seleccionar_por_rectangulo" 
+            	tooltip="seleccionar_por_rectangulo" 
+        		action-command="selection-select-by-rectangle-layout" 
+        		icon="selection-by-rectangle"
+        		position="301200000"
+        		/>
+
+			<action 
+        		name="edit-delete-layout"
+            	label="_Delete_selected_objects" 
+            	tooltip="_Delete_selected_objects" 
+        		action-command="edit-delete-layout" 
+        		icon="edit-delete"
+        		position="200700000"
+        		/>
+			
+			<!-- Position?
+			<menu text="Mapa/seleccion"
+				position="50060" 
+				is_separator="true"/>
+			-->
+				
+			<menu text="Selection/seleccionar_por_rectangulo"
+				name="selection-select-by-rectangle-layout"/>
+			
+			<menu text="Mapa/Insertar"
+				position="700400000" 
+				is_separator="true"/>
+				
+			<action 
+        		name="layout-insert-text"
+            	label="texto" 
+            	tooltip="insertar_texto" 
+        		action-command="layout-insert-text" 
+        		icon="layout-insert-text"
+        		position="700401300"
+        		/>
+			<action 
+        		name="layout-insert-point"
+            	label="punto" 
+            	tooltip="insertar_punto" 
+        		action-command="layout-insert-point" 
+        		icon="layout-insert-point"
+        		position="700400800"
+        		/>
+			<action 
+        		name="layout-insert-rectangle"
+            	label="rectangulo" 
+            	tooltip="insertar_rectangulo" 
+        		action-command="layout-insert-rectangle" 
+        		icon="layout-insert-rectangle"
+        		position="700401100"
+        		/>
+			<action 
+        		name="layout-insert-circle"
+            	label="circulo" 
+            	tooltip="insertar_circulo" 
+        		action-command="layout-insert-circle" 
+        		icon="layout-insert-circle"
+        		position="700400200"
+        		/>
+			<action 
+        		name="layout-insert-line"
+            	label="linea" 
+            	tooltip="insertar_linea" 
+        		action-command="layout-insert-line" 
+        		icon="layout-insert-line"
+        		position="700400500"
+        		/>
+			<action 
+        		name="layout-insert-polyline"
+            	label="polilinea" 
+            	tooltip="insertar_polilinea" 
+        		action-command="layout-insert-polyline" 
+        		icon="layout-insert-polyline"
+        		position="700401000"
+        		/>
+			<action 
+        		name="layout-insert-polygon"
+            	label="poligono" 
+            	tooltip="insertar_poligono" 
+        		action-command="layout-insert-polygon" 
+        		icon="layout-insert-polygon"
+        		position="700400900"
+        		/>
+			<action 
+        		name="layout-insert-image"
+            	label="imagen" 
+            	tooltip="insertar_imagen" 
+        		action-command="layout-insert-image" 
+        		icon="layout-insert-image"
+        		position="700400300"
+        		/>
+			<action 
+        		name="layout-insert-view"
+            	label="Vista" 
+            	tooltip="insertar_vista" 
+        		action-command="layout-insert-view" 
+        		icon="layout-insert-view"
+        		position="700401400"
+        		/>
+			<action 
+        		name="layout-insert-locator"
+            	label="Localizador" 
+            	tooltip="insertar_localizador" 
+        		action-command="layout-insert-locator" 
+        		icon="layout-insert-locator"
+        		position="700400600"
+        		/>
+			<action 
+        		name="layout-insert-legend"
+            	label="leyenda" 
+            	tooltip="insertar_leyenda" 
+        		action-command="layout-insert-legend" 
+        		icon="layout-insert-legend"
+        		position="700400400"
+        		/>
+			<action 
+        		name="layout-insert-scalebar"
+            	label="escala" 
+            	tooltip="insertar_escala" 
+        		action-command="layout-insert-scalebar" 
+        		icon="layout-insert-scalebar"
+        		position="700401200"
+        		/>
+			<action 
+        		name="layout-insert-north"
+            	label="north" 
+            	tooltip="insertar_norte" 
+        		action-command="layout-insert-north" 
+        		icon="layout-insert-north"
+        		position="700400700"
+        		/>
+			<action 
+        		name="layout-insert-box"
+            	label="cajetin" 
+            	tooltip="insertar_cajetin" 
+        		action-command="layout-insert-box" 
+        		icon="layout-insert-box"
+        		position="700400100"
+        		/>
+        		
+			<menu text="Mapa/Insertar/texto" name="layout-insert-text" />
+			<menu text="Mapa/Insertar/punto" name="layout-insert-point" />
+			<menu text="Mapa/Insertar/rectangulo" name="layout-insert-rectangle" />
+			<menu text="Mapa/Insertar/circulo" name="layout-insert-circle" />
+			<menu text="Mapa/Insertar/linea" name="layout-insert-line" />
+			<menu text="Mapa/Insertar/polilinea" name="layout-insert-polyline" />
+			<menu text="Mapa/Insertar/poligono" name="layout-insert-polygon" />
+			<menu text="Mapa/Insertar/imagen" name="layout-insert-image" />
+			<menu text="Mapa/Insertar/Vista" name="layout-insert-view" />
+			<menu text="Mapa/Insertar/Localizador" name="layout-insert-locator" />
+			<menu text="Mapa/Insertar/leyenda" name="layout-insert-legend" />
+			<menu text="Mapa/Insertar/escala" name="layout-insert-scalebar" />
+			<menu text="Mapa/Insertar/north" name="layout-insert-north" />
+			<menu text="Mapa/Insertar/cajetin" name="layout-insert-box" />
+
+			<tool-bar name="Tools_Select" position="6">
+				<selectable-tool name="selection-select-by-rectangle-layout" />
+				<action-tool name="edit-delete-layout" />
+			</tool-bar>
+
+			<tool-bar name="Layout_Tools_Insert_Simple" position="7">
+				<selectable-tool name="layout-insert-text" />
+				<selectable-tool name="layout-insert-image" />
+				<selectable-tool name="layout-insert-point" />
+				<selectable-tool name="layout-insert-rectangle" />
+				<selectable-tool name="layout-insert-circle" />
+				<selectable-tool name="layout-insert-line" />
+				<selectable-tool name="layout-insert-polyline" />
+				<selectable-tool name="layout-insert-polygon" />
+			</tool-bar>
+
+			<tool-bar name="Layout_Tools_Insert_Cartografy" position="8">
+				<selectable-tool name="layout-insert-view" />
+				<selectable-tool name="layout-insert-locator" />
+				<selectable-tool name="layout-insert-legend" />
+				<selectable-tool name="layout-insert-scalebar" />
+				<selectable-tool name="layout-insert-north" />
+				<selectable-tool name="layout-insert-box" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.FFrameViewExtension"
+			description="Extensi�n encargada de gestionar los eventos realizados sobre las vistas a�adidas al Layout."
+			active="true">
+			<combo-scale name="layout-view-change-scale" label="1:"
+				elements="1000;2000;5000;10000;25000;50000;100000;200000;500000;1000000;2000000;5000000"
+				value="10000" action-command="layout-view-change-scale" />
+			<action 
+				name="layout-view-change-scale"
+				label="_Change_scale"
+				action-command="view-change-scale" />
+			<menu text="Mapa/navegacion_vista"
+				position="700200000" 
+				is_separator="true"/>
+
+			<action 
+        		name="layout-view-navigation-zoom-in-topoint"
+            	label="Zoom_Mas_Vista" 
+            	tooltip="Zoom_Mas_Vista" 
+        		action-command="layout-view-navigation-zoom-in-topoint" 
+        		icon="layout-view-navigation-zoom-in-topoint"
+        		position="700200400"
+        		/>
+			<action 
+        		name="layout-view-navigation-zoom-out-topoint"
+            	label="Zoom_Menos_Vista" 
+            	tooltip="Zoom_Menos_Vista" 
+        		action-command="layout-view-navigation-zoom-out-topoint" 
+        		icon="layout-view-navigation-zoom-out-topoint"
+        		position="700200500"
+        		/>
+			<action 
+        		name="layout-view-navigation-zoom-all"
+            	label="Zoom_Completo_Vista" 
+            	tooltip="Zoom_Completo_Vista" 
+        		action-command="layout-view-navigation-zoom-all" 
+        		icon="layout-view-navigation-zoom-all"
+        		position="700200600"
+        		/>
+				
+			<menu text="Mapa/navegacion_vista/Zoom_Mas_Vista" name="layout-view-navigation-zoom-in-topoint"/>
+			<menu text="Mapa/navegacion_vista/Zoom_Menos_Vista" name="layout-view-navigation-zoom-out-topoint"/>
+			<menu text="Mapa/navegacion_vista/Zoom_Completo_Vista" name="layout-view-navigation-zoom-all"/>
+			
+			<tool-bar name="Layout_Tools_View" position="9">
+				<action-tool name="layout-view-navigation-zoom-all"/>
+				<selectable-tool name="layout-view-navigation-zoom-in-topoint"/>
+				<selectable-tool name="layout-view-navigation-zoom-out-topoint"/>
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.TagExtension"
+			description="Extensi�n para a�adir un tag a los FFrames."
+			active="false">
+
+			<action 
+        		name="layout-graphic-show-tags"
+            	label="ver_tags" 
+            	tooltip="ver_tags" 
+        		action-command="layout-graphic-show-tags" 
+        		icon="layout-graphic-show-tags"
+        		position="700301200"
+        		/>
+			<action 
+        		name="layout-insert-tag"
+            	label="anadir_tag" 
+            	tooltip="anadir_tag" 
+        		action-command="layout-insert-tag" 
+        		icon="layout-insert-tag"
+        		position="700401500"
+        		/>
+
+			<menu text="Mapa/anadir_tag" name="layout-insert-tag" />
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="layout-insert-tag" />
+				<action-tool name="layout-graphic-show-tags" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutGraphicControls"
+			description="Extensi�n encargada de gestionar los eventos realizados sobre los gr�ficos que contiene el Layout."
+			active="true">
+			
+			<action 
+        		name="layout-graphic-add-border"
+            	label="linea_grafica" 
+            	tooltip="linea_grafica" 
+        		action-command="layout-graphic-add-border" 
+        		icon="layout-graphic-add-border"
+        		position="700300100"
+        		/>
+			<action 
+        		name="layout-graphic-align"
+            	label="alinear" 
+            	tooltip="alinear_graficos" 
+        		action-command="layout-graphic-align" 
+        		icon="layout-graphic-align"
+        		position="700300200"
+        		/>
+			<action 
+        		name="layout-graphic-bring-to-front"
+            	label="colocar_delante" 
+            	tooltip="colocar_delante" 
+        		action-command="layout-graphic-bring-to-front" 
+        		icon="layout-graphic-bring-to-front"
+        		position="700300300"
+        		/>
+			<action 
+        		name="layout-graphic-send-back"
+            	label="colocar_detras" 
+            	tooltip="colocar_detras" 
+        		action-command="layout-graphic-send-back" 
+        		icon="layout-graphic-send-back"
+        		position="700300400"
+        		/>
+			<action 
+        		name="layout-graphic-group"
+            	label="agrupar" 
+            	tooltip="agrupar_graficos" 
+        		action-command="layout-graphic-group" 
+        		icon="layout-graphic-group"
+        		position="700300500"
+        		/>
+			<action 
+        		name="layout-graphic-ungroup"
+            	label="desagrupar" 
+            	tooltip="desagrupar_graficos" 
+        		action-command="layout-graphic-ungroup" 
+        		icon="layout-graphic-ungroup"
+        		position="700300600"
+        		/>
+			<action 
+        		name="layout-graphic-position"
+            	label="tamano_posicion" 
+            	tooltip="tamano_posicion" 
+        		action-command="layout-graphic-position" 
+        		icon="layout-graphic-position"
+        		position="700301100"
+        		/>
+			<action 
+        		name="layout-graphic-properties"
+            	label="propiedades" 
+            	tooltip="propiedades" 
+        		action-command="layout-graphic-properties" 
+        		icon="layout-graphic-properties"
+        		position="700302000"
+        		/>
+        		
+			<menu text="Mapa/Graficos"
+				position="700300000" 
+				is_separator="true"/>
+				
+			<menu text="Mapa/Graficos/propiedades" name="layout-graphic-properties" />
+			<menu text="Mapa/Graficos/alinear" name="layout-graphic-align" />
+			<menu text="Mapa/Graficos/agrupar" name="layout-graphic-group" />
+			<menu text="Mapa/Graficos/desagrupar" name="layout-graphic-ungroup" />
+			<menu text="Mapa/Graficos/colocar_delante" name="layout-graphic-bring-to-front" />
+			<menu text="Mapa/Graficos/colocar_detras" name="layout-graphic-send-back" />
+			<menu text="Mapa/Graficos/tamano_posicion" name="layout-graphic-position" />
+			<menu text="Mapa/Graficos/linea_grafica" name="layout-graphic-add-border" />
+			
+			<tool-bar name="Layout_Tools_Graphics" position="11">
+				<action-tool name="layout-graphic-bring-to-front" />
+				<action-tool name="layout-graphic-send-back" />
+				<action-tool name="layout-graphic-position" />
+				<action-tool name="layout-graphic-group" />
+				<action-tool name="layout-graphic-ungroup" />
+				<action-tool name="layout-graphic-add-border" />
+			</tool-bar>
+			
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.FFrameLegendExtension"
+			description="Extensi�n encargada de controlar un FFrameLegend."
+			active="true">
+			
+			<action 
+        		name="layout-graphic-simplify-legend"
+            	label="simplificar_leyenda" 
+            	tooltip="simplificar_leyenda" 
+        		action-command="layout-graphic-simplify-legend" 
+        		icon="layout-graphic-simplify-legend"
+        		position="700301200"
+        		/>
+			<menu text="Mapa/Graficos/simplificar_leyenda" name="layout-graphic-simplify-legend" />
+			
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutRedoExtension"
+			description="Extensi�n para rehacer cambios sobre el Layout."
+			active="true">
+			
+			<action 
+	        	name= "edit-redo-layout"
+    	        label="rehacer" 
+        	    tooltip="rehacer" 
+        		action-command="edit-redo-layout" 
+        		icon="edit-redo"
+        		position="200200000"
+        		/>
+        
+			<menu text="Edit/_Redo" name="edit-redo-layout"/>
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="edit-redo-layout"/>
+			</tool-bar>
+		</extension>
+
+
+		<extension class-name="org.gvsig.app.extension.LayoutUndoExtension"
+			description="Extensi�n para deshacer cambios sobre el Layout."
+			active="true">
+			
+			<action 
+        		name= "edit-undo-layout"
+            	label="deshacer" 
+            	tooltip="deshacer" 
+        		action-command="edit-undo-layout" 
+        		icon="edit-undo"
+        		position="200100000"
+        		/>
+			
+			<menu text="Edit/_Undo" name="edit-undo-layout" />
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="edit-undo-layout" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.LayoutCommandStackExtension"
+			description="Extensi�n encargada de abrir el di�logo para gestionar los comandos apilados."
+			active="true">
+			
+			<action 
+        		name="edit-undo-redo-actions-layout"
+            	label="_Undo_redo_history" 
+            	tooltip="_Undo_redo_history" 
+        		action-command="edit-undo-redo-actions-layout" 
+        		icon="edit-undo-redo-actions"
+        		position="200300000"
+        		/>
+
+			<menu text="Edit/_Undo_redo_history" name="edit-undo-redo-actions-layout" />
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="edit-undo-redo-actions-layout" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.Print"
+			description="Extensi�n encargada de la impresi�n."
+			active="true">
+			
+			<action 
+        		name="application-print-layout"
+            	label="Imprimir" 
+            	tooltip="Imprimir" 
+        		action-command="application-print-layout" 
+        		icon="application-print"
+        		position="700800000"
+        		/>
+			
+			<menu text="Mapa/Imprimir" name="application-print-layout" />
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="application-print-layout" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.PrintProperties"
+			escription="Extensi�n encargada de las propiedades de impresi�n."
+			active="true">
+			
+			<action 
+        		name="application-page-setup-layout"
+            	label="preparar_pagina" 
+            	tooltip="preparar_pagina" 
+        		action-command="application-page-setup-layout" 
+        		icon="application-page-setup"
+        		position="700700000"
+        		/>
+			
+			<menu text="Mapa/preparar_pagina" name="application-page-setup-layout" />
+			<tool-bar name="Mapa" position="10">
+				<action-tool name="application-page-setup-layout" />
+			</tool-bar>
+		</extension>
+		
+		<extension class-name="org.gvsig.app.extension.FFrameViewPanExtension"
+			description="Extension encargada de gestionar los desplazamientos en la vista del layout."
+			active="true">
+			<action 
+        		name="layout-view-navigation-pan"
+            	label="Encuadre_Vista" 
+            	tooltip="Encuadre_Vista" 
+        		action-command="layout-view-navigation-pan" 
+        		icon="layout-view-navigation-pan"
+        		position="700200100"
+        		/>
+
+			<menu text="Mapa/navegacion_vista/Encuadre_Vista" name="layout-view-navigation-pan"/>
+			<tool-bar name="Layout_Tools_View" position="9">
+				<selectable-tool name="layout-view-navigation-pan" />
+			</tool-bar>
+		</extension>
+		
+		<extension class-name="org.gvsig.app.extension.FFrameViewAddLayerExtension"
+			description="Extension encargada de gestionar los desplazamientos en la vista del layout."
+			active="true">
+		      <action 
+        		name="layout-view-add-layer"
+		        label="Add_layer"
+		        tooltip="Add_layer"
+		        action-command="layout-view-add-layer" 
+		        icon="view-layer-add"
+		        position="700200700"
+		        />
+			<menu text="Mapa/Add_layer" name="layout-view-add-layer"/>
+			<tool-bar name="Layout_Tools_View" position="9">
+				<action-tool name="layout-view-add-layer" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.app.extension.FFrameViewZoomPrev"
+			description="Extension encargada de gestionar los zooms previos al actual."
+			active="true">
+			<action name="layout-view-navigation-zoom-back"
+					label="Zoom_back"
+					tooltip="Zoom_back"
+					action-command="layout-view-navigation-zoom-back"
+					icon="view-navigation-zoom-back"
+					position="700200550" accelerator="" />
+
+			<menu name="layout-view-navigation-zoom-back" text="Mapa/navegacion_vista/Zoom_Mas_Vista/Zoom_back" />
+			<tool-bar name="Layout_Tools_View" position="9">
+				<action-tool name="layout-view-navigation-zoom-back" />
+			</tool-bar>
+    	</extension>
+		
+	</extensions>
+</plugin-config>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_24.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_24.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_24.svg	(revision 590)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.0646113,0,0,1.0445461,-107.99269,-239.52049)"
+       id="g2290">
+      <path
+         d="M 270.22876,451.0387 L 302.39096,354.68987 L 334.55315,451.0387 L 431.03974,483.15497 L 334.55315,515.27125 L 302.39096,611.62007 L 270.22876,515.27125 L 173.74218,483.15497 L 270.22876,451.0387 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.42784548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 332.48889,447.94051 L 305.35195,480.19858 L 305.35195,364.06953 L 332.48889,447.94051 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.91738272px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1892" />
+      <path
+         d="M 334.86437,510.89705 L 301.42178,484.69684 L 421.81508,484.69684 L 334.86437,510.89705 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.92014647px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1894" />
+      <path
+         d="M 268.07295,453.95177 L 300.39726,480.24184 L 184.0298,480.24184 L 268.07295,453.95177 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.83029413px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1896" />
+      <path
+         d="M 270.50127,514.97334 L 302.87963,481.39902 L 302.87963,602.26659 L 270.50127,514.97334 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:6.59418631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1898" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(123.9057,182.3509)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-43.12799,19.71645)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <path
+         d="M 450.35715 547.89789 A 8.3928576 8.3928576 0 1 1  433.57144,547.89789 A 8.3928576 8.3928576 0 1 1  450.35715 547.89789 z"
+         transform="translate(-137.8571,-64.16256)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:20.46800041;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2532" />
+      <path
+         d="M 406.07143 568.25507 A 15.714286 14.821428 0 1 1  374.64286,568.25507 A 15.714286 14.821428 0 1 1  406.07143 568.25507 z"
+         transform="matrix(1.536168,0,0,1.61666,-295.3682,-435.0628)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.46799994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2536" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_42.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_42.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_42.svg	(revision 590)
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9092843,0,0,0.9010322,-90.57057,-116.67757)"
+       id="g2576">
+      <path
+         d="M 298.50007 514.45593 A 12.121831 12.121831 0 1 1  274.2564,514.45593 A 12.121831 12.121831 0 1 1  298.50007 514.45593 z"
+         transform="matrix(1.592735,0,0,1.283951,-102.5613,-260.5466)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.276681,0,0,1.230352,101.9083,39.3762)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="matrix(1.276681,0,0,1.230352,-80.7513,219.1963)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2037" />
+      <path
+         d="M 325.33346,196.08352 L 340.10007,196.08352 L 359.36998,223.36753 L 359.36998,196.08352 L 374.27623,196.08352 L 374.27623,245.40333 L 359.36998,245.40333 L 340.2048,218.32117 L 340.2048,245.40333 L 325.33346,245.40333 L 325.33346,196.08352 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <path
+         d="M 135.44046,410.17409 C 135.44046,401.17965 137.6689,393.76755 142.12577,387.93775 C 146.58262,382.10804 152.60212,379.19319 160.18424,379.19313 C 168.85336,379.19319 175.40277,382.61699 179.83252,389.46459 C 183.39252,394.97976 185.17255,401.77189 185.17261,409.84097 C 185.17255,418.90949 182.96451,426.34012 178.54845,432.13283 C 174.1323,437.92557 168.02449,440.82194 160.22501,440.82194 C 153.26792,440.82194 147.64249,438.41602 143.34869,433.60414 C 138.07654,427.64485 135.44046,419.83484 135.44046,410.17409 L 135.44046,410.17409 z M 152.07219,410.11858 C 152.07218,415.37463 152.85349,419.26112 154.41614,421.77807 C 155.97873,424.29508 157.9422,425.55356 160.30654,425.55354 C 162.698,425.55356 164.66146,424.31357 166.19693,421.8336 C 167.73236,419.35365 168.50007,415.37463 168.50012,409.89648 C 168.50007,404.78854 167.72556,400.98533 166.17656,398.48682 C 164.6275,395.98839 162.71158,394.73917 160.42883,394.73913 C 158.01013,394.73917 156.01271,396.00691 154.43651,398.54236 C 152.86029,401.07786 152.07218,404.93661 152.07219,410.11858 L 152.07219,410.11858 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2053" />
+      <g
+         transform="matrix(1.137542,1.182307,-3.626093,3.768791,1936.7667,-2104.843)"
+         id="g2102">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2104" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2106" />
+      </g>
+      <g
+         transform="matrix(1.640381,3.165364e-2,0.100903,5.228973,-301.1927,-2491.233)"
+         id="g2108">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2110" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2112" />
+      </g>
+      <g
+         transform="matrix(-1.182307,1.137542,-3.768791,-3.626093,2860.8027,1982.095)"
+         id="g2114">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2116" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2118" />
+      </g>
+      <g
+         transform="matrix(-1.137542,-1.182307,3.626093,-3.768791,-1231.1553,2908.294)"
+         id="g2120">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2122" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2124" />
+      </g>
+      <g
+         transform="matrix(-1.137542,1.182307,3.626093,3.768791,-1232.2073,-2105.538)"
+         id="g2126">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2128" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2130" />
+      </g>
+      <g
+         transform="matrix(3.165364e-2,-1.640381,5.228973,-0.100903,-2544.4383,1058.699)"
+         id="g2132">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2134" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2136" />
+      </g>
+      <g
+         transform="matrix(-1.640381,-3.165364e-2,-0.100903,-5.228973,1007.6358,3296.133)"
+         id="g2138">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2140" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2142" />
+      </g>
+      <g
+         transform="matrix(-3.165364e-2,-1.640381,-5.228973,-0.100903,3251.4977,1056.556)"
+         id="g2144">
+        <path
+           d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2146" />
+        <path
+           d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2148" />
+      </g>
+      <path
+         d="M -533.36052 422.02701 A 143.44167 143.44167 0 1 1  -820.24385,422.02701 A 143.44167 143.44167 0 1 1  -533.36052 422.02701 z"
+         transform="matrix(1.053785,0,0,1.027923,1067.7499,-31.88065)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:7.27700138;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2150" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_25.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_25.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_25.svg	(revision 590)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.0587175,0,0,1.0527831,-267.98969,-477.69647)"
+       id="g2317">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(263.3523,396.1393)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(111.3186,247.0762)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <g
+         transform="translate(5.714286,-4.285714)"
+         id="g3526">
+        <g
+           transform="matrix(0.568373,0,0,0.62482,179.0582,277.4692)"
+           id="g3486">
+          <path
+             d="M 476.78571 602.89789 A 21.25 23.035715 0 1 1  434.28571,602.89789 A 21.25 23.035715 0 1 1  476.78571 602.89789 z"
+             transform="matrix(1.326212,0,0,1.28339,-124.2005,-99.83376)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5.46799994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2520" />
+          <path
+             d="M 567.50001 591.11218 A 38.035713 38.035713 0 1 1  491.42858,591.11218 A 38.035713 38.035713 0 1 1  567.50001 591.11218 z"
+             transform="matrix(1.480367,0,0,1.456455,-303.0604,-186.2503)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:12.99924469;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2522" />
+        </g>
+        <g
+           transform="matrix(0,-1.617502,0.758826,0,25.37736,1413.412)"
+           id="g3502">
+          <path
+             d="M 463.283,562.10964 L 459.36687,527.36218 L 520,561.17551 L 463.283,562.10964 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3504" />
+          <path
+             d="M 463.27101,560.84811 L 459.35489,595.84811 L 519.98801,562.03479 L 463.27101,560.84811 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3506" />
+        </g>
+        <g
+           transform="matrix(1.617502,0,0,0.758826,-262.1424,273.3014)"
+           id="g3508">
+          <path
+             d="M 463.283,562.10964 L 459.36687,527.36218 L 520,561.17551 L 463.283,562.10964 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3510" />
+          <path
+             d="M 463.27101,560.84811 L 459.35489,595.84811 L 519.98801,562.03479 L 463.27101,560.84811 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3512" />
+        </g>
+        <g
+           transform="matrix(0,1.617502,-0.758826,0,878.117,-14.93325)"
+           id="g3514">
+          <path
+             d="M 463.283,562.10964 L 459.36687,527.36218 L 520,561.17551 L 463.283,562.10964 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3516" />
+          <path
+             d="M 463.27101,560.84811 L 459.35489,595.84811 L 519.98801,562.03479 L 463.27101,560.84811 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3518" />
+        </g>
+        <g
+           transform="matrix(-1.617502,0,0,-0.758826,1166.647,1125.061)"
+           id="g3520">
+          <path
+             d="M 463.283,562.10964 L 459.36687,527.36218 L 520,561.17551 L 463.283,562.10964 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3522" />
+          <path
+             d="M 463.27101,560.84811 L 459.35489,595.84811 L 519.98801,562.03479 L 463.27101,560.84811 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3524" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_43.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_43.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_43.svg	(revision 590)
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-176.85714,-283.42857)"
+       id="g2706">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.005509,0,0,1.005509,213.5616,229.4051)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.005509,0,0,1.005509,64.42266,84.16993)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="matrix(1.005509,0,0,1.005509,67.94369,377.9957)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="matrix(1.005509,0,0,1.005509,-96.24449,232.1767)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+      <g
+         transform="translate(75.71429,35.71429)"
+         id="g8901">
+        <g
+           transform="matrix(0.913314,0,0,0.870761,49.74248,-3.284198)"
+           id="g7056">
+          <path
+             d="M 705.08646 481.62601 A 103.54063 110.10663 0 1 1  498.00521,481.62601 A 103.54063 110.10663 0 1 1  705.08646 481.62601 z"
+             transform="matrix(0.93543,0,0,0.902583,-251.0718,133.9098)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.8201046;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4266" />
+          <g
+             transform="translate(-2.0203,34.36693)"
+             id="g5203">
+            <g
+               transform="matrix(0.649211,0,0,0.650927,101.3467,196.6624)"
+               id="g5153">
+              <path
+                 d="M 510.71429 493.43362 A 43.214287 43.214287 0 1 1  424.28571,493.43362 A 43.214287 43.214287 0 1 1  510.71429 493.43362 z"
+                 transform="matrix(0.87031,0,0,0.875059,-76.20417,89.64063)"
+                 style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:9.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2458" />
+              <path
+                 d="M 329.9926,484.23338 L 329.9926,559.58953"
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.57082582;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path3345" />
+              <path
+                 d="M 369.37143,520.25407 L 294.42428,520.25407"
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.57082582;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path4232" />
+              <path
+                 d="M 358.83525,491.89716 L 305.83961,545.18201"
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.57082582;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path4234" />
+              <path
+                 d="M 304.66659,495.60051 L 357.66223,548.88535"
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.57082582;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path4238" />
+              <path
+                 d="M 355.71429 510.57648 A 15.357142 15.357142 0 1 1  325,510.57648 A 15.357142 15.357142 0 1 1  355.71429 510.57648 z"
+                 transform="matrix(0.87031,0,0,0.875059,34.08737,73.38953)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:0.30000001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2456" />
+            </g>
+            <g
+               transform="translate(-1.428571,16.42857)"
+               id="g5181">
+              <path
+                 d="M 317.02424,493.83574 L 317.52932,443.91421 L 336.07336,499.98349 L 317.02424,493.83574 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path4250" />
+              <path
+                 d="M 315.56,493.45015 L 317.07523,443.91421 L 298.53118,499.98349 L 315.56,493.45015 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path4252" />
+            </g>
+            <g
+               transform="matrix(0,-1,1,0,-204.0918,853.2359)"
+               id="g5185">
+              <path
+                 d="M 317.02424,493.83574 L 317.52932,443.91421 L 336.07336,499.98349 L 317.02424,493.83574 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5187" />
+              <path
+                 d="M 315.56,493.45015 L 317.07523,443.91421 L 298.53118,499.98349 L 315.56,493.45015 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5189" />
+            </g>
+            <g
+               transform="matrix(0,1,-1,0,834.4488,217.9171)"
+               id="g5191">
+              <path
+                 d="M 317.02424,493.83574 L 317.52932,443.91421 L 336.07336,499.98349 L 317.02424,493.83574 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5193" />
+              <path
+                 d="M 315.56,493.45015 L 317.07523,443.91421 L 298.53118,499.98349 L 315.56,493.45015 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5195" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,632.6165,1056.097)"
+               id="g5197">
+              <path
+                 d="M 317.02424,493.83574 L 317.52932,443.91421 L 336.07336,499.98349 L 317.02424,493.83574 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5199" />
+              <path
+                 d="M 315.56,493.45015 L 317.07523,443.91421 L 298.53118,499.98349 L 315.56,493.45015 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82929599px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                 id="path5201" />
+            </g>
+          </g>
+          <path
+             d="M 294.712,551.32652 L 247.99244,493.74783"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path5247" />
+          <path
+             d="M 332.7521,550.46921 L 377.02834,496.40527"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9433198px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path5249" />
+          <path
+             d="M 331.90156,588.3036 L 380.9155,638.93739"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.96050525px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path5251" />
+          <path
+             d="M 296.09924,587.86391 L 245.50173,641.39854"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00346363px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path5253" />
+          <path
+             d="M 387.64604,569.50926 L 408.35417,569.25673 L 408.35417,569.25673"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5255" />
+          <path
+             d="M 216.7474,570.59183 L 237.45553,570.3393 L 237.45553,570.3393"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6142" />
+          <path
+             d="M 313.85727,494.78042 L 313.62736,471.23776 L 313.62736,471.23776"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.32261062;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6144" />
+          <path
+             d="M 313.5261,666.23137 L 313.27357,645.52324 L 313.27357,645.52324"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6146" />
+        </g>
+        <path
+           d="M 714.17786 514.45593 A 101.52033 101.52033 0 1 1  511.1372,514.45593 A 101.52033 101.52033 0 1 1  714.17786 514.45593 z"
+           transform="matrix(1.024864,0,0,1.009938,-294.4041,-27.53248)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.82982922;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7054" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0.245116,0,0,1.112072,230.6493,-69.4339)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8857" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0,-0.307545,1.172697,0,-452.3854,624.9073)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8859" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0,-0.36963,0.968446,0,-140.6693,650.4016)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8861" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(-0.202867,-0.192674,-0.678216,0.644141,885.9138,126.3354)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8863" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0.192935,-0.201634,0.645011,0.674096,-60.76122,247.0723)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8867" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(-0.216837,-0.216837,-0.724921,0.724921,789.091,226.551)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8869" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0.216837,-0.216837,0.724921,0.724921,-249.4171,86.89736)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8871" />
+        <path
+           d="M 431.08261 589.20721 A 2.1465743 4.2931485 0 1 1  426.78946,589.20721 A 2.1465743 4.2931485 0 1 1  431.08261 589.20721 z"
+           transform="matrix(0.326338,0,0,0.917389,196.4197,-143.0014)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.24100018;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8873" />
+        <g
+           transform="translate(-122.1429,-88.57143)"
+           id="g8879">
+          <path
+             d="M 459.83675,476.95404 L 459.83675,456.87726 L 475.36606,477.36218 L 459.83675,476.95404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8875" />
+          <path
+             d="M 459.0503,477.06564 L 459.0503,456.98886 L 443.52099,477.47378 L 459.0503,477.06564 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8877" />
+        </g>
+        <g
+           transform="matrix(0,-1,1,0,-247.9738,953.5914)"
+           id="g8883">
+          <path
+             d="M 459.83675,476.95404 L 459.83675,456.87726 L 475.36606,477.36218 L 459.83675,476.95404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8885" />
+          <path
+             d="M 459.0503,477.06564 L 459.0503,456.98886 L 443.52099,477.47378 L 459.0503,477.06564 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8887" />
+        </g>
+        <g
+           transform="matrix(-1,0,0,-1,794.0864,1072.038)"
+           id="g8889">
+          <path
+             d="M 459.83675,476.95404 L 459.83675,456.87726 L 475.36606,477.36218 L 459.83675,476.95404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8891" />
+          <path
+             d="M 459.0503,477.06564 L 459.0503,456.98886 L 443.52099,477.47378 L 459.0503,477.06564 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8893" />
+        </g>
+        <g
+           transform="matrix(0,1,-1,0,916.3773,33.27581)"
+           id="g8895">
+          <path
+             d="M 459.83675,476.95404 L 459.83675,456.87726 L 475.36606,477.36218 L 459.83675,476.95404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8897" />
+          <path
+             d="M 459.0503,477.06564 L 459.0503,456.98886 L 443.52099,477.47378 L 459.0503,477.06564 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path8899" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_26.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_26.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_26.svg	(revision 590)
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.0703751,0,0,1.0644861,-214.68022,-204.72749)"
+       id="g2353">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(222.3454,140.0558)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(59.76398,-16.51779)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <g
+         transform="matrix(0.311736,0,0,0.302213,279.8002,284.787)"
+         id="g3222">
+        <g
+           transform="matrix(0.781857,0,0,0.766882,63.83974,141.9881)"
+           id="g3205">
+          <path
+             d="M 398.25392,383.31251 C 414.38946,377.47009 430.78354,374.47169 448.25392,383.31251 L 425.63489,339.52316 L 398.25392,383.31251 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3178" />
+          <g
+             id="g3192">
+            <g
+               transform="matrix(0.587863,0,0,0.552833,146.4351,243.0267)"
+               id="g3166">
+              <path
+                 d="M 418.57143 483.79074 A 30.714285 30.714285 0 1 1  357.14286,483.79074 A 30.714285 30.714285 0 1 1  418.57143 483.79074 z"
+                 transform="matrix(3.260196,0,0,3.305983,-784.3987,-1182.114)"
+                 style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:15.0170002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2270" />
+              <path
+                 d="M 322.85714 567.36218 A 27.857143 27.857143 0 1 1  267.14286,567.36218 A 27.857143 27.857143 0 1 1  322.85714 567.36218 z"
+                 transform="matrix(1.398549,0,0,1.449831,66.71392,-405.2167)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:15.0170002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path3164" />
+            </g>
+            <path
+               d="M 336.44036,500.51572 C 330.59794,484.38018 327.59954,467.9861 336.44036,450.51572 L 292.65101,473.13475 L 336.44036,500.51572 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3174" />
+            <path
+               d="M 483.35799 632.6438 A 75.256363 75.256363 0 1 1  332.84526,632.6438 A 75.256363 75.256363 0 1 1  483.35799 632.6438 z"
+               transform="matrix(1.199403,0,0,1.175914,-60.29851,-269.8845)"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:15.0170002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3176" />
+            <path
+               d="M 522.07247,449.55493 C 527.9149,465.69047 530.9133,482.08455 522.07247,499.55493 L 565.86183,476.93589 L 522.07247,449.55493 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3180" />
+            <path
+               d="M 507.44045,423.87181 C 500.16211,408.33104 490.68994,394.61849 472.08511,388.51647 L 519.04292,373.54679 L 507.44045,423.87181 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3182" />
+            <path
+               d="M 453.80976,565.29225 C 437.67422,571.13466 421.28013,574.13307 403.80976,565.29225 L 426.42877,609.0816 L 453.80976,565.29225 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3184" />
+            <path
+               d="M 342.68712,430.01692 C 349.96546,414.47613 359.43763,400.76359 378.04246,394.66156 L 331.08465,379.6919 L 342.68712,430.01692 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3186" />
+            <path
+               d="M 476.88331,556.71909 C 492.42407,549.44075 506.13662,539.96858 512.23864,521.36375 L 527.20833,568.32157 L 476.88331,556.71909 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3188" />
+            <path
+               d="M 347.2328,522.36218 C 354.51114,537.90294 363.98331,551.61549 382.58814,557.71751 L 335.63032,572.6872 L 347.2328,522.36218 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3190" />
+          </g>
+        </g>
+        <path
+           d="M 783.87836 426.57269 A 101.52033 97.479721 0 1 1  580.8377,426.57269 A 101.52033 97.479721 0 1 1  783.87836 426.57269 z"
+           transform="matrix(1.112549,0,0,1.101028,-360.5463,35.14687)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:23.84678459;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3220" />
+      </g>
+      <g
+         transform="matrix(2.836932,0,0,5.390526,-517.6559,-1354.956)"
+         id="g4168">
+        <path
+           d="M 315,327.36218 L 325,325.93361 L 325,307.04651 L 315,327.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3279" />
+        <path
+           d="M 335.10714,327.71933 L 324.57143,325.75504 L 324.9394,306.78246 L 335.10714,327.71933 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4166" />
+      </g>
+      <g
+         transform="matrix(0,-2.836932,5.390526,0,-1387.849,1358.038)"
+         id="g4172">
+        <path
+           d="M 315,327.36218 L 325,325.93361 L 325,307.04651 L 315,327.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4174" />
+        <path
+           d="M 335.10714,327.71933 L 324.57143,325.75504 L 324.9394,306.78246 L 335.10714,327.71933 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4176" />
+      </g>
+      <g
+         transform="matrix(-2.836932,0,0,-5.390526,1326.737,2228.14)"
+         id="g4178">
+        <path
+           d="M 315,327.36218 L 325,325.93361 L 325,307.04651 L 315,327.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4180" />
+        <path
+           d="M 335.10714,327.71933 L 325.10554,325.94243 L 324.9394,306.78246 L 335.10714,327.71933 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4182" />
+      </g>
+      <g
+         transform="matrix(0,2.836932,-5.390526,0,2197.005,-483.6711)"
+         id="g4184">
+        <path
+           d="M 315,327.36218 L 325,325.93361 L 325,307.04651 L 315,327.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4186" />
+        <path
+           d="M 335.10714,327.71933 L 324.57143,325.75504 L 324.9394,306.78246 L 335.10714,327.71933 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4188" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_44.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_44.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_44.svg	(revision 590)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9056777,0,0,0.9067649,-1.6034056,-234.939)"
+       id="g2470">
+      <g
+         transform="matrix(11.20515,0,0,10.81525,-3804.37,-5258.72)"
+         id="g1936">
+        <g
+           transform="translate(2.148909,2.188814)"
+           id="g1904">
+          <path
+             d="M 360.44643 532.18359 A 1.0714285 11.339286 0 1 1  358.30357,532.18359 A 1.0714285 11.339286 0 1 1  360.44643 532.18359 z"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1872" />
+          <path
+             d="M 360.44643 532.18359 A 1.0714285 11.339286 0 1 1  358.30357,532.18359 A 1.0714285 11.339286 0 1 1  360.44643 532.18359 z"
+             transform="matrix(0,1,-1,0,892.0943,172.7658)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1874" />
+          <path
+             d="M 360.44643 532.18359 A 1.0714285 11.339286 0 1 1  358.30357,532.18359 A 1.0714285 11.339286 0 1 1  360.44643 532.18359 z"
+             transform="matrix(-0.5355,0.5355,0.209582,0.209582,440.3929,228.3843)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1876" />
+          <path
+             d="M 360.44643 532.18359 A 1.0714285 11.339286 0 1 1  358.30357,532.18359 A 1.0714285 11.339286 0 1 1  360.44643 532.18359 z"
+             transform="matrix(0.5355,0.5355,-0.209582,0.209582,278.6071,228.2915)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1880" />
+          <path
+             d="M 359.97683,543.24378 L 359.34954,544.96402 L 358.76551,543.24378 L 359.34954,543.75064 L 359.97683,543.24378 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.28870204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1888" />
+          <path
+             d="M 358.77059,521.03796 L 359.39788,519.31772 L 359.98191,521.03796 L 359.39788,520.5311 L 358.77059,521.03796 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.28870204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1894" />
+          <path
+             d="M 348.74841,532.78927 L 347.02817,532.16198 L 348.74841,531.57795 L 348.24155,532.16198 L 348.74841,532.78927 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.28870204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1896" />
+          <path
+             d="M 370.9865,531.53296 L 372.70674,532.16025 L 370.9865,532.74428 L 371.49336,532.16025 L 370.9865,531.53296 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.28870204px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1898" />
+        </g>
+        <path
+           d="M 390.67649 532.98596 A 5.5874062 5.5874062 0 1 1  379.50167,532.98596 A 5.5874062 5.5874062 0 1 1  390.67649 532.98596 z"
+           transform="translate(-23.64467,1.269573)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1900" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(77.20367,223.5084)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-97.39909,62.79767)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(-95.50705,390.4)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="translate(-273.0134,223.2292)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_27.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_27.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_27.svg	(revision 590)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.0809585,0,0,1.0641244,-176.53288,-143.02454)"
+       id="g2407">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(180.17464,83.2019)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(18.1918,-72.08816)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <g
+         transform="matrix(0.500988,0,0,0.429254,212.79719,166.5877)"
+         id="g3332">
+        <path
+           d="M 320.71429 496.64789 A 20 20 0 1 1  280.71429,496.64789 A 20 20 0 1 1  320.71429 496.64789 z"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:none;stroke-width:8.10099983;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2363" />
+        <path
+           d="M 160 533.07648 A 28.571428 28.571428 0 1 1  102.85715,533.07648 A 28.571428 28.571428 0 1 1  160 533.07648 z"
+           transform="translate(169.2857,-36.42857)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:8.10099983;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2365" />
+        <path
+           d="M 300.77292,477.36218 L 300.77292,468.74655 L 300.77292,468.74655 L 301.02546,468.99909"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2367" />
+        <path
+           d="M 320,497.36218 L 326.42857,497.36218 L 326.42857,497.36218 L 326.42857,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2375" />
+        <path
+           d="M 281.25,497.36218 L 275,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2377" />
+        <path
+           d="M 300.53571,515.75504 L 300.53571,521.6479"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2379" />
+        <path
+           d="M 242.85714 495.75504 A 29.464285 29.464285 0 1 1  183.92857,495.75504 A 29.464285 29.464285 0 1 1  242.85714 495.75504 z"
+           transform="matrix(1.374169,0,0,1.382302,7.83358,-188.3956)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.40057325;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2381" />
+        <path
+           d="M 300.71429,528.61218 L 300.89286,535.75504"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3268" />
+        <path
+           d="M 333.39286,497.36218 L 340,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3270" />
+        <path
+           d="M 275 497.36218 A 47.857143 47.857143 0 1 1  179.28571,497.36218 A 47.857143 47.857143 0 1 1  275 497.36218 z"
+           transform="matrix(1.095189,0,0,1.080264,51.94672,-39.91708)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.06500006;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3276" />
+        <path
+           d="M 258.03571,497.36218 L 250,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3278" />
+        <path
+           d="M 300.89286,540.3979 L 300.89286,545.93361"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3280" />
+        <path
+           d="M 344.28572,497.36218 L 351.42857,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3282" />
+        <path
+           d="M 301.07143,464.32647 L 300.89286,456.29075"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3284" />
+        <path
+           d="M 300.71429,453.96932 L 300.53571,446.29075"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3286" />
+        <path
+           d="M 270,497.36218 L 262.85714,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3288" />
+        <path
+           d="M 207.08128 460.16025 A 58.336311 58.336311 0 1 1  90.408653,460.16025 A 58.336311 58.336311 0 1 1  207.08128 460.16025 z"
+           transform="matrix(1.111107,0,0,1.111107,135.7538,-13.49903)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.06500006;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3290" />
+        <path
+           d="M 300.77292,443.74527 L 300.52038,433.13867"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3292" />
+        <path
+           d="M 356.07877,497.36218 L 365.42268,497.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3294" />
+        <path
+           d="M 245.97215,496.77828 L 238.64854,496.77828"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3296" />
+        <path
+           d="M 301.07143,551.82647 L 301.07143,560.75504"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3298" />
+        <g
+           transform="matrix(-1.826981,1.826981,-1.992814,-1.992814,2128.49,939.9551)"
+           id="g3310">
+          <path
+             d="M 376.5168,545.73446 L 376.71228,536.6295 L 370.9087,546.62956 L 376.5168,545.73446 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3300" />
+          <path
+             d="M 376.48827,545.64485 L 376.58601,536.6295 L 382.38958,546.62956 L 376.48827,545.64485 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3302" />
+        </g>
+        <g
+           transform="matrix(1.826981,1.826981,-1.992814,1.992814,747.9553,-1325.587)"
+           id="g3314">
+          <path
+             d="M 376.5168,545.73446 L 376.71228,536.6295 L 370.9087,546.62956 L 376.5168,545.73446 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3316" />
+          <path
+             d="M 376.48827,545.64485 L 376.58601,536.6295 L 382.38958,546.62956 L 376.48827,545.64485 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3318" />
+        </g>
+        <g
+           transform="matrix(-1.826981,-1.826981,1.992814,-1.992814,-144.8943,2322.242)"
+           id="g3320">
+          <path
+             d="M 376.5168,545.73446 L 376.71228,536.6295 L 370.9087,546.62956 L 376.5168,545.73446 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3322" />
+          <path
+             d="M 376.48827,545.64485 L 376.58601,536.6295 L 382.38958,546.62956 L 376.48827,545.64485 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3324" />
+        </g>
+        <g
+           transform="matrix(1.826981,-1.826981,1.992814,1.992814,-1525.701,53.88859)"
+           id="g3326">
+          <path
+             d="M 376.5168,545.73446 L 376.71228,536.6295 L 370.9087,546.62956 L 376.5168,545.73446 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3328" />
+          <path
+             d="M 376.48827,545.64485 L 376.58601,536.6295 L 382.38958,546.62956 L 376.48827,545.64485 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3330" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0.780471,0,0,1.483532,30.325,-400.8828)"
+         id="g3377">
+        <path
+           d="M 425.64511,506.95071 L 400.64511,511.71708 L 426.00225,435.37917 L 425.64511,506.95071 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29021394px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3367" />
+        <path
+           d="M 426.37577,506.86431 L 452.43082,512.31159 L 426.00225,434.19228 C 426.00225,452.74031 426.37577,480.70549 426.37577,506.86431 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3369" />
+      </g>
+      <g
+         transform="matrix(0,0.780471,-1.483532,0,1148.8701,49.8087)"
+         id="g3381">
+        <path
+           d="M 425.64511,506.95071 L 400.64511,511.71708 L 426.00225,435.37917 L 425.64511,506.95071 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29021394px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3383" />
+        <path
+           d="M 426.37577,506.86431 L 452.43082,512.31159 L 426.00225,434.19228 C 426.00225,452.74031 426.37577,480.70549 426.37577,506.86431 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3385" />
+      </g>
+      <g
+         transform="matrix(-0.780471,0,0,-1.483532,695.7676,1161.5894)"
+         id="g3387">
+        <path
+           d="M 425.64511,506.95071 L 400.64511,511.71708 L 426.00225,435.37917 L 425.64511,506.95071 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29021394px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3389" />
+        <path
+           d="M 426.37577,506.86431 L 452.43082,512.31159 L 426.00225,434.19228 C 426.00225,452.74031 426.37577,480.70549 426.37577,506.86431 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3391" />
+      </g>
+      <g
+         transform="matrix(0,-0.74657,1.483532,0,-422.2781,700.6498)"
+         id="g3393">
+        <path
+           d="M 425.64511,506.95071 L 400.64511,511.71708 L 426.00225,435.37917 L 425.64511,506.95071 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.29021394px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3395" />
+        <path
+           d="M 426.37577,506.86431 L 452.43082,512.31159 L 426.00225,434.19228 C 426.00225,452.74031 426.37577,480.70549 426.37577,506.86431 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3397" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_45.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_45.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_45.svg	(revision 590)
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.8244691,0,0,0.8606256,-58.158405,-13.67261)"
+       id="g2531">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(189.46167,11.9818)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-0.2339,-180.99781)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(6.1172,188.228)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 132.57022,307.39815 C 132.57022,300.8539 134.39313,295.75885 138.03897,292.11299 C 141.68479,288.4672 146.76161,286.64428 153.26944,286.64424 C 159.94128,286.64428 165.0819,288.43529 168.69131,292.01729 C 172.30065,295.59935 174.10533,300.61692 174.10538,307.07002 C 174.10533,311.75493 173.31692,315.59673 171.74014,318.59541 C 170.16328,321.59412 167.88463,323.92745 164.9042,325.59541 C 161.9237,327.26338 158.20951,328.09736 153.76163,328.09736 C 149.24077,328.09736 145.49924,327.37731 142.53702,325.93721 C 139.57477,324.49711 137.17308,322.21846 135.33194,319.10127 C 133.49079,315.9841 132.57022,312.08306 132.57022,307.39815 L 132.57022,307.39815 z M 144.95694,307.45283 C 144.95692,311.49972 145.70887,314.40727 147.2128,316.17549 C 148.71668,317.94373 150.76291,318.82784 153.35147,318.82783 C 156.0129,318.82784 158.07279,317.96196 159.53116,316.23018 C 160.98946,314.49842 161.71862,311.39035 161.71866,306.90596 C 161.71862,303.13255 160.95756,300.37539 159.43545,298.63447 C 157.91329,296.89362 155.84884,296.02318 153.24209,296.02315 C 150.74468,296.02318 148.73947,296.90729 147.22647,298.67549 C 145.71343,300.44375 144.95692,303.36952 144.95694,307.45283 L 144.95694,307.45283 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+      <g
+         transform="translate(126.8851,-218.5714)"
+         id="g7272">
+        <g
+           transform="matrix(3.334851,0,0,3.2579,-711.3987,-1202.829)"
+           id="g5046">
+          <g
+             transform="translate(-71.21575,-2.020305)"
+             id="g4788">
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-3.267155,-7.381458)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2010" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-3.168929,-2.615909)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2026" />
+            <g
+               transform="translate(-21.2132,12.37437)"
+               id="g2060">
+              <g
+                 id="g2012">
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.325834,-0.694484)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1986" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.22669,-5.489639)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1988" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.22669,-0.615909)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1990" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.389126,-0.552774)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1992" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.515396,-0.615909)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1994" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.33029,-10.36545)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1996" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.358334,-5.489639)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1998" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.578531,-5.426504)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2000" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.3022,-5.426504)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2002" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.16356,-10.30026)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2004" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.2909,-10.32248)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2006" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.515396,-10.23713)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2008" />
+              </g>
+              <g
+                 transform="translate(3.229466e-7,-14.45995)"
+                 id="g2028">
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.325834,-0.694484)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2030" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.22669,-5.489639)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2032" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.22669,-0.615909)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2034" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.389126,-0.552774)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2036" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.515396,-0.615909)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2038" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.33029,-10.36545)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2040" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(-1.358334,-5.489639)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2042" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.578531,-5.426504)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2044" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.3022,-5.426504)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2046" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(13.16356,-10.30026)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2048" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(8.2909,-10.32248)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2050" />
+                <path
+                   d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+                   transform="translate(3.515396,-10.23713)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path2052" />
+              </g>
+            </g>
+            <path
+               d="M 366.60713 529.37109 A 17.633928 17.633928 0 1 1  331.33928,529.37109 A 17.633928 17.633928 0 1 1  366.60713 529.37109 z"
+               transform="matrix(0.965631,0,0,0.965124,12.7403,19.09994)"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.71435535;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2054" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-27.35833,-2.794481)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2088" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-3.20402,7.166641)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2090" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-3.20402,2.229776)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2092" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-27.44762,6.953302)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2094" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-27.35833,-7.615909)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2096" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="translate(-27.35644,2.042588)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2098" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(1.010885,0,0,0.686059,-16.91146,150.0973)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2100" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(1.036272,0,0,0.605544,-31.12346,193.0675)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2102" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(0.812021,0,0,1.006253,69.56949,-5.834976)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2104" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(0.792744,0,0,0.912882,71.6354,34.28776)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2106" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(0.809162,0,0,1.006354,70.61645,-0.986769)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2108" />
+            <path
+               d="M 366.11715,530.52368 A 2.3044105,2.443229 0 1 1 366.08027,530.08832"
+               transform="matrix(0.78029,0,0,0.49421,71.22944,252.4729)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2110" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(1.016727,0,0,0.543009,-18.62048,257.9201)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2112" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(0.716905,0,0,0.75565,99.03454,140.9138)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3002" />
+            <path
+               d="M 332.88917,529.97296 C 332.88917,529.97296 333.92002,531.15934 333.92692,532.23839 C 333.93381,533.31742 332.91677,534.28914 332.91677,534.28914 L 332.51947,531.99187 L 332.86158,529.97296 L 332.86158,529.97296"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14608978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3004" />
+            <path
+               d="M 364.70038,535.45146 C 364.70038,535.45146 362.73386,536.38049 362.7207,537.22548 C 362.70754,538.07047 364.64774,538.83141 364.64774,538.83141 L 365.40565,537.03243 L 364.75302,535.45146 L 364.75302,535.45146"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17855735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3891" />
+            <path
+               d="M 365.03076,521.30913 C 365.03076,521.30913 363.03183,522.53028 363.01844,523.64095 C 363.00507,524.75163 364.97725,525.75184 364.97725,525.75184 L 365.74766,523.38721 L 365.08427,521.30913 L 365.08427,521.30913"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2063939;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3893" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(0.711739,0,0,0.477379,96.35023,292.2892)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3895" />
+            <path
+               d="M 366.11715 530.52368 A 2.3044105 2.3044105 0 1 1  361.50833,530.52368 A 2.3044105 2.3044105 0 1 1  366.11715 530.52368 z"
+               transform="matrix(1.016727,0,0,0.543009,-23.96074,257.9203)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3897" />
+            <path
+               d="M 332.93069,525.24006 C 332.93069,525.24006 333.93354,526.62656 333.94025,527.88761 C 333.94696,529.14867 332.95753,530.2843 332.95753,530.2843 L 332.57103,527.59951 L 332.90384,525.24006 L 332.90384,525.24006"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.15577166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3901" />
+          </g>
+          <path
+             d="M 309.61175 526.45154 A 28.663078 28.663078 0 1 1  252.28559,526.45154 A 28.663078 28.663078 0 1 1  309.61175 526.45154 z"
+             transform="matrix(0.871265,0,0,0.879667,33.59686,65.19904)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5006" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,59.0852,140.089)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5008" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,78.86765,158.0872)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5010" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,76.39621,150.8466)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5012" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,71.74773,145.089)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5014" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,65.624,141.3392)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5016" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,52.21976,141.4358)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5018" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,71.26994,178.5589)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5020" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,76.26994,173.0031)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5022" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,78.9888,165.932)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5024" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.650196,0,0,0.711083,37.65554,184.8343)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5026" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.606594,0,0,0.708345,53.1809,179.5363)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5028" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,40.85557,149.2645)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5030" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,46.26994,144.4663)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5032" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.618361,0,0,0.713985,56.73972,199.9055)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5034" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,51.46218,182.2321)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5036" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,58.19234,182.852)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5038" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.65164,0,0,0.757366,65.35178,182.2321)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5040" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.613628,0,0,0.658744,53.74936,221.9529)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5042" />
+          <path
+             d="M 342.44173 483.52002 A 4.4194174 4.4194174 0 1 1  333.60289,483.52002 A 4.4194174 4.4194174 0 1 1  342.44173 483.52002 z"
+             transform="matrix(0.601391,0,0,-0.715861,54.5157,881.202)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5044" />
+        </g>
+        <path
+           d="M 444.28571 471.64789 A 175 160.71428 0 1 1  94.285706,471.64789 A 175 160.71428 0 1 1  444.28571 471.64789 z"
+           transform="matrix(0.694709,0,0,0.738459,30.55252,169.6205)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.87430239;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5472" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,114.675,193.7766)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5474" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,12.57562,304.2572)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5476" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,117.6315,396.1811)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5478" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,216.6264,303.2471)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5480" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,40.27534,224.5366)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6367" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,184.5611,368.8223)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6369" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,46.70391,369.5366)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6371" />
+        <path
+           d="M 148.57143 265.21933 A 21.428572 21.428572 0 1 1  105.71429,265.21933 A 21.428572 21.428572 0 1 1  148.57143 265.21933 z"
+           transform="matrix(0.806823,0,0,0.840156,189.4479,226.6793)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.65499997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6373" />
+        <path
+           d="M 243.33007,634.80144 C 228.97268,638.24551 214.48156,639.41636 199.65011,634.80144 L 221.49009,679.72828 L 243.33007,634.80144 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.44299009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6379" />
+        <path
+           d="M 196.09854,400.54878 C 210.45593,397.10471 224.94705,395.93386 239.7785,400.54878 L 217.93852,355.62194 L 196.09854,400.54878 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.44299009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7266" />
+        <path
+           d="M 336.64581,505.74797 C 340.08988,520.10536 341.26073,534.59648 336.64581,549.42793 L 381.57265,527.58795 L 336.64581,505.74797 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.44299009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7268" />
+        <path
+           d="M 98.224859,547.91269 C 94.780789,533.5553 93.609939,519.06418 98.224859,504.23273 L 53.298019,526.07271 L 98.224859,547.91269 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.44299009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7270" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_28.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_28.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_28.svg	(revision 590)
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.108799,0,0,1.0728296,-103.86298,-303.1657)"
+       id="g2374">
+      <g
+         transform="matrix(4.68386,0,0,5.159583,-653.4472,-2365.377)"
+         id="g4199">
+        <g
+           transform="matrix(0.330231,0,0,0.326986,129.2325,382.611)"
+           id="g4128">
+          <g
+             transform="matrix(1.001355,0,0,0.97775,-0.260911,12.75667)"
+             id="g2315">
+            <g
+               transform="matrix(0.486888,0,0,0.468202,98.9607,304.8798)"
+               id="g2303">
+              <path
+                 d="M 285.3681 516.72882 A 38.638336 38.638336 0 1 1  208.09143,516.72882 A 38.638336 38.638336 0 1 1  285.3681 516.72882 z"
+                 style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.06500006;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2297" />
+              <path
+                 d="M 285.3681 516.72882 A 38.638336 38.638336 0 1 1  208.09143,516.72882 A 38.638336 38.638336 0 1 1  285.3681 516.72882 z"
+                 transform="matrix(1.282951,0,0,1.335239,-70.1382,-172.2173)"
+                 style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.06500006;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2301" />
+            </g>
+            <rect
+               width="2.0546257"
+               height="2.3071637"
+               x="217.67072"
+               y="524.36737"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.01037455;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="rect2307" />
+            <rect
+               width="2.0546257"
+               height="2.3071637"
+               x="195.94019"
+               y="545.87982"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.01037455;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="rect2309" />
+            <rect
+               width="2.0546257"
+               height="2.3071637"
+               x="239.89407"
+               y="545.62726"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.01037455;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="rect2311" />
+            <rect
+               width="2.0546257"
+               height="2.3071637"
+               x="217.41818"
+               y="566.33539"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.01037455;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="rect2313" />
+          </g>
+          <path
+             d="M 176.96428 504.32648 A 3.3928571 3.3928571 0 1 1  170.17857,504.32648 A 3.3928571 3.3928571 0 1 1  176.96428 504.32648 z"
+             transform="matrix(2.065176,0,0,1.855593,-139.259,-388.5523)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.06500006;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2324" />
+        </g>
+        <g
+           transform="matrix(-0.487972,0,0,-0.614019,338.0609,910.8315)"
+           id="g4116">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4118" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4120" />
+        </g>
+        <g
+           transform="matrix(0,-0.487972,0.614019,0,-147.3954,698.2145)"
+           id="g4139">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4141" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4143" />
+        </g>
+        <g
+           transform="matrix(0.487972,0,0,0.614019,64.99151,212.7874)"
+           id="g4151">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4153" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4155" />
+        </g>
+        <g
+           transform="matrix(0,0.487972,-0.614019,0,550.4186,424.8941)"
+           id="g4157">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4159" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4161" />
+        </g>
+        <g
+           transform="matrix(-0.228464,0.260814,-0.148329,-0.169332,354.5441,587.1342)"
+           id="g4175">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4177" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4179" />
+        </g>
+        <g
+           transform="matrix(0.260814,0.228464,-0.169332,0.148329,227.7437,408.9894)"
+           id="g4181">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4183" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4185" />
+        </g>
+        <g
+           transform="matrix(-0.260814,-0.228464,0.169332,-0.148329,175.7916,714.4944)"
+           id="g4187">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4189" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4191" />
+        </g>
+        <g
+           transform="matrix(0.228464,-0.260814,0.148329,0.169332,48.95192,535.3813)"
+           id="g4193">
+          <path
+             d="M 280.07919,555.84733 L 269.28533,557.36256 L 279.70038,525.1261 L 280.07919,555.84733 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.39899999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4195" />
+          <path
+             d="M 279.82142,555.98853 L 290.53571,557.63003 L 279.62753,524.91633 L 279.82142,555.98853 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path4197" />
+        </g>
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(95.38128,231.1886)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-54.47973,79.66574)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_46.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_46.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_46.svg	(revision 590)
@@ -0,0 +1,512 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.7952555,0,0,0.7499971,-48.86649,-22.086995)"
+       id="g2585">
+      <g
+         transform="matrix(1.267811,0,0,1.311632,177.19772,-149.59913)"
+         id="g5667">
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.004336,0,0,0.527545,-139.5076,139.21)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1918" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1.004664,0.498031,0,-72.36866,751.7734)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1920" />
+        <g
+           transform="matrix(0.941046,0,0,1,-160.0324,-40.46175)"
+           id="g3009">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-83.29021,-108.7499)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1924" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-272.1702,742.0941)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1926" />
+        </g>
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.004664,0,0,0.498031,-162.4193,70.779)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1930" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1.004499,0.512786,0,-103.304,656.1562)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1932" />
+        <g
+           transform="matrix(0.937911,0,0,1,-50.10407,5.252538)"
+           id="g2979">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-71.68301,-153.5714)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1936" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-260.563,697.2726)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1938" />
+        </g>
+        <g
+           transform="translate(-246.1713,-102.6046)"
+           id="g2917">
+          <g
+             id="g1900">
+            <g
+               transform="translate(11.04459,1.25)"
+               id="g1876">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1872" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1874" />
+            </g>
+            <g
+               transform="translate(35.35709,1.339276)"
+               id="g1882">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1884" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1886" />
+            </g>
+            <g
+               transform="translate(11.04459,-22.76787)"
+               id="g1888">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1890" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1892" />
+            </g>
+            <g
+               transform="translate(35.53567,-22.76787)"
+               id="g1894">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1896" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1898" />
+            </g>
+          </g>
+          <g
+             transform="translate(4.650269e-6,-48.30357)"
+             id="g1940">
+            <g
+               transform="translate(11.04459,1.25)"
+               id="g1942">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1944" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1946" />
+            </g>
+            <g
+               transform="translate(35.35709,1.339276)"
+               id="g1948">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1950" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1952" />
+            </g>
+            <g
+               transform="translate(11.04459,-22.76787)"
+               id="g1954">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1956" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1958" />
+            </g>
+            <g
+               transform="translate(35.53567,-22.76787)"
+               id="g1960">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1962" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1964" />
+            </g>
+          </g>
+          <g
+             transform="translate(49.56697,-47.23214)"
+             id="g1966">
+            <g
+               transform="translate(11.04459,1.25)"
+               id="g1968">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1970" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1972" />
+            </g>
+            <g
+               transform="translate(35.35709,1.339276)"
+               id="g1974">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1976" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1978" />
+            </g>
+            <g
+               transform="translate(11.04459,-22.76787)"
+               id="g1980">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1982" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1984" />
+            </g>
+            <g
+               transform="translate(35.53567,-22.76787)"
+               id="g1986">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1988" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1990" />
+            </g>
+          </g>
+          <g
+             transform="translate(48.49554,0.625003)"
+             id="g1992">
+            <g
+               transform="translate(11.04459,1.25)"
+               id="g1994">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1996" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1998" />
+            </g>
+            <g
+               transform="translate(35.35709,1.339276)"
+               id="g2000">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2002" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2004" />
+            </g>
+            <g
+               transform="translate(11.04459,-22.76787)"
+               id="g2006">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2008" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2010" />
+            </g>
+            <g
+               transform="translate(35.53567,-22.76787)"
+               id="g2012">
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2014" />
+              <path
+                 d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+                 transform="matrix(0,-1,1,0,-188.88,850.844)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2016" />
+            </g>
+          </g>
+        </g>
+        <path
+           d="M 204.28571 381.64789 A 70.714287 70.714287 0 1 1  62.85714,381.64789 A 70.714287 70.714287 0 1 1  204.28571 381.64789 z"
+           transform="matrix(1.000723,0,0,0.930016,-0.553585,26.24739)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.86979723;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2030" />
+        <g
+           transform="matrix(0.926308,0,0,1,-156.202,-16.47078)"
+           id="g3013">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-83.29021,-108.7499)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3015" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-272.1702,742.0941)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3017" />
+        </g>
+        <g
+           transform="matrix(0.941046,0,0,1,-40.7735,-15.70293)"
+           id="g3019">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-83.29021,-108.7499)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3021" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-272.1702,742.0941)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3023" />
+        </g>
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.002767,0,0,0.675128,-138.9881,0.83985)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3027" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-0.990161,0.468587,0,-164.7878,746.4745)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3029" />
+        <g
+           transform="matrix(1,0,0,0.852616,-127.524,-26.19663)"
+           id="g3031">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-83.29021,-108.7499)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3033" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-272.1702,742.0941)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3035" />
+        </g>
+        <g
+           transform="matrix(1,0,0,0.867354,-102.1668,-31.72137)"
+           id="g3037">
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="translate(-83.29021,-108.7499)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3039" />
+          <path
+             d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+             transform="matrix(0,-1,1,0,-272.1702,742.0941)"
+             style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3041" />
+        </g>
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1,1,0,-376.4799,773.7754)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3055" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1.004336,0.527545,0,-196.1563,678.7813)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3057" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1.004176,0.542302,0,-93.32075,680.1569)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3059" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.005709,0,0,0.409506,-237.0778,116.4773)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3061" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.005709,0,0,0.409506,-260.6492,198.62)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3063" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.007284,0,0,0.29263,-237.5988,281.9033)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3065" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.006671,0,0,0.335759,-164.5389,260.715)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3067" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.002419,0,0,-0.717678,-187.4179,813.072)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3071" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.002671,0,0,-0.691016,-211.787,798.5299)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3073" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,-1,1,0,-400.4085,774.1325)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3075" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(1.004279,0,0,0.527534,-259.4885,77.78699)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3077" />
+        <path
+           d="M 333.92856 519.95148 A 3.125 12.053572 0 1 1  327.67856,519.95148 A 3.125 12.053572 0 1 1  333.92856 519.95148 z"
+           transform="matrix(0,1.004607,-0.498021,0,362.24,-7.90042)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3966" />
+        <path
+           d="M 27.142853 347.71933 A 91.785713 91.785713 0 1 1  -156.42857,347.71933 A 91.785713 91.785713 0 1 1  27.142853 347.71933 z"
+           transform="matrix(0.992558,0,0,0.980885,197.5823,40.57523)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4078" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0.847588,0,0,0.64298,-105.409,91.41664)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4080" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0,0.749719,-0.530065,0,227.4948,183.818)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4082" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0.847588,0,0,0.64298,-105.1274,247.742)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4084" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0,0.74352,-0.518546,0,383.529,186.2325)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4086" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0.578331,0.553145,-0.403339,0.385774,48.96962,156.5383)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4094" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(0.535999,0.572473,-0.373816,0.399254,161.3861,32.2013)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4096" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(-0.526226,0.616496,0.367,0.429956,212.4529,126.7723)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4098" />
+        <path
+           d="M 282.85715 328.79074 A 2.5 13.571428 0 1 1  277.85715,328.79074 A 2.5 13.571428 0 1 1  282.85715 328.79074 z"
+           transform="matrix(-0.525748,0.525748,0.366667,0.366667,102.5547,58.69397)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4100" />
+        <path
+           d="M 117.93007,291.45111 C 126.40039,288.97665 135.40607,287.83917 146.31358,291.45111 L 132.04091,265.27054 L 117.93007,291.45111 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82214069px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4118" />
+        <path
+           d="M 42.889787,407.4294 C 40.415327,398.95908 39.277847,389.9534 42.889787,379.04589 L 16.709217,393.31856 L 42.889787,407.4294 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82214069px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4120" />
+        <path
+           d="M 147.53189,471.06109 C 139.06157,473.53555 130.05589,474.67303 119.14838,471.06109 L 133.42105,497.24166 L 147.53189,471.06109 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82214069px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4122" />
+        <path
+           d="M 223.41344,379.29842 C 225.8879,387.76874 227.02538,396.77442 223.41344,407.68193 L 249.59401,393.40926 L 223.41344,379.29842 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82214069px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4124" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(176.50529,71.26976)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(1.0954,-120.28128)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(4.5894,233.23026)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="matrix(1.0729613,0,0,1.1462113,-202.53553,26.873207)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_29.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_29.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_29.svg	(revision 590)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-78.571429,-218.57143)"
+       id="g2275">
+      <path
+         d="M 252.37093,444.65723 L 294.74501,339.2391 L 333.71714,444.65723 L 450.63351,479.7966 L 333.71714,514.93598 L 294.74501,620.3541 L 255.77289,514.93598 L 138.85651,479.7966 L 252.37093,444.65723 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:7.40123272px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 316.67798,458.07569 L 294.69131,397.24219 L 274.46984,458.07569 L 213.80536,478.3535 L 274.46984,498.63131 L 294.69131,559.4648 L 314.91285,498.63131 L 375.57733,478.3535 L 316.67798,458.07569 z "
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:10.64999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1874" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(150.6914,179.6853)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2055" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-51.68759,2.585353)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2063" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_47.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_47.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_47.svg	(revision 590)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9260094,0,0,0.8964267,-67.654734,-160.15169)"
+       id="g2444">
+      <g
+         transform="matrix(3.877834,0,0,4.014333,-986.6258,-1752.619)"
+         id="g1888">
+        <path
+           d="M 372.67859 536.91577 A 24.732143 24.732143 0 1 1  323.2143,536.91577 A 24.732143 24.732143 0 1 1  372.67859 536.91577 z"
+           transform="matrix(0.58963,0,0,0.549919,131.6257,253.798)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.69799995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1872" />
+        <path
+           d="M 331.72753,527.44773 L 331.72753,534.8331 L 341.5225,534.8331 L 341.5225,527.44773 L 347.39948,527.44773 L 336.625,512.67701 L 325.85053,527.44773 L 331.72753,527.44773 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70105219px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1878" />
+        <path
+           d="M 342.04033,570.59808 L 342.04033,563.21271 L 332.24536,563.21271 L 332.24536,570.59808 L 326.36838,570.59808 L 337.14286,585.3688 L 347.91733,570.59808 L 342.04033,570.59808 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70105219px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1882" />
+        <path
+           d="M 358.80732,543.69687 L 351.42195,543.69687 L 351.42195,553.49184 L 358.80732,553.49184 L 358.80732,559.36882 L 373.57804,548.59434 L 358.80732,537.81987 L 358.80732,543.69687 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70105219px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1884" />
+        <path
+           d="M 314.22839,552.97394 L 321.61376,552.97394 L 321.61376,543.17897 L 314.22839,543.17897 L 314.22839,537.30199 L 299.45767,548.07647 L 314.22839,558.85094 L 314.22839,552.97394 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.70105219px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1886" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(146.3301,148.847)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-25.03919,-16.44011)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(-19.74609,328.9903)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="matrix(1.0343943,0,0,1.103387,-215.63412,119.34161)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simple.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simple.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simple.svg	(revision 590)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+
+   Copyright 2001  The Apache Software Foundation 
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- GVT under the spot-light!                                                 -->
+<!--                                                                           -->
+<!-- @author vincent.hardy@eng.sun.com                                         -->
+<!-- @version $Id$ -->
+<!-- ========================================================================= -->
+<svg
+   xmlns:xml="http://www.w3.org/XML/1998/namespace"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="450"
+   height="500"
+   viewBox="0 0 450 500"
+   id="svg2755"
+   sodipodi:version="0.32"
+   inkscape:version="0.40+cvs"
+   sodipodi:docname="simple.svg"
+   sodipodi:docbase="C:\Documents and Settings\fjp\Mis documentos">
+  <metadata
+     id="metadata2887">
+    <rdf:RDF
+       id="RDF2889">
+      <cc:Work
+         rdf:about=""
+         id="Work2891">
+        <dc:format
+           id="format2893">image/svg+xml</dc:format>
+        <dc:type
+           id="type2895"
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1152"
+     inkscape:window-height="804"
+     inkscape:zoom="0.72400000"
+     inkscape:cx="224.99999"
+     inkscape:cy="250.00000"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2755" />
+  <defs
+     id="defs2757" />
+  <text
+     xml:space="preserve"
+     style="font-size:112.92661;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+     x="200.62242"
+     y="94.693489"
+     id="text3740"
+     transform="scale(0.926461,1.079376)"><tspan
+       sodipodi:role="line"
+       id="tspan3742"
+       x="200.62242"
+       y="94.693489">N</tspan></text>
+  <path
+     style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+     d="M 224.68750,128.13156 L 173.50000,319.10031 L 208.09375,319.10031 L 208.09375,455.50656 L 224.68750,455.50656 L 224.68750,128.13156 z M 225.34375,128.13156 L 225.34375,455.50656 L 241.90625,455.50656 L 241.90625,319.10031 L 276.50000,319.10031 L 225.34375,128.13156 z "
+     id="path4585" />
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_48.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_48.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_48.svg	(revision 590)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.1623593,0,0,1.1802964,-250.75297,-236.30772)"
+       id="g2306">
+      <g
+         transform="matrix(4.849561,0,0,4.627945,-1251.39,-2038.366)"
+         id="g3653">
+        <path
+           d="M 341.93664 531.06036 A 3.9774756 3.9774756 0 1 1  333.98169,531.06036 A 3.9774756 3.9774756 0 1 1  341.93664 531.06036 z"
+           transform="matrix(1.990081,0,0,1.83135,-330.1242,-445.3484)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.40749419;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1872" />
+        <path
+           d="M 340.08929,518.86218 L 345.08929,518.86218 L 345.08929,513.86218 L 355.08929,513.86218 L 342.50001,498.86218 L 330.08929,513.86218 L 340.08929,513.86218 L 340.08929,518.86218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2760" />
+        <path
+           d="M 351.28444,525.18234 L 351.28444,530.18234 L 356.28444,530.18234 L 356.28444,540.18234 L 371.28444,527.59306 L 356.28444,515.18234 L 356.28444,525.18234 L 351.28444,525.18234 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2762" />
+        <path
+           d="M 344.95052,535.76482 L 339.91156,535.76482 L 339.91156,541.31603 L 329.83366,541.31603 L 342.52102,557.96972 L 355.02842,541.31603 L 344.95052,541.31603 L 344.95052,535.76482 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.05777824px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2764" />
+        <path
+           d="M 333.5,530.3979 L 333.5,525.3979 L 328.75254,525.27163 L 328.75254,515.27163 L 313.5,527.98718 L 328.67857,540.13004 L 328.5,530.3979 L 333.5,530.3979 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2766" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(157.0553,104.6305)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(62.98691,17.62937)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(67.75074,196.7066)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="matrix(0.9254454,0,0,1.083364,-3.0514849,80.324774)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_49.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_49.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_49.svg	(revision 590)
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-114.28571,-294.28571)"
+       id="g2377">
+      <g
+         id="g2409">
+        <g
+           transform="matrix(2.490164,0,0,2.501418,-469.1066,-790.4677)"
+           id="g4623">
+          <g
+             transform="translate(-76.14023,1.308439)"
+             id="g3669">
+            <path
+               d="M 394.5,542.86218 C 399.5,546.16789 404.5,545.60644 409.5,542.86218 L 404.5,532.86218 L 399.5,532.86218 L 394.5,542.86218 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1872" />
+            <path
+               d="M 418.20314 529.48199 A 16.541248 16.541248 0 1 1  385.12065,529.48199 A 16.541248 16.541248 0 1 1  418.20314 529.48199 z"
+               transform="matrix(0.996614,0,0,0.992796,1.297126,3.940326)"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.68700004;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path1874" />
+            <path
+               d="M 388.8336,522.36077 C 385.52789,527.36077 386.08934,532.36077 388.8336,537.36077 L 398.8336,532.36077 L 398.8336,527.36077 L 388.8336,522.36077 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1876" />
+            <path
+               d="M 414.78104,537.29082 C 418.08675,532.29082 417.5253,527.29082 414.78104,522.29082 L 404.78104,527.29082 L 404.78104,532.29082 L 414.78104,537.29082 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1880" />
+            <path
+               d="M 409.16055,516.6836 C 404.16055,513.37789 399.16055,513.93934 394.16055,516.6836 L 399.16055,526.6836 L 404.16055,526.6836 L 409.16055,516.6836 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1882" />
+            <path
+               d="M 387.61799,519.00176 L 391.15352,515.46623 L 386.00508,513.54361 L 387.61799,519.00176 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1884" />
+            <path
+               d="M 391.51153,543.95406 L 387.976,540.41854 L 386.05338,545.56698 L 391.51153,543.95406 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1886" />
+            <path
+               d="M 416.00774,518.95279 L 412.47221,515.41726 L 417.62065,513.49464 L 416.00774,518.95279 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1888" />
+            <path
+               d="M 411.93854,544.20659 L 415.47407,540.67107 L 417.39669,545.81951 L 411.93854,544.20659 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path1890" />
+            <path
+               d="M 425.40049 532.25989 A 21.844549 21.844549 0 1 1  381.71139,532.25989 A 21.844549 21.844549 0 1 1  425.40049 532.25989 z"
+               transform="matrix(1.056264,0,0,1.045084,-24.35541,-26.64766)"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.38103783;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path1892" />
+          </g>
+          <path
+             d="M 369.71582 530.49213 A 44.067905 44.067905 0 1 1  281.58001,530.49213 A 44.067905 44.067905 0 1 1  369.71582 530.49213 z"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.45099998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3702" />
+          <path
+             d="M 349.51278,531.12347 L 370,530.87093 L 370,531.37601"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3706" />
+          <path
+             d="M 301.78307,531.62854 L 281.83256,531.62854"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3708" />
+          <path
+             d="M 326.02673,507.36218 L 326.02673,485.16153"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3710" />
+          <path
+             d="M 326.27927,553.8519 L 326.53181,574.05495"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3712" />
+          <path
+             d="M 342.18918,513.69834 L 355,497.36218"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3714" />
+          <path
+             d="M 341.43156,547.36218 L 354.56354,563.95343"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3716" />
+          <path
+             d="M 309.35922,547.36218 L 295.46962,561.68058"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3718" />
+          <path
+             d="M 309.35922,514.20341 L 296.73231,496.02067"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3720" />
+          <path
+             d="M 382.59529 532.00732 A 52.149124 49.623745 0 1 1  278.29704,532.00732 A 52.149124 49.623745 0 1 1  382.59529 532.00732 z"
+             transform="matrix(0.999896,0,0,1.015158,-4.763756,-9.579154)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.45099998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3722" />
+          <path
+             d="M 369.29168,526.58285 C 370.34729,529.55251 370.14715,532.71945 369.29168,535.98933 L 377.41844,531.05128 L 369.29168,526.58285 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.08522195;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3724" />
+          <path
+             d="M 331.13369,574.1693 C 328.16284,575.13307 324.99464,574.95034 321.72345,574.1693 L 326.66347,581.58901 L 331.13369,574.1693 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.08144661;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4617" />
+          <path
+             d="M 281.74195,527.42468 C 280.68634,530.39434 280.88648,533.56128 281.74195,536.83116 L 273.61519,531.89311 L 281.74195,527.42468 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.08522195;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4619" />
+          <path
+             d="M 321.72193,487.17996 C 324.58099,486.21599 327.62997,486.39875 330.77807,487.17996 L 326.02393,479.75872 L 321.72193,487.17996 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07990775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4621" />
+        </g>
+        <path
+           d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+           transform="translate(154.4883,241.2908)"
+           style="font-size:56px;font-family:Arial Black"
+           id="flowRoot2798" />
+        <path
+           d="M 319.22941,359.11863 L 330.79582,359.11863 L 345.88957,381.29441 L 345.88957,359.11863 L 357.56535,359.11863 L 357.56535,399.20457 L 345.88957,399.20457 L 330.87785,377.19285 L 330.87785,399.20457 L 319.22941,399.20457 L 319.22941,359.11863 z "
+           style="font-size:56px;font-family:Arial Black"
+           id="flowRoot2790" />
+        <path
+           d="M 323.4638,704.14248 L 336.63778,703.32786 C 336.92306,705.43984 337.50381,707.04894 338.38006,708.15519 C 339.80645,709.94533 341.84419,710.84039 344.49328,710.84037 C 346.46985,710.84039 347.99306,710.3828 349.06291,709.46761 C 350.13268,708.55245 350.6676,707.49144 350.66761,706.2846 C 350.6676,705.13813 350.15816,704.11232 349.13932,703.20719 C 348.12042,702.30209 345.75664,701.44724 342.04798,700.64268 C 335.9755,699.29507 331.64531,697.50494 329.05739,695.27228 C 326.44907,693.03968 325.14493,690.19357 325.14493,686.73397 C 325.14493,684.46113 325.81228,682.31398 327.14702,680.29252 C 328.48172,678.27111 330.48889,676.68212 333.16854,675.52554 C 335.84814,674.36903 339.52116,673.79076 344.18761,673.79072 C 349.91363,673.79076 354.27947,674.84171 357.28518,676.94356 C 360.2908,679.0455 362.07892,682.38941 362.64952,686.97533 L 349.5978,687.7296 C 349.25136,685.73836 348.52288,684.29018 347.41233,683.38501 C 346.30174,682.47993 344.76834,682.02737 342.81213,682.02733 C 341.20231,682.02737 339.98984,682.36428 339.17476,683.03805 C 338.35966,683.7119 337.95211,684.53154 337.95212,685.49696 C 337.95211,686.20098 338.28833,686.83456 338.96081,687.39771 C 339.61286,687.98105 341.16154,688.52412 343.60686,689.02694 C 349.6589,690.31426 353.9942,691.61662 356.61272,692.93405 C 359.23119,694.25153 361.13646,695.88578 362.32858,697.83679 C 363.52062,699.78786 364.11666,701.97021 364.11669,704.38385 C 364.11666,707.21991 363.32194,709.8347 361.73255,712.22824 C 360.14307,714.62179 357.92193,716.43705 355.06913,717.67406 C 352.21627,718.91106 348.61967,719.52955 344.2793,719.52955 C 336.65815,719.52955 331.38041,718.08137 328.44608,715.18497 C 325.51172,712.28858 323.85097,708.60776 323.4638,704.14248 L 323.4638,704.14248 z "
+           style="font-size:56px;font-family:Arial Black"
+           id="flowRoot1980" />
+        <path
+           d="M 323.43359,303.29417 C 323.43359,298.8645 324.92838,295.21412 327.91797,292.343 C 330.90754,289.47193 334.9453,288.03639 340.03125,288.03636 C 345.84633,288.03639 350.23955,289.72258 353.21094,293.09495 C 355.59892,295.81112 356.79293,299.15617 356.79297,303.13011 C 356.79293,307.59626 355.31182,311.25577 352.34961,314.10862 C 349.38734,316.96149 345.29034,318.38792 340.05859,318.38792 C 335.39191,318.38792 331.61848,317.20303 328.73828,314.83323 C 325.20182,311.89834 323.43359,308.05199 323.43359,303.29417 L 323.43359,303.29417 z M 334.58984,303.26683 C 334.58983,305.85538 335.11392,307.76944 336.16211,309.00901 C 337.21027,310.24861 338.52733,310.8684 340.11328,310.86839 C 341.71743,310.8684 343.03448,310.25772 344.06445,309.03636 C 345.09438,307.81501 345.60935,305.85538 345.60938,303.15745 C 345.60935,300.64184 345.08982,298.7688 344.05078,297.53831 C 343.0117,296.30786 341.72654,295.69263 340.19531,295.69261 C 338.5729,295.69263 337.23306,296.31698 336.17578,297.56566 C 335.11848,298.81437 334.58983,300.71476 334.58984,303.26683 L 334.58984,303.26683 z "
+           transform="matrix(1.1070592,0,0,1.4000735,-189.30762,117.42833)"
+           style="font-size:56px;font-family:Arial Black"
+           id="flowRoot1988" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_1.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_1.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_1.svg	(revision 590)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="H:\"
+   sodipodi:docname="vettore.svg"
+   inkscape:export-filename="F:\ROSA VENTI\rosa11.png"
+   inkscape:export-xdpi="300"
+   inkscape:export-ydpi="300"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="290.92664"
+     inkscape:cy="239.69908"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1280"
+     inkscape:window-height="744"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     width="450px"
+     height="500px" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g2169">
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3222"
+         d="M 201.42859,445.93361 L 202.85716,86.6479 L 267.14287,192.36218 L 222.85716,163.79076 L 225.7143,445.21933 L 201.42859,445.93361 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         id="flowRoot3224"
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         style="font-size:56px;font-family:Arial Black"
+         transform="translate(-137.6462,-245.32652)" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_2.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_2.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_2.svg	(revision 590)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="H:\"
+   sodipodi:docname="gvsig_2def.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="414.14341"
+     inkscape:cy="202.33186"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1280"
+     inkscape:window-height="744"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     width="450px"
+     height="500px" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g2171"
+       transform="translate(-184.28571,-258.57143)">
+      <path
+         id="path1965"
+         d="M 391.34752,395.97405 L 391.34752,649.76343 L 412.5493,649.76343 L 412.5493,446.7319 L 428.2613,463.65123 L 391.34752,345.21606 L 391.34752,395.97405"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         transform="matrix(12.2222,0,0,15.88943,-3931.465,-7755.856)"
+         d="M 356.47322 530.55414 A 1.8973215 1.8973215 0 1 1  352.67858,530.55414 A 1.8973215 1.8973215 0 1 1  356.47322 530.55414 z"
+         sodipodi:ry="1.8973215"
+         sodipodi:rx="1.8973215"
+         sodipodi:cy="530.55414"
+         sodipodi:cx="354.5759"
+         id="path1967"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:6.4000001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         id="flowRoot3224"
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         style="font-size:56px;stroke:none;font-family:Arial Black"
+         transform="matrix(2.006144,0,0,2.033494,-291.9793,-277.2286)" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_3.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_3.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_3.svg	(revision 590)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-123.23861,-288.90363)"
+       id="g2173">
+      <g
+         transform="matrix(5.975106,0,0,7.360972,-1697.3027,-3373.5718)"
+         id="g2000">
+        <path
+           d="M 342.35227,539.59527 L 342.22208,517.36218 L 360.42957,547.53845 L 342.35227,539.59527 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1996" />
+        <path
+           d="M 342.57013,539.29649 L 341.82241,519.02014 L 324.09482,546.6962 L 342.57013,539.29649 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.97481376px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1998" />
+      </g>
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(2.106701,0,0,2.118369,-384.60868,-235.79393)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot3224" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_4.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_4.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_4.svg	(revision 590)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.5195424,0,0,0.6016449,24.376483,-53.793862)"
+       id="g2174">
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(3.640839,0,0,3.157632,-864.7505,-755.91207)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot7755" />
+      <g
+         transform="matrix(28.115021,0,0,17.267132,23470.126,-12571.168)"
+         id="g7864">
+        <path
+           d="M -825.62731,778.65596 L -821.18658,778.65596 L -821.18658,753.89884 L -818.82382,753.89884 L -823.42178,746.38114 L -828.35618,753.89884 L -825.62731,753.89884 L -825.62731,778.65596 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9378258px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7860" />
+        <path
+           d="M -823.16032,776.72383 L -818.16032,776.72383 L -818.16032,751.72383 L -815.5,751.72383 L -820.67703,744.13238 L -826.23287,751.72383 L -823.16032,751.72383 L -823.16032,776.72383 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7862" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_5.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_5.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_5.svg	(revision 590)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="gvsig_5.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Programmi\gvSIG_1.0.2\bin\gvSIG\extensiones\com.iver.cit.gvsig\northimages">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="744"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="0.754"
+     inkscape:cx="225"
+     inkscape:cy="250"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <g
+     id="layer1"
+     transform="matrix(1.3482061,0,0,1.3605643,-75.274102,-93.490101)">
+    <g
+       transform="translate(7.8428488,-24.243661)"
+       id="g2238">
+      <path
+         d="M 314.64648,483.62498 L 317.125,483.62498 L 320.35938,488.37693 L 320.35938,483.62498 L 322.86133,483.62498 L 322.86133,492.21482 L 320.35938,492.21482 L 317.14258,487.49803 L 317.14258,492.21482 L 314.64648,492.21482 L 314.64648,483.62498 z "
+         transform="matrix(2.124314,0,0,2.055934,-468.64243,-824.79604)"
+         style="font-family:Arial Black"
+         id="flowRoot2762" />
+      <path
+         d="M 152.38394,298.4068 L 208.753,206.53183 L 270.7589,298.4068 L 210.18157,267.78181 L 152.38394,298.4068 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.19645977px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1956" />
+      <path
+         d="M 587.50001,551.29077 C 587.50001,593.69835 553.12187,628.07648 510.71429,628.07648 C 468.30672,628.07648 433.92858,593.69835 433.92858,551.29077 C 433.92858,508.88319 468.30672,474.50505 510.71429,474.50505 C 553.12187,474.50505 587.50001,508.88319 587.50001,551.29077 z "
+         transform="translate(-298.57143,-277.85714)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.4000001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1958" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_6.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_6.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_6.svg	(revision 590)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(4.04061,34.34519)"
+       id="g2932">
+      <g
+         transform="matrix(0.8861662,0,0,0.915161,-92.98971,-183.78933)"
+         id="g2290">
+        <path
+           d="M 270.2595,427.02925 L 354.46793,353.89472 L 438.67635,427.02925 L 382.5374,427.02925 L 382.5374,609.86558 L 438.67635,639.11939 L 270.2595,639.11939 L 326.39845,609.86558 L 326.39845,427.02925 L 270.2595,427.02925 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:9.06167316px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1888" />
+        <g
+           id="g2285">
+          <path
+             d="M 355.47045,353.89472 L 354.46793,639.11939"
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.62466908;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1890" />
+          <path
+             d="M 390.80358 524.05859 A 5.9821429 5.9821429 0 1 1  378.8393,524.05859 A 5.9821429 5.9821429 0 1 1  390.80358 524.05859 z"
+             transform="matrix(6.012857,0,0,1.194511,-1959.737,-124.6887)"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2778" />
+          <path
+             d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+             transform="matrix(1.7905,0,0,2.461581,-266.6633,-444.6249)"
+             style="font-size:56px;font-family:Arial Black"
+             id="flowRoot2790" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simpleNorth.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simpleNorth.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/simpleNorth.svg	(revision 590)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:xml="http://www.w3.org/XML/1998/namespace"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docbase="D:\Download\datos\PRUEBAS\northimages"
+   sodipodi:docname="simpleNorth.svg"
+   inkscape:version="0.40+cvs"
+   sodipodi:version="0.32"
+   xml:space="preserve"
+   id="svg2"
+   viewBox="0 0 450 500"
+   height="500"
+   width="450"
+   version="1.0"><metadata
+   id="metadata8">
+  <rdf:RDF
+     id="RDF4">
+    <cc:Work
+       id="Work6"
+       rdf:about="">
+      <dc:format
+         id="format8">image/svg+xml</dc:format>
+      <dc:type
+         id="type10"
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+    </cc:Work>
+  </rdf:RDF>
+</metadata>
+<sodipodi:namedview
+   inkscape:current-layer="svg2"
+   inkscape:window-y="-4"
+   inkscape:window-x="-4"
+   inkscape:cy="250.00000"
+   inkscape:cx="225.00000"
+   inkscape:zoom="1.0780000"
+   id="base"
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1.0"
+   inkscape:pageopacity="0.0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1024"
+   inkscape:window-height="719" />
+<defs
+   id="defs17" />
+
+	<path
+   id="path14"
+   style="fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+   d="M 86.978411,340.24249 L 216.26541,24.408965 L 227.40954,52.147805 L 228.23782,52.147805 L 232.98160,38.582545 L 363.02159,355.02437 L 233.80989,320.22916 L 105.35116,355.02437 L 114.08576,333.12529 L 86.978411,340.24249 L 86.978411,340.24249 z M 216.26541,30.917865 L 90.969209,337.01846 L 216.26541,303.50069 L 340.65802,337.01846 L 216.26541,30.917865 z M 181.10115,475.59103 L 181.10115,373.76027 L 198.64563,373.76027 L 264.07976,452.41450 L 264.07976,373.76027 L 280.04298,373.76027 L 280.04298,475.59103 L 262.49850,475.59103 L 197.06437,396.93680 L 197.06437,475.59103 L 181.10115,475.59103 L 181.10115,475.59103 z " />
+
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_7.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_7.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_7.svg	(revision 590)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9234006,0,0,0.7812741,-84.804084,-133.6346)"
+       id="g2276">
+      <path
+         d="M 268.57143 508.07648 A 90 90 0 1 1  88.571426,508.07648 A 90 90 0 1 1  268.57143 508.07648 z"
+         transform="translate(150.3595,67.84687)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.49900007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 318.89766,490.44158 L 333.12943,490.44158 L 351.70139,517.72756 L 351.70139,490.44158 L 366.06774,490.44158 L 366.06774,539.76493 L 351.70139,539.76493 L 333.23037,512.68083 L 333.23037,539.76493 L 318.89766,539.76493 L 318.89766,490.44158 z "
+         transform="matrix(2.124314,0,0,2.055934,-398.6878,-753.803)"
+         style="font-size:68.90465546px;fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.20119524;stroke-miterlimit:4;stroke-opacity:1;font-family:Arial Black"
+         id="flowRoot2762" />
+      <path
+         d="M 309.64911,408.22596 L 309.64911,483.69446 L 347.04673,482.83685 L 347.04673,408.22596 L 378.32963,413.23515 L 326.34297,350.86646 L 276.90976,416.74838 L 309.64911,408.22596 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.9933877px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2030" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_8.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_8.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_8.svg	(revision 590)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.0247396,0,0,0.871256,-143.236,-191.78117)"
+       id="g2370">
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.371631,0,0,1.160507,-115.40596,-54.290579)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <g
+         transform="translate(363.33754,28.284271)"
+         id="g2609">
+        <path
+           d="M -41.201455,536.19158 L -6.1508242,536.19158 L -6.1508242,565.10357 C -29.628466,563.91471 -40.135073,553.43428 -41.201455,536.19158 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.80164814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4581" />
+        <path
+           d="M -1.3247646,501.25374 L -1.3247646,531.71371 L 32.624578,531.71371 C 31.228582,511.31098 18.922153,502.18046 -1.3247646,501.25374 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.85046959;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4583" />
+        <path
+           d="M 383.92112 546.93866 A 8.6178637 8.6178637 0 1 1  366.68539,546.93866 A 8.6178637 8.6178637 0 1 1  383.92112 546.93866 z"
+           transform="matrix(-4.422077,0,0,3.914321,1655.451,-1607.255)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.30874145;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4589" />
+      </g>
+      <g
+         transform="matrix(5.626187,0,0,7.650437,-3962.7077,-2984.5997)"
+         id="g3046">
+        <path
+           d="M 770.22709,459.23603 L 767.93272,459.23603 L 767.93272,431.42511 L 771.86653,444.68031 L 769.95447,442.01145 L 770.22709,459.23603 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2154" />
+        <path
+           d="M 765.66145,459.25661 L 767.95582,459.25661 L 767.95582,431.44569 L 764.02201,444.70089 L 765.93407,442.03203 L 765.66145,459.25661 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3044" />
+      </g>
+      <g
+         transform="matrix(2.707384,0,-4.040588e-3,4.785058,-1765.5387,-1460.0187)"
+         id="g5717">
+        <path
+           d="M 770,467.36218 L 775,467.36218 L 775,482.36218 L 761.90756,490.33856 L 770,472.36218 L 770,467.36218 z "
+           transform="translate(10.87201,-37.55286)"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4828" />
+        <path
+           d="M 790.55252,429.75678 L 785.55252,429.75678 L 785.55252,444.75678 L 798.64496,452.73316 L 790.55252,434.75678 L 790.55252,429.75678 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5715" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/complex.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/complex.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/complex.svg	(revision 590)
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+
+   Copyright 2001  The Apache Software Foundation 
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+-->
+<!-- ========================================================================= -->
+<!-- GVT under the spot-light!                                                 -->
+<!--                                                                           -->
+<!-- @author vincent.hardy@eng.sun.com                                         -->
+<!-- @version $Id$ -->
+<!-- ========================================================================= -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="450"
+   height="500"
+   viewBox="0 0 450 500"
+   id="svg2755"
+   sodipodi:version="0.32"
+   inkscape:version="0.40+cvs"
+   sodipodi:docname="complex.svg"
+   sodipodi:docbase="C:\Documents and Settings\fjp\Mis documentos">
+  <metadata
+     id="metadata2887">
+    <rdf:RDF
+       id="RDF2889">
+      <cc:Work
+         rdf:about=""
+         id="Work2891">
+        <dc:format
+           id="format2893">image/svg+xml</dc:format>
+        <dc:type
+           id="type2895"
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1152"
+     inkscape:window-height="804"
+     inkscape:zoom="1.2480000"
+     inkscape:cx="84.400960"
+     inkscape:cy="252.04184"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2755" />
+  <defs
+     id="defs2757" />
+  <path
+     transform="matrix(3.129734,0.000000,0.000000,3.129734,-240.0860,-132.5642)"
+     d="M 208.30013 122.23536 A 59.697727 59.697727 0 1 1  88.904675,122.23536 A 59.697727 59.697727 0 1 1  208.30013 122.23536 z"
+     sodipodi:ry="59.697727"
+     sodipodi:rx="59.697727"
+     sodipodi:cy="122.23536"
+     sodipodi:cx="148.60240"
+     id="path1751"
+     style="stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000px;stroke:#000000;fill-rule:evenodd;fill-opacity:0.75000000;fill:none"
+     sodipodi:type="arc" />
+  <path
+     transform="matrix(2.428890,0.000000,0.000000,2.428890,-135.9389,-46.89624)"
+     d="M 208.30013 122.23536 A 59.697727 59.697727 0 1 1  88.904675,122.23536 A 59.697727 59.697727 0 1 1  208.30013 122.23536 z"
+     sodipodi:ry="59.697727"
+     sodipodi:rx="59.697727"
+     sodipodi:cy="122.23536"
+     sodipodi:cx="148.60240"
+     id="path1753"
+     style="stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000px;stroke:#000000;fill-rule:evenodd;fill-opacity:0.75000000;fill:none"
+     sodipodi:type="arc" />
+  <g
+     transform="matrix(3.129734,0.000000,0.000000,3.129734,-351.7159,-2.378312)"
+     id="g3446">
+    <g
+       id="g1761"
+       transform="matrix(0.344216,-0.336555,0.344216,0.336555,114.7027,73.24620)"
+       style="font-size:12.000000">
+      <rect
+         style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:1.0000000pt"
+         id="rect1763"
+         width="18.802979"
+         height="17.907625"
+         x="81.479645"
+         y="102.58115" />
+      <g
+         id="g1765">
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37718001"
+           d="M -40.156300,69.061300 L -40.000000,-11.407500 L -40.000000,-11.407500 L -48.593700,68.748800 L -48.593700,68.748800 L -40.156300,69.061300 z "
+           id="path1767"
+           transform="matrix(1.060590,0.000000,0.000000,0.995220,133.2080,33.84540)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -32.860600,53.044200 L -41.719100,61.902700 L -32.860600,70.761200"
+           id="path1769"
+           transform="matrix(1.030050,0.000000,0.000000,1.029970,124.7050,38.71900)" />
+        <path
+           style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -55.078900,64.794300 L -46.010100,55.504600 M -55.124700,55.565000 L -54.738100,-24.519200 L -54.738100,-24.519200 L -45.900500,55.475000 L -45.955800,55.364500"
+           id="path1771"
+           transform="matrix(1.000070,0.000000,0.000000,1.000000,145.7740,46.80670)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37718001"
+           d="M -40.156300,69.061300 L -40.000000,-11.407500 L -40.000000,-11.407500 L -48.593700,68.748800 L -48.593700,68.748800 L -40.156300,69.061300 z "
+           id="path1773"
+           transform="matrix(-1.948220e-16,-1.060520,0.995290,-1.828130e-16,13.21300,69.00150)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -32.860600,53.044200 L -41.719100,61.902700 L -32.860600,70.761200"
+           id="path1775"
+           transform="matrix(-1.892110e-16,-1.029980,1.030040,-1.891960e-16,18.08700,77.50380)" />
+        <path
+           style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -55.078900,64.794300 L -46.010100,55.504600 M -55.124700,55.565000 L -54.738100,-24.519200 L -54.738100,-24.519200 L -45.900500,55.475000 L -45.955800,55.364500"
+           id="path1777"
+           transform="matrix(-1.837040e-16,-1.000000,1.000070,-1.836910e-16,26.17520,56.43630)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37718001"
+           d="M -40.156300,69.061300 L -40.000000,-11.407500 L -40.000000,-11.407500 L -48.593700,68.748800 L -48.593700,68.748800 L -40.156300,69.061300 z "
+           id="path1779"
+           transform="matrix(-1.060590,1.298720e-16,-1.218850e-16,-0.995220,48.29300,189.1050)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -32.860600,53.044200 L -41.719100,61.902700 L -32.860600,70.761200"
+           id="path1781"
+           transform="matrix(-1.030050,1.261320e-16,-1.261400e-16,-1.029970,56.79590,184.2320)" />
+        <path
+           style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -55.078900,64.794300 L -46.010100,55.504600 M -55.124700,55.565000 L -54.738100,-24.519200 L -54.738100,-24.519200 L -45.900500,55.475000 L -45.955800,55.364500"
+           id="path1783"
+           transform="matrix(-1.000070,1.224610e-16,-1.224700e-16,-1.000000,35.72690,176.1440)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37718001"
+           d="M -40.156300,69.061300 L -40.000000,-11.407500 L -40.000000,-11.407500 L -48.593700,68.748800 L -48.593700,68.748800 L -40.156300,69.061300 z "
+           id="path1785"
+           transform="matrix(6.494050e-17,1.060520,-0.995290,6.093760e-17,168.4440,153.9490)" />
+        <path
+           style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -32.860600,53.044200 L -41.719100,61.902700 L -32.860600,70.761200"
+           id="path1787"
+           transform="matrix(6.307040e-17,1.029980,-1.030040,6.306540e-17,163.5700,145.4470)" />
+        <path
+           style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.37500000"
+           d="M -55.078900,64.794300 L -46.010100,55.504600 M -55.124700,55.565000 L -54.738100,-24.519200 L -54.738100,-24.519200 L -45.900500,55.475000 L -45.955800,55.364500"
+           id="path1789"
+           transform="matrix(6.123460e-17,1.000000,-1.000070,6.123030e-17,155.4820,166.5140)" />
+      </g>
+    </g>
+    <rect
+       transform="matrix(0.999931,1.175590e-2,1.077101e-2,0.999942,0.000000,0.000000)"
+       style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:1.0000000pt"
+       id="rect1859"
+       width="9.0519810"
+       height="9.0064220"
+       x="178.93785"
+       y="73.929436" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18652663"
+       d="M 184.12062,76.354539 L 183.76659,37.804685 L 183.76659,37.804685 L 179.81126,76.156351 L 179.81126,76.156351 L 184.12062,76.354539 z "
+       id="path1863" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18592222"
+       d="M 184.18545,71.915771 L 179.84245,76.258430 L 184.28430,80.699948"
+       id="path1865" />
+    <path
+       style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18051170"
+       d="M 184.20455,80.699080 L 188.52005,76.276354 M 184.13250,76.256050 L 183.88479,37.707373 L 183.88479,37.707373 L 188.57265,76.262698 L 188.54543,76.209207"
+       id="path1867" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18652704"
+       d="M 179.99612,80.645497 L 141.44173,80.131846 L 141.44173,80.131846 L 179.89487,84.951202 L 179.89487,84.951202 L 179.99612,80.645497 z "
+       id="path1869" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18592241"
+       d="M 175.55442,80.480725 L 179.99624,84.922292 L 184.33920,80.579584"
+       id="path1871" />
+    <path
+       style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18051170"
+       d="M 184.34021,80.659316 L 179.81891,76.243468 M 179.89737,80.631364 L 141.34178,80.011405 L 141.34178,80.011405 L 179.80407,76.190549 L 179.75117,76.216571"
+       id="path1873" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18652663"
+       d="M 184.34406,84.923112 L 184.69809,123.47297 L 184.69809,123.47297 L 188.65342,85.121302 L 188.65342,85.121302 L 184.34406,84.923112 z "
+       id="path1875" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18592222"
+       d="M 184.27923,89.362262 L 188.62223,85.019602 L 184.18038,80.578084"
+       id="path1877" />
+    <path
+       sodipodi:nodetypes="ccccccc"
+       style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18051170"
+       d="M 184.26013,80.578722 L 179.94463,85.001452 M 184.33218,85.021752 L 184.57989,123.57043 L 184.57989,123.57043 L 179.89203,85.015102 L 179.86352,84.957134"
+       id="path1879" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18652704"
+       d="M 188.54366,80.633095 L 227.09805,81.146746 L 227.09805,81.146746 L 188.64491,76.327395 L 188.64491,76.327395 L 188.54366,80.633095 z "
+       id="path1881" />
+    <path
+       style="font-size:12.000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18592241"
+       d="M 192.98536,80.797987 L 188.54354,76.356425 L 184.20058,80.699128"
+       id="path1883" />
+    <path
+       style="font-size:12.000000;fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.18051170"
+       d="M 184.19967,80.619186 L 188.72097,85.035032 M 188.64251,80.647138 L 227.19810,81.267097 L 227.19810,81.267097 L 188.73581,85.087952 L 188.78871,85.061932"
+       id="path1885" />
+  </g>
+  <text
+     style="font-size:47.825783;font-style:italic;font-weight:normal;stroke-width:1.0000000pt;font-family:Palatino Linotype"
+     x="212.39168"
+     y="97.125954"
+     id="text1887"
+     transform="scale(0.966073,1.035119)"><tspan
+       x="212.39168"
+       y="97.125954"
+       sodipodi:role="line"
+       id="tspan1889">N</tspan></text>
+  <text
+     style="font-size:52.966011;font-weight:bold;stroke-width:1.0000000pt;font-family:Palatino Linotype"
+     x="199.16826"
+     y="452.17377"
+     id="text1891"
+     transform="scale(1.044019,0.957837)"><tspan
+       x="199.16826"
+       y="452.17377"
+       sodipodi:role="line"
+       id="tspan1893">S</tspan></text>
+  <text
+     style="font-size:52.328350;font-style:italic;font-weight:normal;stroke-width:1.0000000pt;font-family:Palatino Linotype"
+     x="40.926407"
+     y="259.45203"
+     id="text1895"
+     transform="scale(0.967902,1.033163)"><tspan
+       x="40.926407"
+       y="259.45203"
+       sodipodi:role="line"
+       id="tspan1897">O</tspan></text>
+  <text
+     style="font-size:54.677143;font-style:italic;font-weight:normal;stroke-width:1.0000000pt;font-family:Palatino Linotype"
+     x="369.36926"
+     y="271.09772"
+     id="text1899"
+     transform="scale(1.011346,0.988781)"><tspan
+       x="369.36926"
+       y="271.09772"
+       sodipodi:role="line"
+       id="tspan1901">E</tspan></text>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_9.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_9.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_9.svg	(revision 590)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.3008265,0,0,1.1091018,-52.596423,-15.857457)"
+       id="g2267">
+      <path
+         d="M 204.76873,366.12499 L 220.31161,366.12499 L 220.31161,196.11037 L 243.07083,238.61402 L 206.98915,68.599398 L 204.76873,366.12499 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.63491201px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(2.22973,0,0,2.3197728,-555.84506,-391.94616)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_10.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_10.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_10.svg	(revision 590)
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(9.9999996,-8.5714284)"
+       id="g2421">
+      <path
+         d="M 192.21377,222.50546 L 272.13382,222.50546 C 258.81383,206.42742 258.81383,189.75388 272.13382,172.48489 L 313.52105,172.48489 C 271.61562,159.8309 243.63861,147.1769 232.17374,134.52287 C 226.08119,155.03599 192.2695,164.94696 152.25369,172.48489 L 192.21377,172.48489 C 181.48991,189.15839 188.45745,205.83196 192.21377,222.50546 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:8.94164085px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 167.98065,223.03506 C 168.29339,223.95394 169.73159,224.74802 170.9564,225.54571 C 172.26781,226.51525 174.28937,226.91162 176.79205,227.34859 C 178.64749,227.45078 180.55298,227.48053 182.41431,227.52071 C 182.67753,227.56744 182.94076,227.61417 183.20398,227.66091 L 171.40965,230.47679 C 171.21587,230.46098 171.0221,230.44521 170.82822,230.42941 C 168.88661,230.38145 166.91017,230.40754 165.05773,230.15541 C 162.49911,229.58616 160.22429,229.06905 158.84954,228.03347 C 157.48154,227.16482 156.03584,226.3065 155.21122,225.3472 L 167.98065,223.03506 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1921" />
+      <path
+         d="M 203.0194,229.79735 C 206.88579,228.8782 211.64035,228.02117 194.37669,231.50224 C 191.62805,232.05648 199.78374,230.33895 202.49766,229.76342 C 210.63418,227.69271 219.54793,226.32166 228.5949,224.92722 C 231.58652,224.42931 234.58146,224.51218 237.68539,224.55656 C 240.01401,225.13262 240.10576,225.93561 240.58194,226.84756 C 240.73134,228.01424 240.61677,229.18335 240.57315,230.35068 C 240.86092,231.57574 240.3409,232.76181 239.77833,233.95279 C 236.74856,236.12035 228.5277,236.535 223.09911,237.52065 C 221.16822,237.56674 219.23154,237.5485 217.29787,237.544 C 211.75513,238.01521 203.7885,239.99611 224.37858,235.82034 C 222.56612,236.34925 222.33184,237.05089 221.82221,237.79995 C 221.46028,238.09371 222.35349,238.31671 222.56162,238.51914 L 210.36463,241.11846 C 209.98919,240.77895 209.01313,240.47947 209.19319,240.05926 C 209.54826,239.23079 209.62479,238.40709 211.25966,237.72526 C 218.23202,236.22174 221.68953,234.80018 228.76199,234.58808 C 230.65012,234.584 232.55293,234.60952 234.42112,234.49221 C 231.97503,235.04101 224.74984,236.72795 226.94557,236.05869 C 227.79526,234.93044 228.56179,233.81168 228.14723,232.59773 C 228.13769,231.4544 228.15923,230.31038 228.04605,229.16766 C 227.76407,228.46873 227.95581,227.82319 226.10498,227.43619 C 223.19921,227.49146 220.33085,227.51972 217.62283,228.00411 C 212.81586,228.73404 195.67096,231.67668 215.26666,228.01572 C 207.49487,229.64009 199.8772,231.78926 191.44338,232.78615 L 203.0194,229.79735 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1923" />
+      <path
+         d="M 282.33947,229.79499 C 284.06769,229.87638 285.37728,229.54781 286.89769,229.28988 C 283.35315,230.0082 272.74193,232.17706 276.26386,231.4448 C 281.26675,230.40465 296.37487,227.34524 291.34754,228.37043 C 272.21763,232.27148 279.29931,230.84036 283.45915,229.95797 C 324.23816,221.44646 276.44059,231.61501 289.80613,228.61925 C 291.54464,228.1499 291.68665,227.53933 292.12779,226.83392 C 295.33686,224.37062 303.00008,223.15241 309.48758,224.0353 C 311.45823,224.66023 311.72778,225.44634 312.25777,226.30132 L 299.74213,228.63136 C 299.37345,227.91483 299.30625,227.26991 297.61651,226.76434 C 300.06109,226.06853 305.97016,223.60358 304.88328,224.64747 C 304.50259,225.38837 304.36712,226.15301 302.93513,226.74983 C 295.23387,228.65989 272.59124,232.98846 296.57486,228.15771 C 249.97188,237.94928 315.77948,224.07552 275.8806,232.40261 C 274.15913,232.58448 272.62233,232.88479 270.74513,232.78851 L 282.33947,229.79499 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1925" />
+      <path
+         d="M 293.4825,219.52611 C 292.42252,219.56854 291.57733,219.29553 290.62496,219.18028 L 302.41608,216.37674 C 303.28924,216.4279 304.12929,216.63623 305.07684,216.5326 L 293.4825,219.52611 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1927" />
+      <path
+         d="M 138.31572,229.15616 C 138.6245,229.50424 139.96506,229.61301 140.74177,229.81868 C 142.54179,230.11957 144.34643,230.39414 146.19254,230.65305 C 148.40638,230.77329 150.502,231.06005 152.6332,231.30426 C 153.54838,231.46095 154.57395,231.37236 155.50671,231.40512 L 144.02018,234.35879 C 143.00726,234.28616 141.94804,234.27512 140.96919,234.13998 C 138.82417,233.88812 136.68503,233.64493 134.47688,233.47522 C 132.60118,233.18 130.71531,232.89153 128.86769,232.57145 C 127.62916,232.23579 126.12976,232.03683 125.5464,231.4683 L 138.31572,229.15616 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1929" />
+      <path
+         d="M 162.84261,201.18277 C 187.42888,196.75566 160.64421,201.88631 155.97314,202.88743 C 142.26228,206.12508 128.8529,209.47559 115.84008,212.9447 C 109.60509,214.66577 103.59914,216.45098 97.039304,218.06799 C 90.834004,219.35042 83.900984,220.30263 77.271264,221.38578 C 99.936394,217.65079 77.661594,221.3261 70.340594,222.43778 C 88.053854,219.02417 81.290164,220.49413 77.599434,221.5729 C 75.926414,222.04126 75.039524,222.65804 74.004954,223.24591 C 72.812614,223.75075 72.260234,224.31017 71.685654,224.88045 C 75.102654,227.63843 83.798944,229.81834 90.383754,231.99051 C 108.79441,237.91169 124.40347,244.47289 139.29885,251.14552 C 147.06024,254.67637 155.03342,258.16483 163.94814,261.4627 C 173.06049,264.8153 181.14373,268.37996 189.99768,271.78836 C 195.08417,273.43356 199.35461,275.82436 206.78986,276.5234 C 189.33276,279.88861 209.62382,274.55736 215.90211,272.7312 C 230.04672,268.78795 243.60603,264.68169 256.76643,260.46665 C 267.97226,256.66138 279.97205,253.06636 292.22918,249.54397 C 304.47537,246.04595 316.72852,242.55205 328.69284,238.97378 C 333.4355,237.57927 337.67926,236.05964 341.77908,234.50886 C 343.52134,233.96638 344.87208,233.34629 346.25316,232.73096 C 347.12836,231.85732 345.35362,231.18893 343.97619,230.42537 C 341.49463,229.02941 338.86645,227.65649 336.22798,226.28483 C 334.43599,225.32469 331.84018,224.52334 329.59548,223.65291 C 326.61565,222.49845 323.87419,221.2879 321.15566,220.08028 C 316.97556,218.00405 312.1672,216.04367 307.53579,214.05127 C 304.39691,212.62035 300.56203,211.35403 296.23189,210.2168 C 291.80754,209.22349 287.04077,208.37697 282.61235,207.39075 C 279.93111,206.47994 278.75378,205.32011 276.44617,204.32925 C 274.89082,203.72869 272.61557,203.38877 270.45843,203.00458 C 268.4238,202.6522 266.65185,202.80699 264.44959,202.91352 C 262.06888,203.02705 259.66138,203.05859 257.25805,203.0998 C 255.38965,203.11808 253.51995,203.11477 251.65091,203.11553 C 251.35521,203.11542 251.05961,203.11526 250.76391,203.11515 L 261.37341,200.89434 C 261.66858,200.89442 261.96363,200.89445 262.2588,200.89453 C 264.10791,200.89217 265.95799,200.89487 267.80571,200.86966 C 270.1727,200.82049 272.54452,200.78145 274.88418,200.65725 C 277.33841,200.61581 279.30263,200.51469 281.45548,200.96621 C 283.7004,201.38985 286.03952,201.77658 287.61759,202.42616 C 289.75458,203.41127 290.91155,204.54558 293.52097,205.43377 C 297.90931,206.42738 302.61736,207.29481 307.00141,208.29466 C 311.4219,209.45072 315.36813,210.73028 318.43198,212.21544 C 322.89181,214.23729 327.55955,216.22059 331.91338,218.26212 C 334.76953,219.44331 337.7695,220.59369 340.79413,221.73934 C 343.00153,222.63648 345.51503,223.47641 347.29545,224.4546 C 349.84614,225.83742 352.53176,227.19964 355.12886,228.5753 C 356.75398,229.41656 358.70888,230.17906 358.13645,231.17488 C 356.82214,231.83649 355.63045,232.51786 353.61189,233.0448 C 349.26471,234.64216 344.80317,236.21378 339.78667,237.64413 C 327.53233,241.25024 314.93321,244.75393 302.52261,248.31509 C 290.42625,251.81962 278.76182,255.44055 267.49522,259.16826 C 254.21724,263.35775 240.58516,267.44969 226.6145,271.44825 C 217.01374,274.3243 209.59606,277.24027 196.14446,278.66903 C 189.07414,277.5236 185.05438,275.29777 179.96136,273.50296 C 171.19197,270.07605 162.7081,266.58847 153.52041,263.25213 C 144.6507,259.92718 137.1013,256.36693 129.8565,252.72963 C 115.53088,245.96513 100.14656,239.35176 80.867674,233.65571 C 73.531874,231.483 64.264124,229.38598 59.980924,226.56724 C 60.393874,225.9393 60.670714,225.33608 62.118124,224.79928 C 63.149054,224.1902 64.046664,223.55856 65.489364,223.01754 C 70.016594,221.63034 72.536204,220.97917 80.535214,220.08009 C 96.806944,217.69996 49.314084,225.16591 87.357844,219.04115 C 99.880764,217.04445 74.885624,221.21077 85.105534,219.43592 C 92.155814,217.83216 98.525624,216.01012 105.02298,214.22091 C 118.04791,210.77873 131.44636,207.45241 144.91575,204.15618 C 153.89274,202.16408 163.00005,200.26625 173.18278,198.79929 L 162.84261,201.18277 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1933" />
+      <path
+         d="M 173.35447,253.60167 C 176.08608,253.57094 178.42027,253.09195 180.79552,252.66447 C 159.72142,257.4547 177.35998,252.99057 181.89557,251.74928 C 189.63553,249.74907 197.65586,247.71264 206.91247,246.77368 C 210.69023,246.67241 213.84872,247.26405 217.03207,247.89911 C 219.91244,248.60204 220.14694,249.54724 220.73844,250.69633 C 221.10242,252.74354 220.31113,254.77494 219.42778,256.78996 C 219.28535,257.22465 218.8486,257.63359 218.55901,258.0554 L 205.88315,260.1829 C 206.22687,259.76954 206.7724,259.37763 206.91419,258.94287 C 207.97384,256.98611 208.93875,255.01077 208.42023,253.00649 C 207.86913,252.02385 207.71608,251.20856 205.22616,250.62251 C 202.21729,250.03575 199.3455,249.54629 195.80353,249.78765 C 184.98043,251.17908 211.27552,246.28761 194.64303,249.94346 C 186.66557,252.08581 179.387,254.34231 169.92418,255.7671 C 167.29268,256.16435 164.72356,256.61686 161.77846,256.59047 L 173.35447,253.60167 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1935" />
+      <path
+         d="M 204.02493,273.5121 C 205.72882,268.78056 211.38988,264.32253 216.49447,259.95186 C 223.38881,253.98909 232.15466,248.46721 245.13179,243.94058 C 254.9454,241.09424 266.08521,238.61002 278.78915,237.9852 C 280.95025,237.88857 283.12593,237.90552 285.29658,237.89055 L 273.975,240.81571 C 271.89567,240.83304 269.80959,240.81414 267.74344,240.92482 C 248.64836,242.26213 275.74973,238.43802 257.17274,242.17937 C 243.743,246.62811 234.47267,252.11998 227.50406,258.14689 C 222.73889,262.30975 217.26529,266.6523 216.7741,271.20361 L 204.02493,273.5121 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1937" />
+      <path
+         d="M 140.3734,249.45153 C 137.63183,249.33354 135.68111,248.58433 133.58474,247.99558 C 125.88251,245.35475 119.38869,242.31046 112.56895,239.38855 C 109.47723,238.033 106.42753,236.66633 103.43998,235.28168 L 115.1011,232.828 C 117.90194,234.24369 120.78284,235.63802 123.83983,236.9861 C 130.58594,239.89964 137.15982,242.91658 145.26064,245.37859 C 147.43579,245.89368 149.22028,246.52501 151.96774,246.45801 L 140.3734,249.45153 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1943" />
+      <path
+         d="M 92.383024,234.93722 C 89.989454,236.77362 86.107634,238.47782 82.907244,240.1848 C 76.019014,243.8448 69.280834,247.53606 63.536924,251.44062 C 60.363864,253.70089 57.560774,256.0184 54.929374,258.3628 C 52.945114,259.80192 52.937394,260.58464 54.781154,262.01869 C 61.874194,266.88288 67.812624,271.93995 74.751014,276.83069 C 81.498724,281.74836 93.248264,285.1515 105.58308,288.2258 C 111.87241,289.83588 118.37009,291.30223 125.63129,292.25878 C 129.75747,292.33454 133.3333,292.73597 137.12746,293.29067 C 142.94735,294.32012 149.37043,294.72811 155.55151,295.41356 C 166.29605,296.53068 176.58155,298.20963 187.48118,299.13351 C 191.51798,299.45778 195.60633,299.35597 199.67871,299.24247 C 202.91994,298.93884 205.83867,299.09081 208.97433,299.41459 C 223.28989,297.22105 194.50316,303.25356 217.01106,297.64248 C 232.08071,293.92489 247.27521,290.27019 261.15156,285.99554 C 271.12336,282.80397 277.56284,278.67741 284.06276,274.5839 C 293.27597,268.86043 304.5625,263.60832 316.04152,258.44397 C 321.4953,255.94965 327.59653,253.6572 333.80462,251.40291 C 336.85989,250.70444 337.42236,249.69571 338.17184,248.80253 C 336.14213,248.03778 334.00043,247.31211 331.89259,246.57487 C 330.07391,245.86496 328.08343,245.2331 326.01107,244.62143 C 324.9586,244.28363 324.08297,243.88913 323.14185,243.51473 L 335.25621,240.91008 C 336.16528,241.27046 336.9914,241.65689 338.03358,241.9729 C 340.0649,242.60545 342.00704,243.25795 343.83258,243.96724 C 346.05959,244.72933 348.34009,245.47613 350.41717,246.29036 C 350.88886,247.75666 350.23508,248.39272 346.46408,249.53681 C 340.00284,251.83002 333.63067,254.15587 327.80703,256.6594 C 316.10529,261.72012 304.7835,266.93369 295.92419,272.69807 C 289.52855,276.88626 282.9612,281.03251 272.92971,284.29561 C 259.12324,288.58484 243.91963,292.21727 228.94891,295.96768 C 219.5804,298.372 209.04411,302.08456 197.3353,302.23927 C 194.32857,302.07389 191.50469,301.91979 188.44277,302.20365 C 184.32226,302.27251 180.21505,302.33136 176.21287,301.88289 C 165.5904,300.71716 155.40939,299.06754 144.62348,298.07248 C 138.19547,297.47204 131.51784,297.1499 125.59978,296.01983 C 121.78344,295.54618 118.03462,295.28783 114.06674,295.03516 C 107.0559,293.90947 100.81609,292.33476 94.662244,290.69269 C 82.344884,287.49868 70.253784,284.11393 63.733494,279.05866 C 56.971834,274.15047 51.064914,269.07452 42.823054,264.44258 C 40.403334,262.90988 39.998954,262.02707 42.354154,260.43641 C 45.150384,258.0506 48.104924,255.69055 51.392124,253.38271 C 57.202374,249.47412 64.057164,245.79149 70.776374,242.07577 C 73.682034,240.46222 76.421784,238.78963 79.613604,237.24936 L 92.383024,234.93722 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1945" />
+      <path
+         d="M 99.225274,257.95306 C 98.116324,257.81843 97.237154,258.12647 96.263244,258.21144 C 93.357904,258.34399 101.41649,257.22111 103.99023,256.72407 C 102.07563,257.08045 100.57709,257.61775 99.010704,258.13047 C 97.323214,258.79825 95.775804,259.5104 94.164944,260.20248 C 92.516144,260.76776 91.414264,261.45881 90.264574,262.14495 C 89.190884,262.6483 90.005104,263.20445 90.032654,263.65033 C 91.059184,263.91881 92.244774,264.11899 93.302924,264.35947 C 95.086014,264.52976 96.690344,264.27968 98.403984,264.09374 C 100.57044,264.00027 102.65299,263.81902 104.74078,263.63955 C 106.61412,263.32587 108.63825,263.26676 110.65199,263.17173 C 112.80184,263.00323 114.61559,263.22521 116.58667,263.39184 C 119.70593,264.02145 122.01601,264.96928 124.26136,265.93597 C 125.79923,266.68323 126.31443,267.56833 126.93948,268.44475 C 127.46797,269.13382 127.53624,269.84509 127.67589,270.5521 C 127.55553,271.29548 127.89314,272.01681 128.17383,272.74716 C 128.87037,273.55624 130.18725,274.2797 131.32032,275.01908 C 132.45971,275.63948 133.36985,276.30326 134.32029,276.95896 C 135.12015,277.62499 135.1747,278.33923 135.34672,279.04704 C 135.29292,279.79305 135.45915,280.53155 135.59794,281.27284 C 135.92461,281.99063 136.11828,282.71496 136.32567,283.43743 C 136.12579,284.02104 137.5911,284.51552 138.08079,284.84916 C 139.0143,284.30639 140.687,284.26202 142.18425,284.04401 C 146.74557,283.99674 163.32201,280.31549 134.91255,285.90048 C 136.12085,285.40786 135.92794,284.7963 136.15965,284.1943 C 136.37551,283.59759 136.64248,283.00096 136.90989,282.40642 C 137.09916,281.75453 137.06958,281.09878 137.10634,280.44464 C 138.11819,277.68559 139.86003,278.69333 151.04324,276.50744 C 152.37298,276.85529 153.91792,276.8746 155.45173,276.9996 C 157.68207,276.97386 159.79355,277.13904 161.9061,277.28754 C 163.55651,277.70928 163.79144,278.37047 164.43172,279.00385 C 164.34833,279.67803 165.99874,280.02374 166.7448,280.42788 C 157.0418,281.43574 155.88976,284.30166 154.62218,281.0917 C 154.14739,280.3514 153.13661,279.68934 152.29538,279.00225 C 151.45448,278.53214 150.26578,278.18079 149.16111,277.7976 C 147.89633,277.42271 147.03248,276.93813 146.05,276.47816 C 145.20834,276.07958 144.22146,275.72289 143.31143,275.34701 C 142.20633,274.93232 141.0619,274.5321 139.94823,274.11993 C 138.26203,273.78168 137.29905,273.24591 136.16694,272.71376 C 134.95617,272.07618 134.73056,271.34705 134.36381,270.61517 C 134.55286,269.98655 133.62986,269.54291 132.99173,269.014 C 132.1803,268.50443 130.78572,268.22316 129.57849,267.86145 C 127.81233,267.40197 127.31664,266.72711 126.50863,266.05495 C 126.0213,265.21738 125.3746,264.39409 124.76573,263.56768 C 124.10606,262.86772 123.97873,262.13645 123.77703,261.40941 C 124.70839,260.66318 122.53828,260.67502 122.02094,260.36831 C 120.11245,260.4609 118.72462,260.10459 117.07068,259.9073 C 115.47107,259.52659 114.03073,259.07807 112.55684,258.64126 C 111.51894,258.22641 109.99425,258.20516 108.70588,258.00159 C 106.95173,257.91699 105.1786,257.93886 103.41405,257.92815 C 102.13983,257.92861 100.86561,257.93067 99.591494,257.93223 L 111.04801,254.97223 C 112.32587,254.97143 113.60384,254.96823 114.88171,254.97211 C 116.72139,255.00026 118.58551,254.9704 120.38725,255.13482 C 121.83638,255.38536 123.40009,255.54349 124.59243,255.969 C 125.99912,256.38411 127.33239,256.83445 128.94186,257.15438 C 130.54361,257.28209 132.15822,257.45988 133.80992,257.55033 C 135.19785,258.0706 136.60443,258.20912 136.36114,259.09944 C 136.54592,259.79175 136.55053,260.49376 137.17493,261.16322 C 137.77652,261.98902 138.43008,262.81017 138.8963,263.64812 C 139.60462,264.22384 140.00021,264.79503 141.58599,265.16619 C 142.88261,265.57715 144.35833,265.92054 145.25475,266.47394 C 146.00252,267.07172 147.10826,267.57572 146.91727,268.28475 C 147.25016,268.93668 147.24684,269.604 148.38451,270.17283 C 149.56421,270.63722 150.48389,271.16172 152.06399,271.49384 C 153.17841,271.89942 154.31019,272.29865 155.41293,272.7082 C 156.40034,273.10605 157.42667,273.49317 158.30637,273.92386 C 159.22284,274.34651 160.01251,274.79719 161.21417,275.13331 C 162.40512,275.56803 163.71299,275.96592 164.59066,276.4991 C 165.5426,277.22275 166.45317,277.94591 167.03021,278.72384 C 168.5669,281.577 166.78252,282.06516 154.82807,283.18793 C 153.53005,282.63685 152.2957,282.168 151.97074,281.4026 C 151.52232,280.93166 151.43626,280.38328 150.15132,280.10974 C 148.06952,280.04012 145.96147,279.9526 143.8636,279.89261 C 142.55787,279.76452 141.00135,279.57675 139.74213,279.58403 C 152.24662,277.01225 152.61648,275.93881 149.73151,278.16144 C 149.71061,278.82827 149.73644,279.49593 149.60633,280.16173 C 149.38576,280.75204 149.29809,281.34962 148.80347,281.92439 C 148.70519,282.60405 148.76167,283.29446 147.98121,283.93283 C 143.00833,285.02272 137.47353,286.83204 130.98646,287.12905 C 129.40272,287.39817 127.88017,287.798 126.14798,287.6177 C 125.21319,287.04339 123.85323,286.54357 123.81593,285.79395 C 123.59472,285.06904 123.38251,284.33948 123.09464,283.61534 C 122.90065,282.86087 122.63388,282.11334 122.75199,281.35092 C 122.60023,280.70249 122.67686,280.04054 121.977,279.42326 C 121.05978,278.78546 120.17526,278.14061 119.0901,277.53309 C 117.88822,276.74648 116.54273,275.9732 115.74941,275.1199 C 115.36325,274.36665 114.89714,273.62895 115.07859,272.85415 C 114.95191,272.17822 114.97388,271.49517 114.49116,270.83329 C 113.9556,270.01652 113.54993,269.18588 112.20144,268.4767 C 110.09628,267.56209 107.94718,266.6838 104.82888,266.1897 C 103.00656,266.15519 101.14502,266.02711 99.289794,266.17675 C 97.362124,266.33329 95.392864,266.42763 93.562294,266.71976 C 91.433764,266.84838 89.286914,266.96584 87.183794,267.1466 C 85.150874,267.29357 83.480844,267.49859 81.473754,267.1573 C 80.247984,266.85988 78.926924,266.60092 77.818504,266.23971 C 77.374904,265.55395 76.332074,265.03075 77.417884,264.25389 C 78.444524,263.49776 79.372774,262.74645 81.174624,262.15862 C 82.801884,261.4641 84.449834,260.78105 85.981274,260.06552 C 87.497284,259.5224 88.861314,258.92154 90.787274,258.546 C 96.278994,257.37243 101.37995,255.89085 107.43145,255.09053 C 108.55294,255.04437 109.65504,254.8991 110.81962,254.95955 L 99.225274,257.95306 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1947" />
+      <path
+         d="M 91.426054,274.04433 C 91.766014,274.43281 92.259564,274.85809 92.700054,275.25317 C 93.351904,275.78551 94.536304,276.16386 95.584924,276.58647 C 97.274024,277.1433 98.655744,277.8008 100.07615,278.44138 C 100.5474,278.62321 100.861,278.84389 101.25337,279.04517 L 89.025294,281.58104 C 88.652864,281.39019 88.361014,281.17953 87.907874,281.00852 C 86.542774,280.38404 85.230824,279.73725 83.500354,279.23016 C 82.357644,278.74646 81.057694,278.30777 80.331474,277.71225 C 79.780154,277.25867 79.321334,276.79176 78.656734,276.35643 L 91.426054,274.04433 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1949" />
+      <path
+         d="M 143.1004,288.66696 C 143.04038,289.09795 143.05088,289.52966 143.03577,289.961 C 142.99376,290.53581 143.04981,291.11065 143.0736,291.68485 C 142.14835,290.25293 135.29217,292.70771 131.65878,293.40866 C 135.47244,291.69224 142.21019,291.04788 147.27685,290.07537 C 153.26608,289.80282 158.90002,288.13999 139.48716,292.07448 C 140.9723,291.82409 138.79373,291.8097 138.49417,291.69532 C 136.88952,291.47263 135.40513,291.15525 133.87765,290.87383 C 132.94533,290.60006 131.93765,290.36369 130.97564,290.11072 L 142.9197,287.37189 C 143.85996,287.62368 144.7746,287.88888 145.76705,288.11572 C 147.23055,288.38382 148.65653,288.69255 150.24403,288.86143 C 151.69359,289.31988 153.15226,289.34224 152.68497,290.19401 C 144.76688,291.85201 142.87758,292.76397 136.02386,293.15234 C 138.89404,292.54946 147.42786,290.70518 144.72144,291.3971 C 140.67757,292.34189 133.80724,296.03224 130.35777,293.98728 C 130.38145,293.40847 130.43772,292.82909 130.39571,292.24972 C 130.38059,291.82619 130.39185,291.40224 130.33108,290.9791 L 143.1004,288.66696 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1951" />
+      <path
+         d="M 78.172834,265.43444 C 74.401184,266.19374 64.891104,268.11374 87.791374,263.46401 C 86.334744,263.79876 85.022904,264.20476 83.666904,264.58784 C 82.180904,264.95302 80.875494,265.39319 79.514144,265.81024 C 78.338204,266.18284 77.219714,266.57678 76.077214,266.96199 C 65.993844,269.58397 66.265104,269.76956 58.726534,269.62735 C 57.098734,269.36085 56.183234,268.80696 55.061634,268.33868 L 67.217154,265.74664 C 68.211424,266.13752 68.938294,266.62964 70.464914,266.77936 C 76.159204,266.42348 82.677774,265.33316 62.884114,268.82451 C 64.031654,268.46376 65.357854,268.13712 66.373884,267.70552 C 67.733094,267.28199 68.976774,266.80945 70.529864,266.46918 C 71.863674,266.07079 73.236714,265.69743 74.547484,265.29355 C 78.859834,264.40849 84.235264,262.67268 89.767174,262.44092 L 78.172834,265.43444 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1953" />
+      <path
+         d="M 119.80475,257.23162 C 119.83208,256.26543 120.64983,255.34057 121.30329,254.41239 C 121.95792,253.21147 123.56064,252.24726 125.42068,251.27479 L 138.54636,249.40179 C 136.22514,250.23845 134.54193,251.03797 133.86908,252.28436 C 133.26782,253.1479 132.4178,254.01849 132.57417,254.91952 L 119.80475,257.23162 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1955" />
+      <path
+         d="M 76.258984,262.71393 C 74.754864,262.72272 73.685784,262.34365 72.485624,262.07494 C 70.946674,261.55643 69.459604,261.01826 67.991184,260.47564 C 66.339594,259.99993 65.691064,259.36411 64.881134,258.70589 C 64.208384,257.89807 64.518454,257.07531 64.613514,256.25389 C 64.662174,255.20658 65.732004,254.32167 66.952644,253.39673 C 68.988244,252.25541 71.717704,251.31074 74.433874,250.37773 C 79.585304,248.64706 85.905394,247.66579 92.446904,246.95524 C 94.102674,246.76858 95.807954,246.66498 97.505414,246.53278 C 99.803494,246.62213 100.57055,247.13848 101.85538,247.71915 C 102.71097,248.37493 102.70411,249.08666 102.84344,249.7907 C 102.84108,250.64978 103.53698,251.48156 104.0958,252.31049 C 104.58463,253.35993 106.02669,254.1913 107.63519,255.02498 C 108.8406,255.34994 110.30742,255.26931 111.69567,255.34182 L 100.16607,258.26934 C 98.485544,258.13805 96.870824,258.11105 95.560804,257.64532 C 93.917684,256.71467 92.347444,255.8026 91.779734,254.67626 C 91.120064,253.82795 90.268544,252.97564 90.241644,252.0884 C 90.123104,251.46294 90.253754,250.82091 89.558074,250.2279 C 88.397454,249.93181 88.123404,249.34957 86.165934,249.56225 C 84.522384,249.72176 82.868124,249.87129 81.214814,250.01952 C 75.515924,250.75247 70.663404,251.71134 87.454624,248.49452 C 84.689474,249.3861 81.886814,250.27828 79.763324,251.38056 C 78.415154,252.22997 77.324104,253.02587 77.254324,254.03141 C 77.112534,254.78865 76.765494,255.53862 77.321524,256.29251 C 78.096734,256.85353 78.479784,257.44285 80.049704,257.83884 C 81.457684,258.3633 82.843574,258.90059 84.409644,259.36673 C 85.558784,259.51935 86.492294,259.85756 87.853324,259.72041 L 76.258984,262.71393 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1957" />
+      <path
+         d="M 59.034124,256.59283 C 58.508314,256.21497 57.117164,256.37813 56.212274,256.27678 C 54.688984,256.12874 53.628894,255.71207 52.430234,255.37378 L 64.469894,252.69631 C 65.555704,252.95016 66.376564,253.34759 67.800404,253.35849 C 68.723194,253.46406 69.659384,253.59085 70.628474,253.59931 L 59.034124,256.59283 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1959" />
+      <path
+         d="M 87.269104,247.70989 C 87.347454,247.20996 87.326554,246.70912 87.346384,246.20874 C 87.092374,245.44167 87.874014,244.80447 88.590804,244.11655 C 89.468474,243.62362 90.600254,243.18235 91.688524,242.74435 C 92.376494,242.39787 92.600274,241.97389 93.054814,241.58982 L 105.87846,239.45136 C 105.47473,239.8718 105.11558,240.29628 104.66908,240.71085 C 103.68445,241.19132 102.92329,241.70016 101.51531,242.05197 C 100.76711,242.67854 99.635974,243.18235 99.961154,243.92459 C 99.980874,244.41564 99.958894,244.90719 100.03842,245.39779 L 87.269104,247.70989 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1961" />
+      <path
+         d="M 98.752304,261.99248 C 98.279554,261.53963 99.704564,261.35361 100.15385,261.05212 C 109.72599,258.78629 110.13165,258.19564 117.73174,258.56931 C 120.56077,258.90318 120.2416,259.51733 121.02956,260.28257 C 118.75367,262.7642 109.3289,262.5166 104.41025,263.31604 C 102.75813,263.1111 101.2822,262.77308 99.788704,262.4533 C 98.236894,262.10416 97.016804,261.61142 95.692954,261.16851 C 95.359204,260.5819 93.262834,261.00977 93.166384,261.00348 C 97.075854,260.21051 100.98543,259.41758 104.8949,258.62465 C 103.68402,259.21241 104.00588,259.88708 104.00716,260.568 C 103.92474,261.56995 106.00675,260.91695 106.42913,260.99068 C 90.144754,264.9291 93.446214,264.21303 96.813484,262.26172 C 100.80859,260.42052 107.79392,259.69645 113.64136,258.70844 C 115.57417,258.42267 117.56969,258.155 119.51312,257.90801 C 115.55049,258.72166 111.58786,259.53531 107.62522,260.34896 C 108.53987,260.36156 106.83533,260.16347 106.71197,260.13453 C 104.9531,259.86663 103.34556,260.10292 101.65464,260.16439 C 132.606,251.43079 111.33899,258.23037 109.01016,259.26139 C 107.67581,259.78047 108.37267,260.42041 108.26389,260.9254 C 109.61367,261.18546 111.11124,261.04793 112.52779,261.04999 C 114.47947,260.82364 116.38582,260.89074 118.3673,260.91786 C 120.35564,261.06225 121.65965,261.52306 123.17523,261.94849 C 125.07011,262.56516 126.30961,263.35333 127.65638,264.11629 C 128.94229,264.84557 129.52972,265.65245 130.18532,266.46313 C 130.52389,267.37759 131.58815,268.19067 132.67578,269.01301 C 134.19061,269.87678 135.1553,270.82876 136.15858,271.77495 C 136.88856,272.61085 138.22976,273.3385 139.49337,274.07967 C 140.52163,274.70605 141.40797,275.36666 142.29229,276.01871 C 143.32257,276.67068 145.0001,276.63991 146.65512,276.84577 C 149.83011,276.64894 140.8424,277.83588 137.93685,278.33146 C 138.78183,277.83736 137.71135,277.5412 137.41115,277.12651 C 136.18634,276.69011 135.20503,276.1869 134.11398,275.71246 C 133.38196,275.28234 132.34482,274.9383 131.42439,274.56444 C 130.37266,274.26854 129.15953,274.07822 128.01864,273.83199 C 127.24504,273.34581 125.75668,273.08442 124.71986,272.72385 C 122.63796,272.34584 121.34177,271.70979 119.88567,271.09331 C 118.46119,270.45105 117.65157,269.70006 116.75847,268.96167 C 116.03964,268.12375 116.15186,267.24657 116.08144,266.38192 C 115.89517,265.55571 116.13514,264.74796 116.41208,263.93248 C 116.60071,263.62976 116.66609,263.32012 116.79288,263.0142 L 129.49146,260.77332 C 129.38021,261.09123 129.35438,261.41383 129.1575,261.72793 C 128.85655,262.52109 128.32227,263.2919 128.61218,264.10539 C 128.68388,264.91874 128.60072,265.7434 129.16157,266.53945 C 129.96282,267.23591 130.69559,267.94021 132.04955,268.53913 C 133.41744,269.09451 134.62339,269.65648 136.60626,269.96468 C 137.69345,270.3339 138.94474,270.66674 139.92808,271.07381 C 141.16693,271.34065 142.47288,271.5683 143.54582,271.92292 C 144.48833,272.32021 145.55206,272.68584 146.31622,273.13424 C 147.40331,273.61093 148.39191,274.11509 149.62744,274.54974 C 150.31358,275.11563 151.34376,275.52732 150.82696,276.21082 C 146.64547,277.26198 142.22359,280.26026 135.05499,279.74811 C 133.10095,279.45343 131.21582,279.24433 130.01116,278.54791 C 129.16103,277.89499 128.30416,277.23471 127.31503,276.60617 C 125.99054,275.83262 124.59318,275.0726 123.79857,274.20357 C 122.87053,273.27409 121.99672,272.33521 120.50858,271.49338 C 119.29019,270.63578 118.09121,269.79261 117.71406,268.82497 C 117.15331,268.06125 116.63822,267.30885 115.45028,266.62206 C 114.15987,265.90477 112.99305,265.15758 111.1435,264.59352 C 109.74721,264.27743 108.61896,263.8691 106.83619,263.84004 C 104.94249,263.89637 103.02039,263.90033 101.13826,264.04537 C 99.241464,263.94566 97.453434,264.03802 96.002264,263.48442 C 95.682454,262.72406 94.700284,262.12693 96.130664,261.31469 C 99.908954,259.12945 104.73543,257.8193 112.89809,257.10647 C 114.83133,257.10205 116.72396,257.02763 118.55496,257.34466 C 123.7841,259.33661 122.10004,258.5292 108.39336,261.05677 C 106.43171,261.28677 104.41754,261.46487 102.62201,261.84547 C 92.508854,263.50652 115.76077,258.30811 109.80766,260.23634 C 106.42956,262.48076 105.4923,262.39582 95.269394,264.12992 C 93.447074,263.80093 91.929454,263.84736 91.483064,262.90253 C 91.370534,262.12248 91.110094,261.36081 91.786694,260.59108 C 103.21245,258.11836 101.38723,256.92967 107.82211,258.546 C 109.05356,258.95437 110.17602,259.41777 111.68314,259.70533 C 113.04256,259.97658 114.32075,260.32028 115.91457,260.37592 C 113.25648,261.02546 105.42918,263.04414 108.15382,262.43045 C 107.81182,262.26283 108.6554,261.36093 106.12197,261.43466 C 99.686994,261.58655 94.854404,262.34669 113.43365,259.23362 C 112.82049,259.3769 111.7065,259.46199 111.52162,259.68038 L 98.752304,261.99248 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1963" />
+      <path
+         d="M 96.216514,264.90636 C 95.581604,264.80436 95.021924,264.6532 94.453784,264.51151 C 93.733454,264.30874 92.898434,264.18481 92.068684,264.05268 C 91.383824,263.93701 90.704114,263.81628 90.028684,263.69767 C 89.733844,263.56662 89.507274,263.40589 89.294414,263.25975 C 88.917054,263.18666 88.604734,263.26367 88.225764,263.30465 C 87.553874,263.25042 87.558694,263.13216 87.373494,262.92268 C 87.404364,262.70322 87.631144,262.49664 87.817524,262.28937 C 88.064144,261.94929 88.574514,261.64795 89.078244,261.34943 C 90.382584,260.58491 91.866004,260.41203 94.200634,259.96188 C 94.842614,260.13533 94.707794,260.35585 94.659244,260.62497 C 94.543274,260.95683 94.350574,261.28399 94.157654,261.61089 C 94.017254,261.87358 93.671824,262.10694 93.328754,262.34113 C 92.239414,262.95075 90.974734,263.06791 88.979324,263.48172 C 88.160174,263.5641 90.459534,263.18255 91.202904,263.03508 C 93.134874,262.94923 87.655374,264.03589 89.414884,263.28706 C 89.921074,262.95281 90.029644,262.58306 90.115284,262.21278 C 90.234574,261.9953 89.900714,261.86562 89.665354,261.72218 C 93.653604,260.75599 92.472304,260.99297 91.774374,261.5391 C 91.453804,261.84406 91.455304,262.13836 91.609534,262.44915 C 91.953464,262.70616 92.473374,262.72543 93.172274,262.79193 C 94.072554,262.78069 94.971334,262.75742 95.871084,262.74104 C 96.633214,262.70067 97.339404,262.77018 98.049234,262.83512 C 98.528634,262.96412 99.069124,263.06147 99.587534,263.16849 C 100.21355,263.27118 100.5832,263.43411 100.97718,263.61841 C 101.23001,264.239 98.402484,264.25976 97.151524,264.47613 C 96.643934,264.48325 96.135814,264.48032 95.627904,264.47952 C 95.135744,264.47857 94.643484,264.47785 94.151224,264.47712 C 93.470544,264.50089 93.068854,264.37573 92.554724,264.25252 C 91.964614,263.74791 93.031764,263.26535 93.699794,262.80937 C 95.668094,261.49309 98.076234,260.26917 100.56701,259.07293 C 101.91251,258.4205 103.41083,257.81222 104.9232,257.20896 C 105.61438,256.89467 106.93522,256.85208 107.98405,256.70991 C 107.39233,256.95362 106.88721,257.22149 106.37222,257.48555 C 106.05048,257.69841 105.65628,257.89205 105.25587,258.0845 C 104.05796,258.5316 102.48129,258.74085 100.90312,258.91297 C 100.36649,258.94854 99.818064,258.94591 99.274574,258.95163 C 98.008824,259.00003 94.728904,259.72963 100.90119,258.56245 C 100.25835,258.80724 99.749694,259.08969 99.233954,259.36826 C 98.164334,260.01874 97.485164,260.00606 95.108524,260.49129 C 94.524524,260.36895 94.608974,260.2184 94.554314,260.00092 C 94.631584,259.7094 95.081624,259.47296 95.513544,259.23339 C 96.684444,258.66685 98.152334,258.49119 99.996734,258.11158 C 100.68834,258.09581 100.87782,258.26191 101.26891,258.43646 C 102.05119,258.68125 99.653014,258.91586 98.716514,259.07846 C 98.721654,258.85085 98.832584,258.63295 98.951764,258.41311 C 99.170614,257.65187 103.77534,257.39437 101.8079,258.07928 C 101.00215,258.343 100.21933,258.61547 99.427094,258.88429 C 98.171094,259.27224 96.295504,259.51832 95.045074,259.74901 C 94.530844,259.47601 95.092234,259.33196 95.653944,259.1122 C 97.331684,258.62861 99.132994,258.25273 101.22926,258.15763 C 101.90254,258.19625 102.32717,258.36059 102.80571,258.51427 C 103.19155,258.62096 103.49764,258.76207 103.81607,258.89297 C 105.96227,259.40193 108.38896,259.74578 110.76045,260.09915 C 112.82414,260.32302 114.75385,260.49654 116.47542,260.97126 C 118.06913,261.45279 119.32899,262.05339 120.97201,262.50734 C 123.23354,262.34913 119.16898,263.07838 118.88775,263.14637 C 118.14319,262.88101 118.87842,262.52224 119.29845,262.21202 C 120.59625,261.15701 121.13009,261.06922 124.2725,260.48283 C 124.70657,260.78898 124.62962,261.14433 124.64119,261.48037 C 123.3868,262.2079 121.60606,262.44461 120.59571,261.7624 C 120.1684,261.42766 119.86262,261.07539 119.54335,260.72648 C 118.65303,260.26867 122.5117,259.52567 122.06456,260.36678 C 121.93499,260.89813 122.26863,261.41493 122.7267,261.91441 C 121.82438,262.11585 119.84548,263.00343 120.0758,261.97649 C 120.1326,261.6315 120.09916,261.28673 120.04397,260.94247 C 124.12942,259.87321 124.24164,260.69806 126.42782,261.90698 C 127.63859,262.65005 129.14817,263.35059 129.98479,264.16237 C 130.37427,265.87388 130.90083,267.58117 131.58879,269.28476 C 132.4641,271.51684 133.83757,273.71724 135.01608,275.92982 C 135.49152,277.17994 135.67832,278.44081 136.08634,279.69437 C 136.48911,280.58834 136.66488,281.50734 137.56323,282.3606 C 138.27639,282.9145 139.27838,283.41005 140.50437,283.82249 C 137.14428,284.58785 138.10876,284.18763 137.37439,283.0475 C 136.9115,282.35801 136.33789,281.67877 135.78111,280.99835 C 135.50856,280.71064 135.45336,280.41105 135.3838,280.11176 C 135.06517,279.49555 134.72102,279.9604 138.10683,279.31411 C 137.50622,279.59614 137.41865,279.97259 137.24878,280.31568 C 137.27161,280.79534 135.01672,280.88588 133.7245,281.02463 C 133.55194,280.48867 133.55827,279.94764 133.53447,279.4089 C 133.5125,278.93804 133.52172,278.4674 133.38914,277.99858 C 132.72101,276.26422 131.65353,274.55618 130.42443,272.86253 C 129.13713,271.25153 127.75799,269.65012 126.79683,268.00945 C 126.54057,267.40395 125.91134,266.9308 124.69671,266.50597 C 123.48508,266.11886 122.0143,265.85057 121.01413,265.38717 C 120.41126,265.06111 119.79028,264.73985 119.15269,264.42239 C 118.17385,264.03364 117.6803,263.57142 117.27635,263.08253 C 117.32361,262.15283 119.78085,261.99504 121.95578,261.56915 C 123.75131,261.51727 126.6635,260.91504 121.56276,261.92667 C 122.09275,261.77946 122.11108,261.59509 122.20379,261.37917 C 122.20293,261.14037 121.78451,261.08495 121.393,260.94993 C 120.72722,260.90476 120.32745,260.75017 119.86573,260.58868 C 118.94937,260.16846 117.74653,259.8659 116.52622,259.57115 C 115.61072,259.34602 114.57358,259.24809 113.50931,259.15855 C 112.18611,259.06634 110.83698,259.05172 109.49384,259.03515 C 108.51264,259.0478 107.55491,259.02407 106.58872,258.97486 C 105.48255,258.88212 104.39385,258.76679 103.29165,258.66883 C 102.84205,258.6771 102.46521,258.60065 102.05484,258.55301 C 101.64264,258.53918 101.27824,258.63432 100.91405,258.69877 C 100.28643,258.78739 99.793094,258.68266 99.202014,258.60431 C 98.703754,258.44496 98.115894,258.46838 97.592874,258.44138 C 102.12493,257.45458 100.29736,257.76415 99.578954,258.35061 C 99.063864,258.75971 98.901174,259.20688 98.747804,259.64766 C 98.606334,260.07557 98.466034,260.50283 98.275804,260.92837 C 98.207954,261.13545 97.878924,261.28841 97.569084,261.4563 C 97.019374,261.74804 96.698804,262.0786 96.369134,262.40626 C 96.079114,262.72524 96.011274,263.05858 95.952964,263.39058 C 96.030674,263.58238 95.854154,263.7561 95.747404,263.93545 C 94.625484,264.39226 93.413424,264.50637 91.668484,264.85281 C 91.152854,264.91935 90.690284,264.88084 90.195124,264.85247 C 89.680684,264.66523 89.812614,264.44022 89.843484,264.19372 C 89.836414,263.96177 89.922794,263.7326 89.983024,263.50297 C 90.680744,263.67741 89.726014,263.62504 89.605334,263.68236 C 89.130114,263.61815 88.637534,263.57728 88.144734,263.53398 C 87.457734,263.47395 86.777484,263.40699 86.099594,263.33954 C 85.612374,263.25998 85.238864,263.13246 84.855384,263.00468 C 84.606954,262.90371 84.302464,262.82918 84.021764,262.74089 C 83.668304,262.58554 83.232094,262.45817 82.814214,262.32574 C 82.352604,262.15173 81.968374,261.95482 81.565504,261.76385 C 81.252114,261.6681 80.983424,261.55837 80.700904,261.45154 C 79.814454,260.85216 82.941964,260.76753 84.039454,260.57154 C 84.694514,260.67719 85.285704,260.82882 85.883204,260.96863 C 86.653694,261.13469 84.267524,261.25333 83.438404,261.37879 C 83.536904,261.22522 83.254494,261.11957 83.114624,260.99442 L 86.161974,260.35124 C 86.367964,260.50351 86.638694,260.63929 86.614584,260.82165 C 86.433024,261.39334 84.521964,261.90667 82.922464,261.65172 C 82.366854,261.51628 81.829044,261.35518 81.158654,261.30345 C 81.985844,261.11473 83.803874,260.45396 83.749324,260.80273 C 84.034734,260.90964 84.317684,261.01704 84.604484,261.12319 C 84.984424,261.30882 85.342074,261.50231 85.802504,261.66448 C 86.226064,261.79672 86.662484,261.92488 87.037604,262.07509 C 87.328374,262.16338 87.633504,262.24412 87.882474,262.34856 C 88.244944,262.45535 88.561544,262.58081 89.023364,262.63832 C 89.693754,262.70037 90.364464,262.76458 91.039254,262.82209 C 91.489824,262.86079 91.966434,262.92443 92.423544,262.91518 C 92.834244,262.92889 93.031014,262.68791 93.216214,262.97075 C 93.095214,263.18384 92.902944,263.40364 92.970784,263.63361 C 92.956524,263.80215 92.797054,264.0213 93.133044,264.14386 C 93.576114,264.13426 94.033004,264.15258 94.451644,264.07405 C 89.182094,265.16364 91.454664,264.74171 92.502104,264.4462 C 92.678294,264.28463 92.913764,264.14626 92.812594,263.9516 C 92.881614,263.60943 92.954604,263.26497 93.219114,262.93327 C 93.536994,262.60088 93.842024,262.26606 94.338894,261.96003 C 94.635234,261.80586 94.973054,261.65522 95.124064,261.47481 C 95.353744,261.04823 95.540124,260.62025 95.674304,260.18835 C 95.809994,259.74562 95.917274,259.29022 96.393564,258.8745 C 97.181314,258.13897 97.669074,258.1267 100.42222,257.6836 C 101.01351,257.73608 101.59333,257.7862 102.12707,257.90743 C 102.70775,257.96369 103.11556,258.0316 103.68874,257.91795 C 104.1451,257.85171 104.49181,257.77802 104.99426,257.84196 C 105.3877,257.88607 105.75253,257.95546 106.17813,257.96167 C 107.25686,258.07075 108.32701,258.19309 109.43168,258.26599 C 110.39134,258.29604 111.34907,258.30731 112.31419,258.31283 C 113.66815,258.34003 115.02811,258.36246 116.36214,258.4557 C 117.45705,258.55327 118.50373,258.66342 119.42577,258.90878 C 120.67877,259.20372 121.82824,259.54784 122.85263,259.93941 C 123.31842,260.08323 123.75098,260.20373 124.35932,260.26357 C 124.84879,260.42467 125.26464,260.54667 125.34791,260.80623 C 125.294,261.04629 125.29625,261.27093 124.84279,261.47294 C 122.56143,261.93733 121.5051,262.18265 119.22675,262.33591 C 124.00574,261.31614 120.4298,261.84296 120.33173,262.50049 C 120.68788,262.97951 121.14553,263.42349 122.1368,263.79236 C 122.7865,264.10661 123.41531,264.42529 123.98034,264.76011 C 125.07086,265.18097 126.34722,265.51293 127.62048,265.86752 C 128.9231,266.3155 129.53433,266.81006 129.7056,267.45879 C 130.46023,269.12235 131.71773,270.74604 132.99698,272.36698 C 134.24055,274.04566 135.38734,275.73318 136.4367,277.42861 C 136.65674,277.90253 136.5651,278.37736 136.57389,278.85649 C 136.5949,279.38266 136.60251,279.91219 136.82511,280.43344 C 136.50272,280.51586 133.12913,281.76496 134.12062,280.86002 C 134.29982,280.49674 134.46241,280.1292 134.80387,279.7798 C 137.28543,279.29049 138.23909,278.73164 138.51721,279.53912 C 138.56212,279.83293 138.59299,280.12707 138.81902,280.41295 C 139.30335,281.10389 139.81726,281.79216 140.3286,282.48065 C 141.21945,283.71227 141.73036,283.89318 137.54598,284.48265 C 136.39062,284.01891 135.34254,283.51288 134.59649,282.94684 C 133.6559,282.07689 133.66276,281.13451 133.25657,280.2216 C 132.84094,278.97174 132.52037,277.71914 132.16304,276.4673 C 131.28688,274.21933 130.19518,271.98264 129.14496,269.74435 C 128.35303,268.08391 127.52863,266.425 126.97646,264.75329 C 126.21325,263.94113 124.87023,263.21652 123.62205,262.49062 C 121.4454,261.34939 118.6989,261.15476 123.23236,260.38602 C 123.19956,260.72457 123.16698,261.07691 123.17255,261.42118 C 123.11918,262.07308 121.76125,263.00217 119.66703,262.51614 C 119.26437,261.99526 118.94702,261.46262 118.95945,260.91862 C 119.03308,260.30348 121.83295,259.36335 122.61663,260.12451 C 122.90397,260.47114 123.18381,260.82124 123.63148,261.14711 C 124.7085,261.82277 121.54926,262.08168 121.49824,262.04025 C 121.52965,261.76644 121.56834,261.48928 121.38249,261.21917 C 126.58805,260.12505 123.27769,260.80992 122.4027,261.71015 C 122.19746,261.86634 121.41379,262.30952 121.78387,262.40462 C 120.66559,262.72916 119.22139,263.45929 118.02723,263.17089 C 116.53222,262.66274 115.27065,262.06828 113.62592,261.61222 C 111.91957,261.17948 109.97849,261.00622 108.0326,260.74567 C 105.60045,260.37436 103.10334,260.03097 100.82734,259.54841 C 100.4922,259.42013 100.16199,259.2885 99.789454,259.17344 C 99.359784,259.0369 99.026674,258.90291 98.403554,258.90097 C 95.798954,259.08752 97.295454,259.13719 98.885094,258.6411 C 98.618654,258.73152 97.997574,258.93304 97.914724,259.00335 C 97.075644,259.17939 96.242344,259.35889 95.397574,259.53146 C 95.129534,259.58627 96.471484,259.3165 96.182324,259.35546 C 96.986574,259.0906 97.794684,258.82731 98.563244,258.54889 C 99.792024,258.3486 101.15916,258.21042 102.17573,257.89369 C 101.98314,258.09894 101.82312,258.29478 101.88764,258.52433 C 100.88468,258.78816 99.047044,259.7991 98.215134,259.06547 C 97.832194,258.91259 97.822764,258.83622 97.245944,258.89945 C 102.47754,257.81214 99.681634,258.30461 98.726044,258.73602 C 98.297664,258.95353 97.852884,259.17264 97.707654,259.43761 C 97.723094,259.51295 97.545394,259.75252 97.898754,259.7099 C 93.120404,260.71791 95.117844,260.42483 96.034424,259.86948 C 96.548974,259.5881 97.056994,259.30496 97.648814,259.04265 C 99.028074,258.73274 100.36488,258.19396 102.12997,258.21084 C 102.66028,258.20093 103.19723,258.20192 103.71082,258.14639 C 104.84871,258.00136 107.72608,257.49579 101.9871,258.56417 C 102.4471,258.38722 102.86337,258.20908 103.16658,257.98738 C 103.67374,257.7191 104.1869,257.45123 104.74346,257.19471 C 105.9059,256.96257 109.70155,255.96138 108.10966,256.73226 C 106.51423,257.34322 104.92995,257.95874 103.50751,258.62271 C 100.99111,259.79529 98.582324,261.00581 96.710064,262.3259 C 96.190044,262.70383 95.234244,263.17489 95.564234,263.59141 C 96.038704,263.68472 96.423044,263.76951 97.011874,263.73881 C 97.505524,263.73904 97.999074,263.73896 98.492724,263.74067 C 98.993024,263.74045 99.495044,263.74498 99.993514,263.7262 C 99.280684,263.89112 97.199324,264.41595 97.886754,264.23794 C 97.517524,264.09359 97.222154,263.92661 96.643184,263.85265 C 96.125094,263.74852 95.605074,263.64534 95.101234,263.53253 C 94.428494,263.48816 93.753174,263.44299 93.057064,263.47517 C 92.135774,263.49387 91.208164,263.532 90.286874,263.50758 C 89.496664,263.42463 88.886614,263.33585 88.532394,263.04822 C 88.344084,262.71515 88.292214,262.40036 88.597454,262.06691 C 89.183164,261.48562 90.681924,260.88092 92.651074,261.03818 C 93.028984,261.23124 93.303884,261.3898 93.234974,261.65126 C 93.161024,262.03735 93.046554,262.42264 92.608204,262.78321 C 91.741574,263.31258 89.802864,263.97944 88.136594,263.68145 C 88.365414,263.14096 89.319284,262.96191 91.728284,262.69229 C 86.737294,263.73336 89.183594,263.32762 90.116994,262.84715 C 90.472184,262.62496 90.835614,262.4034 90.989094,262.14967 C 91.206444,261.82791 91.421974,261.50512 91.526684,261.17537 C 91.559374,261.03753 91.753904,260.78003 91.387684,260.72861 C 96.887114,259.58722 93.177634,260.25325 92.225584,260.85407 C 91.739644,261.13823 91.261424,261.42807 91.007524,261.74991 C 90.833794,261.94697 90.634984,262.14194 90.517194,262.34429 C 90.633054,262.38764 90.527914,262.65699 91.031214,262.53659 C 91.546624,262.52703 91.892164,262.45257 92.332224,262.60626 C 92.529324,262.74493 92.746674,262.89309 93.000474,263.01866 C 93.661964,263.13444 94.324634,263.2527 94.993524,263.36495 C 95.834214,263.50168 96.662904,263.64161 97.400924,263.8432 C 97.931764,263.96999 98.464864,264.13061 99.110494,264.15917 L 96.216514,264.90636 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1987" />
+      <path
+         d="M 81.056734,270.86133 C 81.026724,271.07682 81.031974,271.2927 81.024364,271.50835 C 80.923294,271.80881 81.088774,272.10959 81.159734,272.39977 C 81.672464,272.57318 82.397834,272.52938 83.055464,272.55482 C 83.943104,272.66265 84.826344,272.77504 85.728764,272.87075 C 88.427364,273.79463 87.855894,273.08575 80.740134,274.42131 C 80.886534,274.36433 80.255804,274.07518 80.033944,273.94461 C 79.391534,273.68357 79.340624,273.35617 79.104084,273.04112 C 79.118554,272.8922 78.973334,272.75093 78.908274,272.60647 L 85.156554,271.41016 C 85.230184,271.56273 85.409164,271.71051 85.377874,271.86872 C 85.559324,272.1495 85.567034,272.43287 86.143754,272.66383 C 86.578144,272.90884 87.101374,273.14174 87.324194,273.42496 C 80.961344,274.65208 82.536944,275.13407 79.866114,274.28191 C 79.014164,274.1881 78.170684,274.06939 77.291304,274.02086 C 76.361874,273.93315 75.534684,273.96012 74.955934,273.62948 C 74.834924,273.31058 74.551014,272.98974 74.704384,272.65271 C 74.696774,272.44094 74.702454,272.22899 74.672024,272.01738 L 81.056734,270.86133 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1989" />
+      <path
+         d="M 80.171674,272.84752 C 79.604174,272.82227 79.326264,272.62943 78.926384,272.50843 C 78.634114,272.40217 78.254494,272.33956 77.922254,272.25603 L 83.881364,270.87923 C 84.254124,270.98317 84.673184,271.06905 85.005004,271.19261 C 85.302094,271.24136 85.538314,271.43716 85.968844,271.35078 L 80.171674,272.84752 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1991" />
+      <path
+         d="M 106.9723,257.19765 C 106.93854,257.48566 107.48053,257.70847 107.88116,257.94396 C 108.30665,258.1897 108.86761,258.39194 109.42975,258.59547 L 106.44885,259.24642 C 105.903,259.02784 105.35587,258.81021 104.90905,258.56299 C 104.44251,258.32022 103.87791,258.07349 103.78005,257.77569 L 106.9723,257.19765 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1993" />
+      <path
+         d="M 81.734624,270.95982 C 82.030324,270.96351 82.326234,270.96252 82.622044,270.96359 C 83.076684,270.99958 83.495964,270.93628 83.898194,270.90977 C 82.909274,271.11167 81.920364,271.31357 80.931334,271.51547 C 81.099174,271.61514 80.681504,271.47959 80.607774,271.469 L 83.609884,270.79174 C 84.853674,271.26939 85.298024,270.91012 81.105174,271.68949 C 80.656854,271.69676 80.205114,271.71367 79.752824,271.70442 C 79.447264,271.70529 79.141494,271.70468 78.836034,271.70819 L 81.734624,270.95982 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1995" />
+      <path
+         d="M 85.716544,260.91124 C 85.420844,260.90754 85.124934,260.90853 84.829124,260.90746 C 84.359584,260.90686 83.889944,260.90693 83.420404,260.90686 C 82.881734,260.92952 82.576814,260.80928 82.170294,260.72122 C 81.960334,260.65761 81.794324,260.5798 81.605794,260.50892 L 84.637284,259.85387 C 84.821944,259.92216 84.984534,259.99764 85.190954,260.05847 C 85.554394,260.11651 85.841624,260.19775 86.285124,260.16725 C 86.756164,260.16717 87.227304,260.16725 87.698344,260.16664 C 88.003904,260.16576 88.309684,260.16637 88.615134,260.16287 L 85.716544,260.91124 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1997" />
+      <path
+         d="M 74.325624,291.14268 C 98.470544,285.28667 90.417944,287.29537 86.114174,291.42525 C 83.861964,293.72566 82.999094,296.13569 82.137924,298.5379 C 81.617264,299.99446 80.926944,301.43879 80.195674,302.88305 C 79.023384,303.93211 79.971464,304.91944 80.266094,305.91328 C 84.464404,306.35387 89.485304,305.49897 93.833014,305.18072 C 104.02259,304.32117 114.22697,305.01241 124.30412,305.68472 C 131.40734,306.04689 136.97634,307.35643 142.65047,308.79421 C 147.17942,310.2358 151.13027,311.8735 154.9077,313.55751 C 158.63529,315.34467 161.96023,317.22574 165.28355,319.10838 C 168.30271,320.96096 172.17467,322.55703 176.30675,324.09727 C 180.64933,325.60772 183.17783,325.64554 188.34459,324.78279 C 194.24122,324.2065 200.20259,324.81383 206.06739,325.18012 C 211.07724,325.51029 216.15719,325.61709 221.23553,325.69711 C 224.72884,325.72773 228.22343,325.71672 231.71727,325.71562 C 235.00577,325.86191 237.89621,325.57614 241.00336,325.27587 C 222.90319,329.60753 225.25572,329.39984 230.80563,326.13667 C 232.03269,324.43784 233.59972,322.79104 235.40543,321.16126 C 236.89497,319.82197 239.04921,318.61222 241.15212,317.39073 C 243.46081,316.34285 245.30328,315.19738 247.17372,314.05005 C 250.15944,311.75859 254.67189,309.82755 259.14136,307.88988 C 266.09003,305.15832 273.40171,302.53623 280.90149,299.99534 C 285.23913,298.53752 289.27368,296.97805 293.23899,295.3947 C 297.3401,293.55952 300.97498,291.59752 304.75135,289.6771 C 307.87318,288.19746 310.81732,286.68202 313.65042,285.1331 C 316.08525,283.37284 320.23801,282.10908 324.18693,280.79032 C 328.05921,279.70991 329.93351,278.27864 331.94896,276.76038 C 332.62364,275.62059 333.59101,274.52426 334.63116,273.4264 C 336.21823,272.50805 337.76896,271.5945 339.21917,270.65261 C 340.47903,269.68219 340.78759,268.64014 341.20065,267.60444 C 341.4852,266.5732 339.2181,266.56467 337.88043,266.06017 C 334.59526,266.03027 331.93064,265.4707 329.06249,264.97332 C 326.39733,264.38484 323.58835,264.00949 320.65289,263.6602 C 317.96437,263.74669 315.91441,263.29483 313.55053,263.01938 C 313.07156,262.83615 312.47544,262.70349 311.93795,262.54554 L 328.95253,258.73602 C 329.42271,258.85869 329.85056,259.00198 330.36297,259.10405 C 332.59309,259.28645 334.84133,259.54098 337.17317,259.63426 C 340.10605,260.06913 342.98867,260.51711 345.75082,261.09021 C 348.66655,261.51194 351.4764,261.91384 354.59695,262.10888 C 356.60018,262.82609 358.82237,263.16735 359.05023,264.36648 C 358.76707,265.47485 358.64157,266.59251 357.37239,267.64534 C 356.12346,268.66143 354.88804,269.62491 352.86776,270.49459 C 351.60822,271.55474 350.35029,272.59101 349.96725,273.7621 C 348.21941,275.43202 346.32829,276.94838 342.3619,278.13943 C 338.50752,279.39523 334.30481,280.57718 331.86322,282.25324 C 329.01898,283.85799 326.01332,285.40862 322.72472,286.90711 C 318.95533,288.81816 315.28979,290.75522 311.45394,292.64875 C 307.45959,294.28363 303.36577,295.88252 298.92502,297.36963 C 291.21539,299.85377 283.94015,302.52038 276.81228,305.21305 C 272.55995,307.08533 268.12424,308.92561 265.37409,311.14985 C 263.56935,312.33108 261.79054,313.5101 259.43223,314.56842 C 257.26941,315.74862 254.97412,316.90741 253.41267,318.21623 C 251.53205,319.81695 249.77639,321.41393 248.80087,323.12224 C 245.3738,326.84657 236.57579,328.12926 225.17673,329.60581 C 221.9788,329.79023 218.85257,330.01266 215.56118,329.88823 C 212.07248,329.88461 208.58207,329.89253 205.09701,329.82386 C 200.01942,329.70236 194.94998,329.53878 189.94656,329.19131 C 184.1824,328.84617 178.43806,328.3408 172.78965,329.14405 C 166.95733,329.66035 163.88276,329.37531 159.518,327.73678 C 155.33008,326.1519 151.26124,324.53241 148.20392,322.63317 C 144.97277,320.7604 141.77162,318.88065 138.0063,317.13384 C 134.25952,315.52021 130.42582,313.92265 126.04735,312.51618 C 120.54652,311.18748 115.08556,310.01059 108.34513,309.64115 C 98.373764,308.92904 88.371414,308.38783 78.339814,309.36978 C 72.747664,309.85208 67.692374,310.76521 62.844144,309.43758 C 62.022634,308.26637 61.132534,307.23067 62.242554,305.98321 C 63.078644,304.53545 63.779364,303.08525 64.430674,301.62538 C 65.420874,299.19985 66.245164,296.75391 68.333824,294.40681 C 72.705444,289.61094 72.564824,289.63417 90.121824,286.65246 L 74.325624,291.14268 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1999" />
+      <path
+         d="M 313.00596,273.8166 C 307.31672,275.50492 303.07939,277.73864 298.8187,279.87082 C 289.7728,284.64646 281.43962,289.5842 273.25799,294.55055 C 268.27579,297.55968 263.7299,300.65489 259.25904,303.76244 C 257.83252,304.80373 256.26206,305.81818 254.56825,306.80642 C 253.63528,307.28997 252.23941,307.56983 250.90163,307.88736 C 248.86485,308.41593 247.25346,309.10416 245.67528,309.79373 C 244.17857,310.42631 242.84433,311.10262 241.49712,311.77516 C 240.49566,312.31889 239.41683,312.84297 238.34035,313.3678 C 237.41702,313.88064 236.45008,314.37962 235.44894,314.87304 C 234.50697,315.25486 233.68375,315.67111 232.82805,316.07719 C 232.13183,316.48152 231.19918,316.81604 230.34295,317.17269 C 229.3968,317.52625 228.48569,317.89169 227.55326,318.25009 C 226.6279,318.56941 225.70253,318.89086 224.76678,319.20451 C 224.18781,319.55933 223.32901,319.82003 222.5628,320.11467 C 221.77634,320.32106 221.09116,320.56931 220.36826,320.80107 C 217.8016,322.34032 211.60669,322.34272 208.60415,322.818 C 207.31224,322.59382 206.11498,322.30067 204.90238,322.0253 C 203.4092,321.76071 202.26552,321.32446 201.06214,320.92642 C 197.98747,319.81108 194.97956,318.67396 191.89931,317.5603 C 189.06846,316.52429 185.7804,315.74671 182.13629,315.14185 C 180.41247,314.96753 178.73269,314.74952 177.04584,314.54214 C 174.78313,314.15548 172.58752,313.7235 170.38954,313.29171 C 168.3861,312.7578 166.13657,312.37674 163.92241,311.9814 C 161.2429,311.63965 158.81149,311.10807 156.37494,310.59778 C 153.87956,309.99087 151.24634,309.47829 148.57732,308.97779 C 147.18885,308.7284 145.65409,308.6694 144.14419,308.58809 C 142.21758,308.39384 141.78309,307.93467 140.88174,307.40236 C 140.70232,306.49944 142.05403,305.75671 143.26759,305.00213 C 144.10153,304.46651 145.09473,303.97009 146.09362,303.47423 C 147.1134,303.07238 147.95399,302.62779 148.79254,302.17852 C 149.54727,301.83577 150.01552,301.43666 150.55569,301.05034 C 150.78966,300.74946 151.18257,300.47081 151.50442,300.18231 L 160.6098,298.70251 C 160.29342,298.98657 159.77426,299.24335 159.66162,299.55376 C 159.15982,299.95908 158.7563,300.39765 157.95923,300.74157 C 157.14426,301.20509 156.34751,301.67192 155.29128,302.07423 C 154.24513,302.55969 153.17584,303.03475 152.33386,303.57276 C 151.17817,304.24275 149.8539,304.91026 149.66452,305.71134 C 150.46406,306.07599 150.67412,306.48942 152.35583,306.55131 C 153.92993,306.65441 155.48774,306.73908 156.885,307.04492 C 159.51028,307.57391 162.09527,308.12091 164.61542,308.71198 C 167.07233,309.1982 169.5331,309.68674 172.20168,310.01905 C 174.42752,310.42654 176.56215,310.88716 178.65017,311.38134 C 180.85189,311.7966 183.04193,312.22676 185.3488,312.56531 C 187.02868,312.76493 188.70749,312.96709 190.35329,313.20117 C 193.96106,313.88624 197.25899,314.71779 200.11545,315.77474 C 203.19924,316.89168 206.27338,318.01128 209.50078,319.07642 C 210.72002,319.44152 211.88814,319.83576 213.31294,320.10073 C 214.45726,320.35534 215.57276,320.65295 216.87495,320.79254 C 214.94845,321.254 209.38461,322.73699 211.10768,322.18325 C 211.82276,321.93576 212.42906,321.65517 213.22924,321.4388 C 214.10122,321.1859 215.00129,320.9794 215.56879,320.61525 C 216.42513,320.25872 217.25714,319.9079 218.29171,319.60632 C 219.25255,319.25893 220.24608,318.91939 221.0828,318.52984 C 221.97773,318.19121 223.01144,317.90152 223.63306,317.4805 C 224.48576,317.0689 225.36043,316.66503 226.22652,316.2581 C 227.31875,315.79051 228.35054,315.31507 229.20581,314.78384 C 230.29236,314.25942 231.32919,313.72388 232.38027,313.18956 C 233.73358,312.5083 235.03374,311.80913 236.59434,311.18363 C 238.11474,310.4649 239.73353,309.78341 241.62616,309.18137 C 242.93082,308.87039 244.30814,308.6085 245.43167,308.21274 C 247.34048,307.23992 249.01319,306.20788 250.55578,305.15337 C 255.37121,302.0147 260.18183,298.87406 265.32897,295.80182 C 273.59849,290.86453 281.99244,285.95361 290.74039,281.12099 C 294.69263,279.03508 298.65837,276.93318 303.60767,275.12337 L 313.00596,273.8166 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2001" />
+      <path
+         d="M 201.19086,316.28975 C 201.27542,314.56785 202.52982,312.89514 203.67285,311.23296 C 205.97318,308.05735 208.98795,304.95795 212.76849,301.96828 C 216.03501,299.56469 219.93248,297.27765 223.93509,295.0218 L 232.73181,293.6496 C 228.53199,295.88313 224.55039,298.17638 221.23499,300.59334 C 217.40837,303.56115 214.2009,306.63057 212.01922,309.8063 C 211.02762,311.39768 209.85072,313.01367 210.2059,314.65743 L 201.19086,316.28975 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2889" />
+      <path
+         d="M 178.51201,312.74211 C 177.5903,312.29768 177.83005,311.83149 177.79522,311.31446 C 178.61737,310.09298 179.89598,308.91925 181.13816,307.74625 C 182.31378,306.8917 182.94247,305.98237 183.42434,305.0545 C 183.63076,304.35705 184.46909,303.7269 185.20722,303.08773 C 185.77793,302.72602 186.15316,302.33383 186.60008,301.95285 L 195.66517,300.46415 C 195.22628,300.85435 194.84881,301.25422 194.28184,301.62481 C 193.5255,302.23309 192.6115,302.83064 192.3502,303.50006 C 191.86898,304.45547 191.29194,305.40284 190.0726,306.28147 C 188.78434,307.41547 187.49972,308.5503 186.71176,309.74532 C 186.71208,309.90292 186.73995,310.79199 186.71047,310.62536 L 178.51201,312.74211 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2891" />
+      <path
+         d="M 161.93783,309.58692 C 162.018,308.65592 162.69749,307.75082 163.35073,306.85429 C 164.27867,305.45925 165.61291,304.10891 166.97394,302.76208 C 167.38593,302.29891 167.83628,301.84019 168.27463,301.38018 L 177.32536,299.88938 C 176.84435,300.35088 176.33751,300.81005 175.91738,301.28047 C 174.45882,302.62265 172.97818,303.96369 172.07672,305.37115 C 171.47363,306.21451 170.86133,307.07531 170.96712,307.952 L 161.93783,309.58692 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2893" />
+      <path
+         d="M 217.75787,317.55131 C 216.73991,317.07335 216.66328,316.51584 216.45718,315.94153 C 215.95066,314.19745 217.10238,312.48217 218.10533,310.78669 C 219.95263,308.22896 222.25349,305.71988 223.80594,303.13564 C 224.53163,301.95971 224.79807,300.7613 225.04233,299.56404 C 225.30545,298.69467 226.27164,297.91088 227.25584,297.12217 C 227.89386,296.62826 228.58172,296.14277 229.25747,295.65533 L 238.24582,294.20849 C 237.55474,294.692 236.84577,295.17277 236.21943,295.66748 C 235.25602,296.42237 234.31298,297.17157 233.93518,297.99707 C 233.59747,299.22587 233.23425,300.45729 232.41146,301.66076 C 230.73736,304.23978 228.39105,306.75024 226.62264,309.32042 C 225.70896,310.96246 224.67021,312.6285 225.23707,314.31 C 225.36311,314.62261 225.71615,315.48311 225.95633,315.43459 L 217.75787,317.55131 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2895" />
+      <path
+         d="M 249.94187,304.3398 C 249.23836,303.94613 248.90076,303.49724 248.46605,303.06396 C 248.01848,302.41233 248.00776,301.74261 247.96522,301.07659 C 247.9516,300.2848 247.95075,299.49297 247.95107,298.70114 C 247.79641,298.07408 248.10605,297.46484 248.37731,296.85054 C 248.72306,296.25947 249.1224,295.6743 249.53063,295.08883 C 250.14668,294.54144 250.31227,293.9637 250.53359,293.38692 C 250.53788,292.81713 250.82875,292.25935 251.08019,291.69963 C 251.46485,291.12451 252.23148,290.59716 252.90369,290.06101 C 253.26434,289.81333 253.52296,289.54958 253.83237,289.29413 L 262.88706,287.79682 C 262.59362,288.06313 262.35215,288.33712 262.00618,288.59631 C 261.31886,289.11097 260.54312,289.61273 260.10627,290.16571 C 259.80435,290.70468 259.42109,291.24369 259.47382,291.80219 C 259.28615,292.40115 259.19216,293.00681 258.55553,293.57457 C 258.09414,294.14896 257.69212,294.72243 257.37359,295.31008 C 257.05635,295.90206 256.66848,296.48818 256.80941,297.09799 C 256.80137,297.8878 256.78069,298.67768 256.81295,299.46745 C 256.87897,300.10152 256.8555,300.7415 257.24444,301.36471 C 257.65386,301.77784 257.94634,302.20857 258.73109,302.56137 L 249.94187,304.3398 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2897" />
+      <path
+         d="M 269.53993,288.84726 C 269.629,288.12753 269.62557,287.40693 269.63725,286.68667 C 269.65558,285.76546 269.63135,284.84421 269.61935,283.92304 C 269.56308,283.12862 270.45758,282.43293 271.34157,281.72604 L 280.4178,280.27028 C 279.52727,280.92964 278.49656,281.56649 278.4613,282.32202 C 278.4494,283.2454 278.42518,284.16878 278.4434,285.09216 C 278.45497,285.80065 278.45036,286.50956 278.54071,287.21748 L 269.53993,288.84726 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2899" />
+      <path
+         d="M 287.12576,280.70169 C 287.17699,280.28673 287.16991,279.87132 287.17742,279.45609 C 287.07678,278.84449 287.59926,278.26523 288.02572,277.68155 L 297.0369,276.14459 C 296.61548,276.70226 296.03072,277.2592 296.08924,277.84243 C 296.09664,278.25144 296.08892,278.66065 296.14079,279.06932 L 287.12576,280.70169 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2901" />
+      <path
+         d="M 303.01616,275.47083 C 302.11899,275.25141 301.27486,275.00134 300.39377,274.77521 C 299.28781,274.46747 298.45334,274.06188 297.56495,273.68063 C 296.78942,273.28312 295.87114,272.93009 294.94663,272.5768 C 292.9822,271.66599 295.87757,272.98928 294.10766,272.20507 L 302.69602,270.36936 C 302.96847,270.49105 303.26652,270.6055 303.51324,270.73442 C 304.4355,271.09244 305.36686,271.44699 306.14796,271.84671 C 307.01009,272.21364 307.81895,272.60095 308.89575,272.89517 C 309.5939,273.05586 310.43105,273.35461 311.21462,273.35408 L 303.01616,275.47083 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2903" />
+      <path
+         d="M 159.3358,300.86585 C 160.9413,301.164 162.59514,301.42779 164.25809,301.68224 C 166.05544,301.82724 167.7126,302.08174 169.41156,302.32016 C 170.82414,302.53787 172.33748,302.6495 173.82616,302.78071 C 175.87247,303.13534 177.82844,303.55052 179.82868,303.93646 C 183.53323,304.63619 186.95902,305.49912 190.63517,306.21577 C 194.11143,306.87189 197.97525,307.08765 201.79084,307.33103 C 204.82586,307.76179 207.5222,308.43707 210.42057,308.97398 C 212.78317,309.32294 215.30042,309.39343 217.81928,309.44778 C 219.83034,309.49528 221.50508,309.88651 223.25323,310.2067 C 225.17201,310.61241 226.80131,311.1556 228.63199,311.60606 C 230.70606,311.8874 232.67522,312.24176 234.64265,312.60302 C 235.57627,312.85988 236.43239,313.15474 237.29055,313.44264 L 228.80079,315.32033 C 227.99793,315.04747 227.2403,314.74937 226.29597,314.5373 C 224.31974,314.17586 222.32123,313.83978 220.29774,313.51291 C 218.52139,313.05336 216.86895,312.52425 214.92713,312.15192 C 213.25078,311.85065 211.67625,311.51057 209.7325,311.50802 C 207.15041,311.41349 204.57924,311.29584 202.19693,310.89836 C 199.41098,310.34751 196.74197,309.68221 193.69998,309.32572 C 189.85042,309.05941 185.99968,308.78477 182.53274,308.09242 C 178.85927,307.3586 175.34549,306.52591 171.56645,305.85878 C 169.5989,305.48667 167.67745,305.06668 165.57861,304.79501 C 164.05853,304.65516 162.52108,304.53012 161.10528,304.27981 C 159.40836,304.06085 157.70929,303.84547 155.99136,303.64406 C 154.29615,303.37125 152.60716,303.09386 150.88665,302.84142 L 159.3358,300.86585 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2905" />
+      <path
+         d="M 226.45266,296.7079 C 226.83635,297.11201 227.98646,297.3304 228.85888,297.60119 C 231.10476,297.93293 233.23103,298.33201 235.33501,298.76201 C 236.664,299.12204 238.2007,299.23402 239.77823,299.36568 C 241.9314,299.57996 243.84857,300.00806 245.80207,300.38329 C 247.17125,300.80419 248.72863,301.0129 250.38944,301.21077 C 251.66923,301.32651 252.37681,301.68887 253.25287,302.00206 C 254.27276,302.15151 255.37893,302.25892 256.44694,302.36206 C 256.93234,302.38982 257.29707,302.50702 257.72213,302.57953 L 249.33986,304.53 C 248.93999,304.47017 248.57108,304.3844 248.14023,304.3505 C 246.94447,304.23091 245.68236,304.17888 244.7078,303.87826 C 243.89037,303.59912 243.34409,303.3004 242.13557,303.22511 C 240.49931,302.97152 238.9116,302.71516 237.50801,302.30348 C 235.58473,301.93819 233.68128,301.54905 231.52821,301.37919 C 229.90396,301.21221 228.33404,301.06661 226.98597,300.67351 C 224.86302,300.23955 222.65808,299.88283 220.46879,299.49522 C 219.30614,299.15468 218.07318,298.84492 217.42337,298.34282 L 226.45266,296.7079 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2907" />
+      <path
+         d="M 252.58216,288.98567 C 254.65474,288.96872 256.63857,289.1884 258.62327,289.36136 C 261.02691,289.64141 263.22628,290.00674 265.3368,290.49117 C 266.81637,291.0734 268.627,291.42441 270.53549,291.7686 C 271.85955,291.91368 273.2417,291.87963 274.60455,291.896 C 275.25243,291.94049 275.88392,291.85807 276.50608,291.83963 L 268.47685,293.97654 C 267.81611,293.97913 267.15494,293.99627 266.49344,293.98435 C 265.04528,293.95258 263.59003,293.95167 262.23007,293.74055 C 260.3636,293.34388 258.55328,292.94214 256.98947,292.38721 C 254.92354,291.95934 252.78569,291.59733 250.48504,291.34588 C 248.4742,291.19894 246.47193,291.02343 244.39667,291.09903 L 252.58216,288.98567 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2909" />
+      <path
+         d="M 275.51384,284.1748 C 275.91521,284.44917 276.90306,284.44312 277.55908,284.56987 C 278.84981,284.62262 280.11299,284.70573 281.38378,284.8027 C 282.50163,284.8388 282.96999,285.14338 283.72162,285.36459 L 275.11653,287.19829 C 274.51667,287.08745 274.03588,286.78611 273.1716,286.83886 C 271.8663,286.76055 270.55511,286.68339 269.26535,286.57987 C 268.72625,286.48503 267.41827,286.26653 267.31549,286.29151 L 275.51384,284.1748 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2911" />
+      <path
+         d="M 287.98906,277.6686 C 288.43513,278.12176 289.47656,278.40783 290.38896,278.73522 C 291.76928,278.99745 293.2286,279.196 294.64665,279.44056 C 295.27802,279.54906 295.88014,279.67319 296.49737,279.78962 L 288.08606,281.72802 C 287.48405,281.61269 286.87764,281.50064 286.28046,281.38207 C 284.79113,281.14936 283.21039,280.95912 281.90305,280.60971 C 280.9121,280.24716 279.82029,279.91561 279.19985,279.44699 L 287.98906,277.6686 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2913" />
+      <path
+         d="M 139.05985,307.11218 C 138.29579,306.79149 137.42937,306.50934 136.58375,306.21763 C 135.23504,305.80862 133.93585,305.38029 132.62991,304.95444 C 131.56854,304.56093 130.53643,304.15919 129.5025,303.75707 C 128.49826,303.52337 127.73012,303.20572 126.87603,302.91131 C 125.24856,302.43412 123.5944,301.97197 121.90433,301.52296 C 119.9324,301.00095 117.90408,300.50639 115.87759,300.01149 C 114.20489,299.7616 113.38692,299.33011 112.42158,298.83639 C 111.9066,298.37272 111.9455,297.87835 111.88752,297.39004 C 111.88463,296.90782 111.89888,296.42564 111.90842,295.94346 C 111.91281,295.7029 111.91314,295.46238 111.9156,295.22183 L 120.84093,293.6066 C 120.839,293.8475 120.83889,294.08844 120.83514,294.32934 C 120.82635,294.80984 120.81596,295.29038 120.80846,295.77093 C 120.85593,296.21018 120.75647,296.65858 121.14745,297.08352 C 122.08278,297.47646 122.75917,297.90711 124.27025,298.11384 C 126.26513,298.62348 128.2824,299.12136 130.25284,299.64277 C 132.00067,300.10133 133.75794,300.55765 135.41981,301.05499 C 136.30177,301.343 137.14632,301.64256 138.07457,301.91237 C 139.07539,302.30954 140.06773,302.70888 141.10541,303.0942 C 142.42894,303.51937 143.74892,303.94552 145.11263,304.35461 C 145.89395,304.61947 146.65822,304.90527 147.50899,305.13661 L 139.05985,307.11218 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2915" />
+      <path
+         d="M 140.61937,309.1352 C 140.11843,308.95734 139.45693,308.84712 138.85439,308.69781 C 137.99612,308.39499 137.11095,308.10271 136.22042,307.81248 L 144.77513,305.94885 C 145.63426,306.22925 146.47163,306.51894 147.36248,306.7868 C 147.78336,306.8538 148.75374,307.12197 148.81783,307.01849 L 140.61937,309.1352 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2917" />
+      <path
+         d="M 151.4459,301.92143 C 150.38721,301.90814 149.32756,301.90955 148.26834,301.90669 C 146.71246,301.97955 145.26782,301.86487 143.80647,301.76318 C 142.78026,301.60192 142.23323,301.25761 141.5727,300.95459 C 140.8169,300.67317 140.31338,300.33119 139.7208,300.0108 C 139.17903,299.63873 138.11584,299.45896 137.20462,299.21958 C 135.95988,298.97655 134.89754,298.64458 133.80692,298.32945 C 132.74533,297.99364 131.85148,297.59468 130.9153,297.21514 C 130.45187,297.00152 129.94664,296.80133 129.46156,296.59406 L 138.05485,294.76829 C 138.52311,294.97064 138.99704,295.17106 139.45951,295.3752 C 140.39151,295.74415 141.28933,296.12776 142.32519,296.4606 C 143.41442,296.74946 144.46282,297.06451 145.64691,297.30888 C 146.71428,297.58101 147.83524,297.81094 148.44025,298.24673 C 149.0056,298.54118 149.50065,298.85608 150.2004,299.11976 C 150.81131,299.36047 151.15963,299.68047 152.12926,299.76845 C 153.52384,299.79576 154.93932,299.85514 156.35265,299.81941 C 157.44982,299.81652 158.54752,299.81762 159.64425,299.80467 L 151.4459,301.92143 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2919" />
+      <path
+         d="M 135.09571,296.14566 C 134.08472,296.5316 133.27339,296.98331 132.39851,297.40962 C 131.24626,297.97022 130.3777,298.5894 129.46992,299.20081 L 120.40054,300.66239 C 121.2856,300.03994 122.12244,299.40518 123.25529,298.83243 C 124.10199,298.39645 125.01106,297.97627 125.76022,297.51984 L 135.09571,296.14566 z "
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.03800011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2921" />
+      <path
+         d="M 190.50345,329.49376 L 195.77288,349.58861 L 184.35313,388.94686 L 117.96046,420.4378 C 164.12744,411.75136 233.17348,397.01344 236.5893,401.83128 L 229.82272,329.49376 L 190.50345,329.49376 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.92336035px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2923" />
+      <path
+         d="M 268.18715,307.25756 L 259.02646,385.75407 C 274.49523,398.03489 297.87694,408.79936 323.50529,419.28544 C 381.36329,439.48495 256.12155,408.99261 226.48964,402.88431 L 234.60943,327.66129 L 268.18715,307.25756 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.92336035px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2925" />
+      <path
+         d="M 325.70313,317.72961 L 325.70313,277.64368 L 331.14453,277.64368 L 352.19922,309.11633 L 352.19922,277.64368 L 357.28516,277.64368 L 357.28516,317.72961 L 351.84375,317.72961 L 330.78906,286.22961 L 330.78906,317.72961 L 325.70313,317.72961 z "
+         transform="matrix(1.726659,0,0,1,-359.61779,-200.99515)"
+         style="font-size:56px;font-family:Arial Rounded MT Bold"
+         id="flowRoot3162" />
+      <path
+         d="M 81.221524,253.06212 C 85.765984,249.95232 84.357314,251.20241 83.434784,252.06839 C 83.872574,252.68047 84.672954,252.70134 85.388504,252.82715 C 86.141164,252.92777 86.900514,252.92033 87.657804,252.92847 C 88.434584,252.84278 88.992094,253.21392 89.632644,253.55328 C 90.779384,255.32895 89.017284,255.24709 86.839154,256.45832 C 86.013994,256.44921 85.186384,256.42939 84.363684,256.41773 C 83.476794,254.62879 86.764614,255.5238 87.075174,255.40972 C 87.913794,255.70795 88.646674,255.42652 89.443244,255.21102 C 89.247334,255.85676 88.153624,255.61132 87.521324,255.84703 C 86.039464,255.37896 85.354544,256.44901 89.182434,254.3401 C 88.744404,255.32261 89.145534,256.11354 89.558504,257.02782 C 90.104974,257.90711 90.613114,257.9154 91.396774,257.89231 C 87.550644,260.51695 89.693294,258.04005 89.444564,255.27322 C 89.132094,253.24127 88.033164,251.76025 86.567404,250.43742 C 84.610544,249.33493 82.815544,250.8692 86.971714,248.58155 C 86.407494,249.48625 86.898274,250.23689 87.336484,251.11221 C 87.833794,251.80497 88.594474,252.15172 89.319544,252.53448 C 89.710124,252.9698 89.337604,253.15983 89.243634,253.56578 C 85.619864,255.66512 86.543704,254.95718 84.659064,252.85591 C 83.084384,251.45211 81.492804,253.11971 85.414624,250.99535 C 84.753034,251.85376 84.669964,252.87183 84.649204,253.91186 C 86.035494,254.72778 83.164994,255.32265 82.706534,255.57419 C 82.752254,255.18792 82.201624,255.22674 81.908584,255.13109 C 81.189654,254.9851 83.261484,254.56255 83.947544,254.30275 C 84.180384,254.63661 84.228564,255.05327 84.368304,255.409 C 85.135804,256.03168 82.609784,256.31165 81.734044,256.76976 C 81.548304,255.92439 80.974664,255.53995 80.275084,255.12272 C 79.618984,254.74388 79.162994,254.99245 78.550134,255.11877 C 82.171544,252.84142 80.957424,253.10975 80.834244,254.87451 C 80.528564,256.01577 74.231634,259.60663 80.685994,255.06491 C 81.876724,255.21014 83.023874,255.59202 84.174574,255.91725 C 85.638184,256.38453 87.031804,257.04363 88.450894,257.62877 C 90.854674,258.22235 89.699164,258.0376 87.728514,258.81593 C 87.515434,257.07334 89.603434,256.99726 91.032304,256.22322 C 91.642934,256.29827 92.098194,256.7627 92.593154,257.10465 C 93.321114,257.73546 94.117364,257.8682 94.956464,257.98496 C 91.498534,260.08454 93.242824,259.50167 91.154174,258.48876 C 90.336044,258.14849 89.539764,258.19303 88.702704,258.27363 C 87.608134,258.10241 86.961154,257.11474 86.213674,256.35245 C 85.200824,255.23619 83.929284,254.48225 82.607174,253.80138 C 82.173484,252.7515 84.547954,252.58533 85.619154,252.20736 C 83.548064,253.76343 83.320284,253.94017 81.525704,254.04797 C 80.928714,253.9425 80.497874,254.22367 79.978514,254.41958 C 79.488464,254.70673 78.931724,254.72203 78.384744,254.79129 C 77.616904,254.89935 77.639454,254.52661 77.270334,254.08318 C 77.517114,252.48258 79.769494,252.3243 81.019484,251.68492 C 81.578514,251.56776 82.096604,251.6949 82.635424,251.78219 C 83.562704,252.37795 84.398494,253.13721 85.260854,253.83185 L 82.571944,255.51706 C 81.741384,254.84391 80.932754,254.08251 79.968874,253.61472 C 79.457344,253.5794 78.946064,253.50859 78.433664,253.63842 C 79.000294,253.27398 80.667144,252.13581 80.140544,252.55602 C 80.307744,252.617 80.493354,253.18838 80.981074,252.86256 C 81.512304,252.76146 82.040164,252.69599 82.510314,252.39761 C 83.046464,252.23575 83.554434,252.08142 84.130904,252.13323 C 85.608914,251.94528 87.146254,251.09059 82.612234,253.48272 C 82.794574,253.38848 85.919484,251.85364 85.298994,252.0529 C 86.593984,252.8049 87.853494,253.61302 88.891404,254.71131 C 89.605874,255.41031 90.228304,256.32812 91.282944,256.32277 C 92.149724,256.33626 92.998474,256.35736 93.818224,256.7179 C 96.165524,257.96897 95.518124,258.5261 92.361054,259.91994 C 91.492264,259.66882 90.632214,259.42881 89.889784,258.8347 C 89.426354,258.52821 89.028234,258.12481 88.453324,258.1884 C 89.109004,257.78228 90.841164,256.60153 90.604184,257.33548 C 89.584054,258.15335 87.912504,260.72729 85.839154,259.37262 C 84.428284,258.77451 83.018724,258.15793 81.551874,257.70888 C 80.435894,257.38878 79.280424,256.92721 78.110384,257.07088 C 78.967014,256.4438 81.553164,254.59803 80.631154,255.1243 C 79.710814,255.64963 78.818654,256.22286 77.912404,256.77214 C 77.925994,256.69327 78.167394,256.61988 77.977984,256.39132 C 77.950114,254.24237 78.246224,254.50475 81.090824,253.10488 C 81.758314,253.04315 82.335494,252.99633 82.961394,253.36369 C 83.708704,253.86398 84.373554,254.36034 84.614574,255.28117 C 84.173294,255.62561 82.058214,258.66939 81.463054,256.8846 C 81.348544,256.55244 81.346894,256.13829 81.089494,255.82608 C 81.170754,254.19674 82.745804,253.14672 84.567754,253.28623 C 85.158384,253.52342 85.550304,253.57754 85.687074,254.26887 C 83.870234,255.38953 82.784724,257.22571 81.799124,255.38608 C 81.809394,254.28853 81.891304,253.2045 82.442894,252.2198 C 85.020604,250.61629 85.418944,249.43951 87.371704,251.20073 C 89.193314,253.24651 89.813454,253.21076 86.225284,254.80835 C 86.327194,254.65251 86.774024,254.50448 86.579994,254.26589 C 85.829254,253.84955 85.076984,253.45647 84.587004,252.71164 C 84.093034,251.74207 83.582154,250.87677 83.963744,249.77601 C 86.641784,248.22741 86.933124,247.39779 89.242944,248.75705 C 90.704294,250.18435 91.827184,251.75616 92.177904,253.84428 C 92.584254,257.23142 92.299054,258.22062 88.852414,259.88376 C 87.974414,259.6849 87.310014,259.53292 86.798534,258.61689 C 86.348484,257.64417 85.889514,256.71551 86.204784,255.61706 C 88.513884,254.16556 88.623344,253.15878 90.330494,254.21625 C 90.532614,256.01646 88.960254,256.29706 86.905604,257.1932 C 86.054674,257.39634 85.244324,257.51823 84.393974,257.19443 C 82.849484,255.63763 84.279864,255.68241 86.966504,254.51394 C 87.770794,254.54366 88.594364,254.6368 89.386274,254.46598 C 88.549214,254.96484 87.712154,255.46371 86.875094,255.96257 C 86.881504,255.83668 87.595224,255.63457 86.909474,255.28795 C 86.298834,255.00977 85.759854,254.72742 85.047044,254.82287 C 84.286374,254.80182 83.523554,254.7965 82.770844,254.66561 C 81.861214,254.47521 81.015154,254.38752 80.528604,253.52515 C 81.366974,252.06349 80.393864,252.57412 83.873334,251.13546 L 81.221524,253.06212 z "
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2023" />
+      <path
+         d="M 113.29893,252.49261 C 114.32786,252.91362 115.39564,253.24769 116.45044,253.60207 C 118.87044,254.5393 119.11703,253.81369 115.33831,255.95334 C 113.92377,255.0721 112.70152,253.91458 111.53717,252.73097 C 110.58646,251.81454 109.76762,251.24793 110.13618,250.02315 C 114.29946,247.34613 116.80142,249.11769 120.29468,251.87189 C 122.19717,253.75218 124.68967,255.87065 124.85398,258.72278 C 123.78161,261.84955 120.63818,261.84637 118.50384,260.52917 C 117.87548,259.51008 118.13154,258.5475 118.38376,257.4583 C 118.60404,256.65285 118.42277,255.88226 118.27771,255.09827 C 117.69922,254.77124 119.19215,254.0833 119.79641,253.80674 C 119.16895,254.80267 118.89551,255.75968 119.16618,256.8664 C 122.18607,256.17375 118.88885,257.44257 118.72639,257.52779 C 118.68138,257.07251 117.5971,257.19587 117.08478,257.19076 C 115.95235,256.37122 117.19953,255.77556 118.10073,255.05953 C 118.8798,254.58648 119.51577,254.04485 120.00932,253.3367 C 119.84914,252.75107 119.44765,252.63981 118.95915,252.39851 C 116.93071,252.95333 120.6767,250.91576 121.24909,250.51166 C 121.91152,250.22658 120.10196,251.38953 119.49036,251.77166 C 118.79207,252.54119 116.01698,253.89522 121.09959,250.99031 C 120.93694,251.10438 120.75522,251.18851 120.58304,251.28761 C 121.10833,252.91296 118.07199,252.35805 117.71453,252.51488 C 116.14677,252.26101 115.05781,253.38298 119.04765,251.13695 C 118.68331,251.20693 118.61913,251.74866 118.47043,252.08855 C 122.01406,250.27159 116.01223,253.75586 119.15321,251.76361 C 120.27131,251.30258 119.62848,250.9308 119.65021,250.66516 C 118.68045,250.43694 117.92287,250.81987 117.08907,251.24605 C 121.45153,248.27401 118.09248,251.06264 117.20959,252.13246 C 116.92956,252.57023 116.78833,253.1163 116.64469,253.60723 C 114.30976,255.31555 113.79728,255.32408 111.55044,255.32638 C 110.6536,255.20678 109.89561,255.51982 109.10521,255.82503 C 107.94564,256.67456 113.96743,252.78335 112.66405,253.38957 C 111.36275,253.99482 110.06745,254.96207 112.98602,252.97588 C 115.26973,251.32387 117.88292,249.75123 118.69015,247.02846 C 117.85861,245.66862 116.41834,245.2232 114.98427,244.74338 C 112.95818,244.12583 110.93411,245.58717 115.06432,243.36775 C 114.53327,244.23946 114.18181,245.21436 113.75795,246.14454 C 113.40278,246.7794 113.0795,247.42853 112.76497,248.08221 C 112.70383,249.70414 110.27638,249.9188 109.45766,250.28963 C 108.68195,250.05566 110.56727,249.05533 111.29402,248.69715 C 111.13161,249.45759 111.81207,250.02749 112.02529,250.32888 C 108.43811,252.51822 109.72416,252.03589 109.32811,249.93057 C 109.33742,248.69852 111.66701,247.18584 111.77969,249.29618 C 112.05234,250.19606 112.54937,251.04217 112.93575,251.87182 C 109.91318,253.98179 110.39038,253.4531 108.09167,252.79969 C 107.67816,250.98463 110.73337,251.92301 111.01624,251.82032 C 107.73313,253.726 108.80321,253.79726 107.06515,252.2016 C 106.41886,251.84581 105.95734,251.43068 105.53356,250.84653 C 104.91854,250.55213 104.20249,250.52227 103.53395,250.39468 C 102.75453,250.11894 101.91185,249.95767 101.13958,249.84228 C 104.42591,247.61553 103.69042,248.33771 105.44829,250.68946 C 107.80111,252.94097 106.35315,252.15502 104.08591,252.85501 C 103.72428,251.6744 103.05807,250.61399 102.52004,249.52231 C 105.59347,246.95834 105.68306,248.03913 108.67383,248.8595 C 109.92827,249.12808 111.10439,249.1575 112.15638,249.84633 C 112.69957,250.6077 112.69956,251.44595 112.74114,252.32023 C 112.36316,254.07105 110.01394,253.97397 108.84407,254.53614 C 108.43912,254.45678 108.16128,254.16049 107.83232,253.94986 C 111.28164,251.50182 111.10286,252.72163 113.19001,255.18696 C 110.52232,258.01504 110.61269,256.7803 108.17545,254.66321 C 107.23428,253.84533 106.23091,253.11016 105.20388,252.40642 C 112.13212,248.43641 105.42007,251.84774 104.94164,252.07468 C 103.68044,250.4388 106.64184,250.24381 108.00531,249.58923 C 110.36854,249.80336 109.24305,249.74719 106.79539,250.98479 C 106.50627,250.33076 105.93897,249.89442 105.42627,249.4231 C 104.52855,249.13679 106.906,248.23321 107.74847,247.81117 C 108.47421,250.32895 104.83388,249.10365 104.23262,249.30198 C 103.67575,248.94293 103.18534,248.49538 102.67644,248.07367 C 101.35478,246.33461 105.01442,245.75001 106.45336,246.203 C 108.87443,247.3503 111.00065,245.93014 106.72442,248.25699 C 106.73518,247.68855 106.25197,247.33496 105.886,246.93232 C 104.5975,245.21327 106.18605,245.40058 108.52898,244.17785 C 109.49196,244.62208 110.29249,245.32653 111.12622,245.96722 C 111.78248,246.37789 112.50304,246.6689 113.18943,247.02571 C 114.07564,247.39291 114.90063,247.83925 115.7268,248.33083 C 117.68609,249.58122 119.65456,250.81464 121.64446,252.01495 C 120.46538,253.66999 119.72947,253.91466 118.26695,252.42942 C 117.66524,251.9373 117.00599,251.53092 116.39083,251.06588 C 116.19198,249.03088 118.91983,248.66432 120.45958,248.96321 C 121.12757,249.16033 121.73018,249.54052 122.32308,249.85442 C 122.44238,250.09557 122.72811,250.13992 122.92037,250.27544 C 123.39081,250.36864 123.87449,250.39544 124.35108,250.43658 C 124.98918,250.64203 125.50764,250.52393 126.07876,250.38501 C 123.15026,252.16327 123.99592,252.52557 123.08349,251.09248 C 122.35709,251.18335 124.27611,250.23582 124.92172,249.89071 C 124.6753,250.31384 124.73261,250.78969 124.69858,251.25115 C 125.54474,251.22801 123.26008,252.14532 122.51829,252.55308 C 122.59494,252.20262 122.18211,252.55641 122.05016,252.55772 C 120.91761,253.25941 123.63995,251.64683 124.44629,251.21219 C 124.79468,251.0244 123.83264,251.71222 123.52346,251.9593 C 121.05915,253.57608 120.97119,254.06498 118.98151,253.38181 C 118.32306,253.15126 117.78757,252.71709 117.23447,252.32172 C 116.74479,251.85818 116.14944,251.53801 115.5725,251.19765 C 114.44074,250.49605 113.35818,249.72814 112.32839,248.88824 C 110.81758,247.0737 114.64706,246.28042 116.25178,246.14533 C 117.26526,246.07741 118.27906,246.20255 119.28855,246.28439 C 119.98526,246.25376 120.56105,246.51433 121.17497,246.77933 C 122.78481,248.18032 118.88042,248.55607 118.04589,248.94597 C 117.06083,248.57382 116.18895,247.97826 115.29747,247.43036 C 114.78861,247.01514 114.21174,246.88727 113.59701,246.75348 C 113.11115,246.74726 112.70792,246.46922 112.29082,246.25778 C 115.15625,244.33394 114.42161,244.13012 115.91652,245.78292 C 116.92165,246.74472 118.06833,247.53395 119.178,248.36645 C 121.30753,250.09768 121.39875,249.46552 117.60545,251.07724 C 115.5193,248.60233 113.29295,249.64081 117.33824,247.53433 C 117.26655,248.57266 117.89969,249.5545 118.35192,250.48301 C 117.03154,252.5397 116.07939,252.76923 114.7277,251.75482 C 117.43527,249.80909 116.84593,249.62867 118.64525,250.60056 C 119.34315,250.47414 117.52156,251.47549 116.90164,251.82009 C 117.1763,251.48524 117.04869,251.08335 117.01951,250.68074 C 118.17,249.06382 119.73724,248.73954 121.42191,248.62342 C 122.02021,248.60802 122.61874,248.61459 123.21714,248.61691 C 123.81416,248.61758 124.02013,249.00518 124.4047,249.3438 C 124.47835,251.01226 121.83608,251.38107 120.41039,251.64145 C 122.6376,250.70145 122.57669,249.86804 121.28098,251.70735 C 121.06065,252.27157 120.90943,252.85883 120.71457,253.42732 C 119.57237,254.90132 118.21942,255.24132 116.67122,255.34025 C 116.11583,255.35086 115.76761,255.0185 115.33917,254.76919 C 114.91022,254.1493 115.13637,253.90223 115.35594,253.29722 C 115.96443,252.89118 123.20387,248.84322 117.11242,252.30907 C 118.49872,251.15722 119.97708,250.45297 121.60374,249.55809 C 122.58277,249.60987 122.85159,250.28065 123.30414,250.99209 C 120.13287,253.65473 119.64493,253.00629 116.58217,251.14611 C 114.56152,249.92279 112.53768,248.82839 110.84415,247.17744 C 110.31553,246.45067 109.80844,246.43455 108.97873,246.40532 C 107.8829,246.47229 106.80937,246.40047 105.72575,246.24898 C 103.32018,245.45236 104.90292,245.17008 107.48924,243.7133 C 109.2134,244.19429 110.86893,244.89198 112.52053,245.57571 C 114.83998,246.36269 110.97204,247.83054 109.54166,246.86987 C 108.73233,246.29131 107.84198,245.85055 106.93525,245.45235 C 106.33026,245.32866 105.82977,244.99625 105.31009,244.69711 C 104.91564,244.33175 104.52051,243.95825 104.1398,243.58186 C 103.6463,240.05553 106.60484,242.49418 107.25259,242.21268 C 107.10859,244.24533 104.7035,243.46254 104.30132,243.65838 C 106.7803,242.03723 106.40892,241.48699 107.81837,242.85095 C 108.19989,245.0772 105.21074,244.83451 103.7867,244.20876 C 102.04041,243.86836 102.24407,244.39755 105.13567,243.10821 C 104.89754,243.76861 105.43018,243.82497 105.63424,244.11435 C 104.14325,244.1874 103.0196,246.70882 103.46066,244.42358 C 103.34976,243.78497 102.98744,244.0011 102.59646,243.81973 C 101.89558,243.62938 103.9381,243.26294 104.6045,242.97419 C 102.8934,245.25386 111.51502,239.81496 101.874,245.08217 C 102.15044,244.49006 101.96076,243.91748 101.86418,243.31917 C 100.40558,242.5399 101.28947,242.90538 103.72957,241.54395 C 103.22474,241.80912 103.47337,242.24332 103.41063,242.60285 C 104.26389,242.50977 101.90726,243.43201 101.14402,243.82464 C 101.26224,243.49682 100.86212,243.71447 100.84653,243.70838 C 101.75237,243.20843 102.65821,242.70847 103.56404,242.20851 C 103.17735,242.49143 103.35924,242.83411 103.3485,243.23727 C 103.48849,243.75346 103.86739,244.11432 104.18136,244.51764 C 100.72071,246.59862 102.02635,246.27246 100.15754,244.81141 C 99.482484,244.68026 101.19541,243.8732 101.82505,243.59667 C 101.58289,244.39596 102.25838,244.10959 102.26335,244.11546 C 95.753164,247.30835 102.58635,244.18859 103.16337,243.9539 C 103.53382,244.58406 103.80763,244.36859 104.288,244.42407 C 100.28345,247.02371 101.82903,246.03901 102.55018,244.60487 C 105.55431,242.61692 105.12267,242.50095 106.84319,244.04509 C 107.62133,244.74392 108.59126,244.98197 109.58396,245.1467 C 107.18577,246.91922 107.46203,246.50159 105.40813,245.43516 C 104.53957,245.02328 103.65703,245.06502 102.75072,245.08997 C 104.94814,244.09653 104.58052,242.93218 105.03712,245.19237 C 105.55221,246.24158 106.32955,247.03257 107.29407,247.64507 C 108.02544,248.10516 105.65122,248.1823 104.82099,248.42167 C 104.15676,247.6814 103.23211,247.29731 102.35499,246.87288 C 100.34147,246.26614 104.88172,245.68999 105.0144,245.64058 C 105.88307,246.19417 103.10981,246.42609 102.16316,246.83218 C 101.85093,246.36433 101.43542,245.98111 101.05926,245.56999 C 100.59897,245.27397 100.42457,244.77888 100.16185,244.36659 C 103.15124,241.97612 103.44404,242.49615 106.344,243.66206 C 108.14432,244.47304 109.97798,245.208 111.77479,246.02489 C 112.99051,247.87479 109.28021,248.05703 107.93297,247.59411 C 105.12253,247.44242 108.90777,244.85799 110.02845,246.67291 C 110.95117,247.84101 112.05853,248.82842 113.21775,249.7512 C 113.84492,249.70501 114.76791,250.49584 115.37095,250.89939 C 118.00162,252.46711 118.83069,251.34385 115.66066,252.62109 C 115.61932,251.82345 115.63461,251.06293 115.70095,250.28939 C 116.77987,248.9563 118.56759,248.38395 120.11839,247.70319 C 120.82488,247.55439 121.11265,247.94712 121.63546,248.3516 C 122.33007,249.06043 122.58617,249.95871 122.87487,250.8775 C 121.99583,253.41392 120.25113,253.14888 119.02311,251.0797 C 118.62985,248.14626 122.06899,248.6431 123.53723,250.13526 C 124.27757,251.25168 125.16249,252.19997 126.15769,253.08321 C 128.40257,253.45721 124.99585,254.57193 124.30145,255.00838 C 123.64863,255.34531 125.58654,254.29613 126.23066,253.94284 C 123.47206,256.22417 122.33768,256.18293 123.40179,253.89697 C 123.84277,253.39801 124.09042,252.65781 124.28223,252.14003 C 121.44009,251.6592 118.69975,250.65282 115.98501,249.69826 C 112.64683,248.63397 109.20663,247.92249 105.79201,247.14891 C 103.97549,246.85527 102.20242,246.47518 100.46921,245.87235 C 99.530144,245.33934 99.135154,244.50317 98.764134,243.54557 C 98.727794,243.43618 98.691444,243.3268 98.655104,243.21741 L 101.4798,241.66414 C 101.51516,241.77466 101.55052,241.88518 101.58588,241.9957 C 101.94486,242.86108 102.1967,243.64749 103.10293,244.1107 C 104.79882,244.69557 106.53629,245.06484 108.29805,245.41649 C 111.68702,246.26957 115.12237,246.96708 118.45125,248.03304 C 121.27362,249.06486 124.14765,249.90376 127.08133,250.48701 C 127.10791,251.28173 126.96634,251.86514 126.31085,252.58821 C 125.42574,254.34462 125.89236,253.71377 123.22438,255.14611 C 124.42421,254.4191 125.5995,252.9088 127.03351,253.21287 C 125.99927,253.99714 124.34273,255.722 123.46333,254.76734 C 122.47574,253.85937 121.57672,252.90273 120.83757,251.77336 C 118.89131,249.93162 121.16198,248.49088 121.74969,249.50041 C 122.98286,251.55962 122.15651,253.15304 120.08345,252.40476 C 119.79575,251.55088 119.56075,250.69715 118.89769,250.04421 C 118.37872,249.71714 118.20569,249.46392 117.58754,249.72081 C 114.94189,250.82027 120.55942,247.46099 118.64608,248.95997 C 118.48009,249.70817 118.42947,250.40411 118.55852,251.23388 C 116.03612,253.2237 115.45595,254.54521 112.75335,252.58265 C 112.01033,252.13011 111.24027,251.75869 110.47494,251.46071 C 109.40113,250.42451 108.29448,249.41694 107.31183,248.2916 C 105.88062,246.27204 108.77662,244.92646 110.58156,245.80095 C 113.1725,246.5834 109.70465,247.3574 109.09939,247.77842 C 107.3699,246.8869 105.57539,246.12581 103.7754,245.38557 C 101.15473,244.38596 99.214244,244.86435 103.05796,242.87772 C 103.24616,243.14331 103.42406,243.6558 103.8128,243.86949 C 104.20379,244.30302 104.62392,244.71529 104.96307,245.19383 C 104.14191,246.00333 103.27039,247.92588 102.26585,247.35977 C 101.07828,245.86759 103.44678,244.4909 105.02832,245.10511 C 105.94488,245.57331 106.90644,246.00691 107.59457,246.79891 C 108.62413,248.59715 106.53934,249.67213 104.59874,249.40384 C 103.64167,248.67605 102.81363,247.82287 102.2464,246.73943 C 101.6074,244.43329 102.53932,244.3911 105.33191,243.15507 C 106.26797,243.21211 107.19639,243.24302 108.06695,243.67825 C 110.41375,244.9848 110.3098,245.18517 106.95744,247.01066 C 105.93794,246.75036 104.92657,246.45397 104.11349,245.74456 C 102.54921,244.41335 102.16569,245.13903 105.54917,243.35737 C 104.53078,245.00685 104.34748,245.36456 101.72086,246.40254 C 101.18082,246.26162 100.76553,246.20748 100.40644,245.67298 C 100.74715,245.45053 106.61999,241.71355 99.709684,246.12788 C 99.254894,245.79406 98.842094,245.84555 98.913724,245.01632 C 99.754804,244.39099 101.32563,241.83601 102.86387,243.09288 C 104.79949,244.65556 104.81633,244.72876 101.39552,246.20604 C 101.06471,245.74809 100.68132,245.32072 100.4976,244.77368 C 100.42712,244.29246 100.30509,243.86676 100.52772,243.39795 C 104.01083,241.44494 102.8939,241.01918 104.06369,242.38441 C 103.42069,242.85437 101.76338,245.45925 100.59239,244.22184 C 100.47511,243.67085 100.33372,243.26398 100.70517,242.7286 C 103.0545,241.38731 103.41085,240.15829 104.69212,241.76393 C 104.81785,242.42489 105.01348,243.06436 104.84868,243.75005 C 102.32053,245.28017 101.7608,246.49604 101.67593,244.36401 C 102.55759,243.70064 103.38189,241.5425 105.23333,241.9205 C 105.74327,242.20038 106.1848,242.22973 106.3261,242.93562 C 106.21303,244.85803 105.60184,245.27941 102.9582,245.95387 C 102.48322,245.51067 102.1491,245.26111 102.21804,244.50796 C 103.16901,243.815 104.69809,241.48223 106.44657,242.43089 C 108.982,243.52815 105.42937,243.9214 105.06091,244.53653 C 103.53644,243.08274 103.94561,243.36679 106.98315,241.79946 C 108.10809,243.11953 107.46173,242.9266 104.56544,244.05425 C 103.23575,242.8124 104.37037,242.63223 106.88941,241.85824 C 107.26587,242.23217 107.62511,242.62803 108.04173,242.95798 C 108.54901,243.23066 109.05017,243.51022 109.61327,243.66666 C 110.51477,244.10543 111.39932,244.57821 112.22696,245.14867 C 114.441,246.51804 111.64822,248.1341 109.90986,247.31491 C 108.3132,246.60025 106.65308,245.84614 104.90239,245.67228 C 108.28389,243.55922 106.34027,243.84501 108.33702,244.40992 C 109.41764,244.5389 110.49054,244.57998 111.5801,244.52693 C 112.46981,244.60811 113.03792,244.73083 113.55551,245.53456 C 115.15487,247.21015 117.12727,248.32092 119.11811,249.50084 C 121.78147,250.99178 124.35147,250.6605 120.47354,252.54852 C 120.07631,251.91562 119.93407,251.46064 119.0658,251.55061 C 123.90851,248.69511 121.09995,250.23115 120.10862,251.13441 C 116.46198,253.28932 115.11738,254.00396 118.34221,252.06383 C 118.08478,252.53039 117.76067,252.46483 118.10422,253.06294 C 118.48787,253.23793 118.81864,253.49042 119.28688,253.4256 C 119.94786,253.30152 118.38325,254.54238 117.7324,254.71173 C 117.94999,254.18435 118.26418,253.64071 118.34916,253.02422 C 119.35571,251.29533 120.98731,250.3963 122.96513,249.69206 C 124.32774,249.39969 127.95505,247.75814 121.59095,250.97733 C 121.26696,250.79196 121.08557,250.41968 120.59745,250.51784 C 120.00571,250.51499 119.41355,250.5047 118.82222,250.53324 C 116.11867,250.88715 119.78906,250.21019 119.95376,249.27846 C 119.97657,249.64857 120.03274,250.17093 119.89677,250.56025 C 118.58447,251.37248 117.49041,252.88385 115.9486,252.37961 C 114.15183,251.44007 113.87914,251.98037 117.48844,250.0241 C 119.09898,251.01222 117.08204,251.10453 115.54365,252.05331 C 115.09747,250.96634 114.4785,249.91612 114.32965,248.73684 C 117.99451,246.70506 117.65015,246.94302 120.32471,249.38812 C 117.33994,251.8117 118.54318,251.67368 116.49248,250.05964 C 115.37937,249.20828 114.23443,248.3937 113.1992,247.44599 C 111.53556,245.71435 111.64533,246.03738 114.99226,244.45474 C 115.40694,244.64852 115.76753,244.90085 116.24898,244.8935 C 116.87401,245.08432 117.47656,245.26464 117.99223,245.70258 C 118.85185,246.24202 119.69935,246.8323 120.69117,247.10304 C 120.0057,247.66354 119.19609,249.05993 118.46771,248.55646 C 117.88286,248.34005 117.31963,248.12871 116.67357,248.15198 C 115.68382,248.06135 114.68926,247.93899 113.69492,248.03789 C 111.11179,248.45126 114.33029,246.09561 115.04287,247.2056 C 116.04505,248.04785 117.10284,248.81911 118.25148,249.45754 C 118.85836,249.80098 119.49051,250.11762 119.98663,250.61897 C 120.51637,250.98674 121.03463,251.3809 121.6591,251.59232 C 123.31281,251.95149 124.45617,251.07821 120.50483,253.12151 C 121.83054,252.22178 123.05508,251.07804 124.62488,250.57139 C 125.08668,250.72312 125.37295,250.56122 125.48062,251.20715 C 124.00448,252.20176 122.98604,254.06312 121.82377,252.75364 C 121.82041,252.23758 121.77882,251.71681 121.95912,251.21514 C 123.20105,250.37577 124.32701,248.61018 125.84124,249.39308 C 127.09171,251.11903 126.42045,250.92032 123.53941,252.40249 C 122.93393,252.42292 122.32761,252.44873 121.71806,252.3036 C 121.21234,252.26486 120.69569,252.26592 120.21595,252.08009 C 119.98909,251.91052 119.69343,251.80677 119.53326,251.55002 C 118.98489,251.27069 118.43681,250.94328 117.82558,250.78805 C 115.20883,250.6215 118.8452,250.08155 119.16221,249.37634 C 119.76509,249.8345 120.41371,250.24818 120.9817,250.75925 C 122.89093,252.65813 122.29618,252.9195 118.98899,253.72694 C 117.06292,252.44485 115.13368,251.15871 113.10762,250.03834 C 112.24617,249.59449 111.36199,249.21669 110.49684,248.78456 C 109.79545,248.43415 109.05606,248.14526 108.42182,247.67644 C 107.64997,247.0626 106.89954,246.33806 105.92121,246.09887 C 109.04828,244.17979 107.84373,243.84692 108.64124,245.24567 C 109.10548,245.77142 109.61193,246.22771 109.70017,246.96226 C 106.61963,248.87732 106.75241,249.07023 103.83327,247.99214 C 101.32171,247.4443 104.74973,245.8735 105.41585,246.36504 C 105.91356,246.78032 106.39422,247.22217 106.95676,247.55024 C 106.23732,248.12142 105.78646,249.20246 104.88222,249.36431 C 105.00617,249.27167 107.00605,246.40102 108.16565,247.71782 C 108.72558,248.25828 109.33206,248.76921 109.67053,249.48861 C 108.67814,250.23117 107.25061,252.03429 105.39039,251.48145 C 106.09992,251.00625 107.46223,249.53024 107.69042,250.35315 C 106.90406,251.07667 104.43779,253.11508 105.31776,252.50887 C 106.20335,251.89879 107.09475,251.29719 107.98324,250.69135 C 108.91278,251.47344 109.87753,252.23322 110.80441,253.02597 C 113.26237,255.14424 114.49805,255.53536 110.47888,256.80911 C 108.51677,254.41588 106.75532,254.35738 110.63632,252.25186 C 110.89831,252.37319 111.12811,252.67788 111.47315,252.63942 C 110.93526,253.01718 109.63585,254.3594 109.83157,253.73191 C 109.85798,252.95889 109.92703,252.231 109.42904,251.53853 C 108.4108,250.97597 107.22682,250.94614 106.08531,250.63471 C 103.625,249.93802 101.06436,250.08004 105.37266,247.99314 C 105.85961,249.07018 106.41117,250.20166 106.87706,251.31834 C 105.18459,253.13541 104.59681,255.13967 102.75669,252.29021 C 100.88444,249.89727 99.934584,249.83865 103.75472,247.91808 C 104.55444,248.13249 105.35663,248.36309 106.16315,248.5636 C 106.90716,248.68464 107.69428,248.704 108.31143,249.17465 C 108.76832,249.6827 109.12022,250.19391 109.78106,250.51008 C 111.60606,252.16888 111.9152,252.12412 108.27629,253.57787 C 106.90815,252.06936 108.34036,251.82747 110.72939,250.93358 C 112.75631,251.66833 113.77552,251.36043 109.98697,253.2612 C 109.79449,252.69213 109.25724,251.57393 108.9619,250.80218 C 108.67864,249.00531 110.362,247.02968 112.14148,248.36346 C 112.83722,250.71034 112.1321,250.87983 109.36696,252.20648 C 108.87976,251.59271 108.41632,251.00748 108.38816,250.12122 C 109.21008,249.53863 110.79209,247.17232 112.18264,248.51624 C 111.47177,248.96783 109.50191,250.22143 109.83399,249.44749 C 110.13389,248.76827 110.44118,248.09682 110.84579,247.46667 C 111.29212,246.52251 111.70941,245.57 112.09726,244.60014 C 114.81318,242.89282 115.00198,242.2404 117.59686,242.96306 C 119.097,243.51998 120.72201,244.06648 121.50794,245.58407 C 121.62676,248.50159 117.55056,250.23841 115.72656,251.89821 C 113.74739,253.28962 104.54172,258.55986 111.6243,253.79965 C 112.44866,253.57733 113.2594,253.35269 114.13534,253.44685 C 115.89174,253.41722 118.30296,252.59674 113.62513,254.81345 C 113.84063,254.4278 114.14415,253.93135 114.26966,253.38774 C 115.78388,251.52437 117.19646,250.28109 119.56662,249.24521 C 120.49858,248.86422 121.32987,248.53426 122.34404,248.87794 C 122.96449,249.6523 123.0798,249.8445 122.10233,250.60659 C 120.12277,251.8933 118.11083,253.58027 115.75696,253.86977 C 115.53995,253.20219 115.36112,252.97384 116.02718,252.29874 C 118.10981,251.11872 118.59408,250.11653 120.43006,250.74202 C 121.54194,252.2088 120.81079,252.03659 117.90287,253.14124 C 117.87348,252.63243 117.22819,252.6531 118.08284,252.15845 C 119.67654,251.23611 120.7809,250.14256 122.32555,250.14088 C 122.06928,250.32835 120.08419,252.25429 118.6807,252.4971 C 119.56789,251.72768 120.49294,250.36185 121.64446,250.59232 C 122.21578,250.94193 122.70962,251.17579 122.90616,251.88676 C 122.52345,252.80123 122.02761,253.36701 121.03624,253.89658 C 120.67601,254.16702 118.78196,255.15346 119.67545,255.30909 C 120.65105,255.3712 121.48488,255.29677 121.70268,256.30109 C 120.09684,257.30475 118.30161,259.32991 116.37281,258.45238 C 116.05091,257.2425 116.23482,256.22181 116.86336,255.07758 C 118.11912,254.25607 119.93861,251.67687 121.10378,253.53791 C 121.26604,254.37757 121.47422,255.20557 121.26327,256.07371 C 121.03563,257.02917 120.70047,257.91512 121.20431,258.83787 C 123.55905,260.19047 125.02969,258.81694 122.06967,260.14794 C 122.13726,257.385 119.58133,255.24118 117.78742,253.45126 C 114.4234,250.86155 109.2218,250.91298 113.11308,248.81903 C 112.83452,249.69545 113.11817,250.14574 114.20218,251.10212 C 115.34726,252.28253 116.56324,253.44311 118.05597,254.17013 C 115.11091,256.25326 116.23067,256.28639 113.83582,255.37724 C 112.74666,255.01299 111.64821,254.6733 110.56601,254.29077 L 113.29893,252.49261 z "
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2025" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_11.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_11.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_11.svg	(revision 590)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       id="g2276">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(29.87327,68.56076)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-153.11321,-216.64025)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <g
+         transform="matrix(6.566357,0,0,6.602753,-2189.5614,-3285.1837)"
+         id="g1993">
+        <path
+           d="M 360.11698,554.78432 L 360.11698,530.68235 L 357.48858,533.04951 L 362.491,515.61862 L 367.15429,532.40393 L 364.86503,530.68235 L 364.86503,554.78432 L 360.11698,554.78432 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.51286328px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1989" />
+        <path
+           d="M 360.60824,550.26871 L 375.72776,550.26871 L 374.24282,547.55972 L 385.17747,552.71553 L 374.6478,557.52181 L 375.72776,555.16236 L 360.60824,555.16236 L 360.60824,550.26871 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.21646953px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1991" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_30.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_30.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_30.svg	(revision 590)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.043913,0,0,1.0288552,-185.57267,-259.23818)"
+       id="g2314">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(227.4542,205.0977)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2055" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(47.70264,37.89736)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2063" />
+      <g
+         transform="matrix(1.266604,0,0,1.156406,-28.30399,-130.7979)"
+         id="g4734">
+        <g
+           id="g3828">
+          <path
+             d="M 405.07117 505.36459 A 28.284271 39.901024 0 1 1  348.50262,505.36459 A 28.284271 39.901024 0 1 1  405.07117 505.36459 z"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:none;stroke-width:10.64999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2034" />
+          <path
+             d="M 391.93919 594.76306 A 43.941635 87.88327 0 1 1  304.05592,594.76306 A 43.941635 87.88327 0 1 1  391.93919 594.76306 z"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:none;stroke-width:10.64999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2036" />
+          <path
+             d="M 331.33003 377.58029 A 33.335033 33.335033 0 1 1  264.65996,377.58029 A 33.335033 33.335033 0 1 1  331.33003 377.58029 z"
+             transform="matrix(0.471179,0,0,0.592392,190.4158,324.1156)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:31.93136787;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2038" />
+          <path
+             d="M 308.55142,531.85967 C 322.31437,522.41867 336.43486,515.4482 353.93909,531.85967 L 331.13438,420.43149 L 308.55142,531.85967 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.27360439px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path2040" />
+          <path
+             d="M 354.02387,564.30279 C 340.26092,573.7438 326.14043,580.71427 308.6362,564.30279 L 331.44091,675.73097 L 354.02387,564.30279 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.27360439px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3820" />
+          <path
+             d="M 343.80124,525.60223 C 353.24224,539.36518 360.21271,553.48567 343.80124,570.9899 L 455.22942,548.18519 L 343.80124,525.60223 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.27360439px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3822" />
+          <path
+             d="M 317.34358,570.9899 C 307.90256,557.22696 300.9321,543.10647 317.34358,525.60224 L 205.9154,548.40695 L 317.34358,570.9899 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.27360439px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path3824" />
+        </g>
+        <path
+           d="M 610.13216 485.6666 A 69.19545 73.741135 0 1 1  471.74126,485.6666 A 69.19545 73.741135 0 1 1  610.13216 485.6666 z"
+           transform="translate(-209.1016,61.66945)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3837" />
+        <path
+           d="M 610.13216 485.6666 A 69.19545 73.741135 0 1 1  471.74126,485.6666 A 69.19545 73.741135 0 1 1  610.13216 485.6666 z"
+           transform="matrix(1.172345,0,0,1.133665,-302.6838,-3.141892)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4724" />
+        <path
+           d="M 450.35713 472.18362 A 2.3214285 2.3214285 0 1 1  445.71428,472.18362 A 2.3214285 2.3214285 0 1 1  450.35713 472.18362 z"
+           transform="matrix(0.449919,-0.449918,1.088359,1.088359,-440.4914,182.7925)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4726" />
+        <path
+           d="M 450.35713 472.18362 A 2.3214285 2.3214285 0 1 1  445.71428,472.18362 A 2.3214285 2.3214285 0 1 1  450.35713 472.18362 z"
+           transform="matrix(0.449919,-0.449918,1.088359,1.088359,-333.4851,293.2862)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4728" />
+        <path
+           d="M 450.35713 472.18362 A 2.3214285 2.3214285 0 1 1  445.71428,472.18362 A 2.3214285 2.3214285 0 1 1  450.35713 472.18362 z"
+           transform="matrix(0.449918,0.449919,-1.088359,1.088359,592.0759,-111.6229)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4730" />
+        <path
+           d="M 450.35713 472.18362 A 2.3214285 2.3214285 0 1 1  445.71428,472.18362 A 2.3214285 2.3214285 0 1 1  450.35713 472.18362 z"
+           transform="matrix(-0.449919,-0.449918,-1.088359,1.088359,1100.485,179.7862)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.56999993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4732" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_12.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_12.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_12.svg	(revision 590)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-672.29156"
+       y="401.89316"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1904" />
+    <g
+       id="g2318">
+      <path
+         d="M 144.63022,264.05769 L 212.21011,91.515571 L 278.94537,264.05769 L 211.3653,436.59979 L 144.63022,264.05769 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15.19420242px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3529" />
+      <path
+         d="M 495 441.29074 A 62.5 32.5 0 1 1  370,441.29074 A 62.5 32.5 0 1 1  495 441.29074 z"
+         transform="matrix(0.98806,0,0,1.2714034,-214.42615,-299.72441)"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.22312641;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3531" />
+      <path
+         d="M 206.82872,312.78865 L 209.45683,408.64233 L 179.88855,307.65363 C 188.60997,308.86183 186.37506,311.20474 206.82872,312.78865 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.3971262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4418" />
+      <path
+         d="M 215.43536,212.71282 L 212.3496,114.27707 L 242.61824,218.19018 C 233.89682,216.98197 235.88901,214.29673 215.43536,212.71282 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.46815443;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path5305" />
+      <path
+         d="M 169.07202,240.61131 C 169.29219,240.21848 169.50278,240.212 170.00894,239.92591 C 170.25388,239.83239 170.47608,239.89173 170.72095,239.93246 C 170.9907,240.0213 171.21608,240.18691 171.44976,240.33851 C 171.6675,240.5319 171.92875,240.54732 172.19986,240.596 C 172.49683,240.54399 172.74345,240.67487 173.00033,240.7445 C 173.13597,240.88574 173.22349,241.06024 173.33205,241.21724 C 173.40767,241.44499 173.60251,241.40379 173.77391,241.48417 C 174.03057,241.49284 174.26165,241.59581 174.49639,241.68414 C 174.70592,241.75024 174.86058,241.89104 175.033,242.01748 C 175.25891,242.17444 175.42134,242.06056 175.64194,242.03437 C 175.60479,241.99337 174.98997,242.50891 175.6625,241.88921 C 176.06511,241.52567 176.53465,241.35532 177.0335,241.21613 C 177.04865,241.20835 176.99923,241.22108 176.98403,241.22876 C 177.9522,240.62524 177.61269,240.70725 177.97038,241.14628 C 178.06553,241.34939 178.06531,241.57229 178.09541,241.789 C 178.11754,242.04213 178.10283,242.29558 178.09516,242.54808 C 178.04192,242.79942 178.02483,243.05529 177.99595,243.30967 C 177.97028,243.5561 177.98892,243.80391 177.9928,244.0495 C 178.08273,244.27273 178.24428,244.23617 178.44537,244.29044 C 178.69309,244.30688 178.94155,244.30076 179.18961,244.29966 C 179.44426,244.29738 179.69891,244.29692 179.95357,244.29618 C 180.38508,244.35972 181.00703,243.97652 179.98793,244.5444 C 180.20686,244.39634 180.28767,244.16627 180.39614,243.94096 C 180.47264,243.69665 180.46969,243.44097 180.48118,243.18829 C 180.46268,242.94198 180.49758,242.69841 180.51304,242.45503 C 180.56205,242.19303 180.76829,242.08076 180.94238,241.9127 C 181.1931,241.78287 181.37765,241.57581 181.57407,241.38029 C 181.88793,240.96797 182.44944,240.94945 182.84241,240.78967 C 183.03328,240.83435 183.18189,240.96131 183.34727,241.05208 C 183.40672,241.25669 183.60333,241.31693 183.72718,241.4387 C 184.05718,241.50617 184.32998,241.695 184.60665,241.87608 C 184.94382,242.05995 185.04938,242.35167 185.20245,242.67789 C 185.35607,243.01418 185.38802,243.37724 185.43698,243.73755 C 185.39541,244.1036 185.52212,244.2603 185.7194,244.51589 C 186.03387,244.65846 186.38453,244.66563 186.72287,244.69978 C 187.1173,244.71026 187.30479,244.92867 187.57022,245.17126 C 187.6912,245.4316 187.83172,245.69186 187.95265,245.94539 C 188.04834,245.94967 187.85979,246.12964 187.77292,246.17007 C 188.04373,245.76602 188.56204,245.65999 188.96404,245.46325 C 189.56933,245.11895 188.2301,246.0358 189.03654,245.34124 C 189.43145,244.95369 189.93059,244.72975 190.44926,244.58068 C 190.76342,244.47139 190.90095,244.64285 191.13949,244.75608 C 191.31795,244.9964 191.21735,245.19247 191.19933,245.44868 C 191.10851,245.65945 190.98846,245.85771 190.87284,246.05498 C 190.83322,246.2556 190.71685,246.41871 190.6245,246.59398 C 190.21349,247.04624 189.85906,247.07867 189.36226,247.14628 C 189.08374,247.15644 188.805,247.15302 188.52637,247.15238 C 188.26911,247.15103 188.01185,247.15074 187.7546,247.15029 C 187.50134,247.15004 187.24808,247.1501 186.99481,247.15007 C 186.73983,247.1196 186.49976,247.20032 186.25631,247.25092 C 186.04455,247.29912 185.85376,247.3964 185.65422,247.4749 C 186.65813,246.75904 185.96213,247.41901 185.7599,247.71741 C 185.61534,247.89478 185.5243,248.10374 185.4183,248.30415 C 185.31272,248.50077 185.15686,248.65887 185.01429,248.82716 C 184.83146,249.02534 184.792,249.27111 184.72829,249.52027 C 184.72422,249.76056 184.53815,249.86355 184.41874,250.02915 C 183.85846,250.44176 183.01084,250.8746 183.96476,250.33878 C 183.80968,250.43155 183.68592,250.56387 183.54928,250.6795 C 183.17255,251.0417 182.77696,251.13837 182.31899,251.22809 C 182.26142,251.18986 182.45826,251.2409 182.5262,251.22846 C 182.41749,251.38901 182.46913,251.59354 182.4579,251.74991 C 182.6313,251.7972 182.81824,251.79868 182.99716,251.81279 C 183.29978,251.88183 183.34178,252.10229 183.48838,252.32119 C 183.5594,252.56821 183.55199,252.82558 183.55957,253.0797 C 183.57403,253.39294 183.52129,253.70208 183.48106,254.0115 C 183.50081,254.30957 183.34064,254.52157 183.22198,254.76803 C 183.05866,254.98615 182.88766,255.19786 182.716,255.40923 C 182.57701,255.60545 182.42612,255.79257 182.28038,255.98341 C 182.07946,256.12411 182.04288,256.33445 181.95047,256.53744 C 181.88374,256.80152 181.93016,257.06072 181.95913,257.32504 C 181.95645,257.57738 182.08775,257.77296 182.18515,257.9904 C 182.27761,258.2317 182.47417,258.38983 182.63677,258.57477 C 182.83144,258.7336 183.05102,258.86047 183.26092,258.99756 C 183.4813,259.18126 183.47098,259.42308 183.53087,259.67116 C 183.42863,260.31422 182.70076,260.06323 182.33335,260.17087 C 182.08647,260.1672 181.89818,260.02758 181.68822,259.92516 C 181.51489,259.7737 181.35762,259.6052 181.19386,259.44386 C 181.04027,259.29391 180.91869,259.1125 180.78747,258.94237 C 180.68739,258.77653 180.57853,258.61614 180.47162,258.45528 C 180.42431,258.27309 180.25027,258.2042 180.14413,258.09427 C 179.9813,258.03653 179.83472,257.94326 179.68084,257.86978 C 179.51691,257.73684 179.31479,257.74116 179.12036,257.70218 C 178.91043,257.74147 178.69818,257.76418 178.48689,257.79365 C 178.55835,257.65388 177.90715,258.02968 178.04554,257.95598 C 178.22928,257.85514 178.41304,257.7543 178.59678,257.65346 C 178.56799,257.67804 178.5392,257.70262 178.51041,257.7272 C 178.13532,258.06949 176.61891,258.84 177.93339,258.10523 C 177.58063,258.41875 177.12172,258.57891 176.71667,258.78524 C 176.48349,258.85339 176.25033,258.92026 176.01628,258.98327 C 176.09553,258.87017 175.51738,259.21795 175.63748,259.15001 C 175.81857,259.04734 175.99967,258.94467 176.18077,258.842 C 176.14573,258.86381 176.11069,258.88562 176.07565,258.90743 C 175.86103,259.07166 175.68125,259.27353 175.49453,259.46718 C 175.16469,259.87501 174.61825,259.91151 174.19315,260.09371 C 173.9597,260.05801 173.7448,259.92679 173.53416,259.81987 C 173.58275,259.68222 172.97352,259.94624 173.10049,259.87464 C 173.28572,259.77238 173.47094,259.67012 173.65616,259.56786 C 173.62724,259.59014 173.59832,259.61242 173.5694,259.63469 C 173.38211,259.78241 173.35239,260.00155 173.27477,260.21199 C 173.21144,260.47114 173.1682,260.73477 173.11521,260.99638 C 173.05262,261.32436 173.05277,261.65849 173.04045,261.99072 C 173.01247,262.26778 173.05299,262.54179 173.07107,262.81531 C 173.13026,263.04061 173.13473,263.27314 173.1565,263.50322 C 173.16762,263.75409 173.16494,264.00525 173.16637,264.25629 C 173.16618,264.51042 173.1659,264.76456 173.16566,265.0187 C 173.15424,265.27857 173.23294,265.52746 173.2883,265.7776 C 173.38041,266.04581 173.542,266.02901 173.76486,266.11913 C 173.81585,266.11557 173.7471,266.23675 173.70098,266.2588 C 173.88752,266.10392 173.96014,265.87476 174.06408,265.66453 C 174.15854,265.42893 174.22783,265.18141 174.29862,264.93938 C 175.02307,264.31599 174.96591,264.32107 175.36176,264.72958 C 175.45032,265.02065 175.43707,265.32647 175.44677,265.62696 C 175.44956,265.92877 175.44798,266.23059 175.44728,266.53241 C 175.41814,266.81095 175.52722,267.04218 175.62348,267.29211 C 175.70692,267.54596 175.89388,267.60522 176.08011,267.73764 C 176.31805,267.72329 176.50062,267.84527 176.70426,267.91656 C 176.9072,268.116 176.91004,268.36286 176.95279,268.62641 C 176.97336,268.90261 176.9691,269.17973 176.96962,269.45645 C 176.92412,269.69061 177.01459,269.88421 177.07289,270.09781 C 177.17821,270.2985 177.17701,270.52247 177.2092,270.73985 C 177.18147,271.0047 177.25184,271.25753 177.28877,271.51217 C 177.36357,271.75158 177.56153,271.85193 177.72456,272.00446 C 177.92166,272.04797 178.12626,272.01114 178.32567,271.99737 C 178.58862,271.97852 178.85224,271.97963 179.11564,271.97655 C 179.5067,271.96432 179.89445,271.97814 180.28339,272.01532 C 180.57465,272.01406 180.81713,272.15075 181.07697,272.2551 C 181.34181,272.35603 181.57144,272.51343 181.80858,272.66196 C 182.06637,272.86354 182.3016,273.09305 182.54042,273.31511 C 182.79146,273.43682 183.05784,273.3872 183.32314,273.37384 C 183.58907,273.30996 183.86033,273.28659 184.13127,273.25877 C 184.60195,273.20184 185.04548,273.29365 185.49889,273.40502 C 185.95407,273.48336 186.24786,273.74298 186.55205,274.06345 C 186.81969,274.36528 186.90872,274.72515 187.00004,275.10524 C 187.11989,275.72045 187.1594,276.34601 187.2009,276.97008 C 187.20317,277.37129 187.2398,277.76718 187.28568,278.16486 C 187.30006,278.50182 187.43705,278.80665 187.54924,279.11814 C 187.66582,279.39709 187.69009,279.69428 187.72581,279.98997 C 187.74241,280.25281 187.73827,280.51627 187.73834,280.77945 C 187.73608,281.09628 187.7362,281.4131 187.73608,281.72992 C 187.73592,282.06249 187.7352,282.39506 187.73452,282.72763 C 187.77246,283.08617 187.70806,283.42497 187.64645,283.77277 C 187.57575,284.0127 187.42285,284.20672 187.28899,284.41247 C 187.1721,284.6219 187.10701,284.85476 187.02589,285.07921 C 186.95612,285.2971 186.8519,285.49976 186.75935,285.70754 C 186.67015,285.91464 186.53352,286.09628 186.40909,286.28307 C 186.27304,286.48894 186.17607,286.71679 186.07015,286.93871 C 186.0086,287.17365 185.93295,287.40349 185.85718,287.63417 C 185.77488,287.89777 185.55646,288.02187 185.36664,288.19444 C 185.158,288.29891 185.03406,288.48601 184.88065,288.64541 C 184.82051,288.90116 184.65551,289.09472 184.53057,289.30802 C 182.59253,290.45245 184.65077,289.19489 184.02779,289.7275 C 183.93208,289.94916 183.94287,290.19002 183.93147,290.42596 C 183.92818,290.74328 183.93122,291.06061 183.93297,291.37794 C 184.00185,291.64868 183.87209,291.81186 183.78335,292.02424 C 183.02867,292.4871 183.10935,292.46387 182.62676,292.09474 C 182.44006,291.94135 182.26202,291.77785 182.08333,291.6166 C 181.85922,291.47454 181.85042,291.26041 181.76979,291.0389 C 181.73623,290.79183 181.74592,290.54211 181.7428,290.29359 C 181.71269,289.98436 181.85195,289.74296 181.97857,289.47726 C 182.14263,289.26343 182.1656,289.00764 182.23073,288.75933 C 182.26048,288.50935 182.25284,288.25736 182.25623,288.00627 C 182.25538,287.75228 182.25459,287.4983 182.25389,287.24431 C 182.25302,286.97815 182.25368,286.712 182.25408,286.44584 C 182.26175,286.16537 182.24973,285.88498 182.24038,285.60548 C 182.18145,285.35745 182.08806,285.12035 182.00723,284.8797 C 181.95753,284.66252 181.76408,284.62116 181.62484,284.49711 C 181.47219,284.38351 181.29197,284.32751 181.12524,284.24195 C 180.94384,284.13329 180.81235,283.96417 180.66612,283.81535 C 180.51949,283.69507 180.42019,283.53554 180.30091,283.39213 C 180.20328,283.27843 180.11703,283.16115 180.02587,283.04664 C 179.93953,282.84976 179.81073,282.67906 179.6947,282.50108 C 179.56126,282.26522 179.34266,282.12565 179.14256,281.95765 C 178.94594,281.82962 178.71912,281.8428 178.49766,281.8139 C 178.249,281.85604 177.99928,281.8867 177.74901,281.9166 C 177.49521,281.93828 177.39618,281.79297 177.21935,281.66066 C 177.0805,281.53884 176.98832,281.38021 176.87681,281.23646 C 176.77904,281.06131 176.67291,280.8914 176.56611,280.72168 C 176.51557,280.49996 176.39282,280.31607 176.29003,280.11929 C 176.13395,279.92659 175.9402,279.76905 175.75604,279.60443 C 175.54251,279.39529 175.47762,279.11562 175.3808,278.84524 C 175.31338,278.56489 175.29729,278.27575 175.27249,277.98967 C 175.22632,277.66993 175.17452,277.35186 175.11801,277.03374 C 175.05824,276.64858 175.04846,276.25885 175.03702,275.87007 C 175.03025,275.55858 175.03088,275.24702 175.03035,274.93548 C 175.01013,274.65759 175.10066,274.39932 175.16916,274.13681 C 175.29552,273.87532 175.45071,273.62901 175.59707,273.37848 C 175.73598,273.19211 175.81889,272.97737 175.91629,272.76878 C 176.02878,272.57735 175.99374,272.37318 176.00509,272.16907 C 175.96278,271.97479 175.89093,271.78566 175.82626,271.59689 C 175.74478,271.40754 175.6019,271.2631 175.474,271.10658 C 175.31109,270.99629 175.23238,270.81751 175.11889,270.67132 C 175.00759,270.29627 175.16888,270.00569 175.32056,269.66834 C 175.59609,269.43201 175.46629,269.12062 175.48775,268.91098 C 175.28087,268.83422 175.05745,268.8593 174.84134,268.85227 C 174.5853,268.85556 174.32926,268.85774 174.07322,268.8599 C 173.80811,268.89633 173.62894,268.74879 173.41038,268.63974 C 173.21554,268.51446 173.08043,268.32596 172.92536,268.1589 C 172.74872,267.97794 172.57564,267.79211 172.40227,267.60954 C 172.36378,267.36891 172.12284,267.4286 172.02341,267.36422 C 171.86026,267.39688 171.77159,267.22279 171.65448,267.15703 C 171.57262,266.9733 171.45565,266.81032 171.35272,266.63912 C 171.22721,266.48663 171.07618,266.35023 170.92955,266.21731 C 170.7709,266.03982 170.66775,265.82596 170.54396,265.62583 C 170.40712,265.37215 170.39393,265.08733 170.35776,264.80838 C 170.33887,264.54272 170.34196,264.27629 170.34086,264.01018 C 170.3714,263.75702 170.29929,263.5164 170.25601,263.27215 C 170.14264,263.05203 169.96094,263.08066 169.75276,263.02634 C 169.49766,263.05017 169.3843,262.89776 169.20593,262.77009 C 169.06914,262.6203 169.00816,262.42394 168.92852,262.24167 C 168.74394,262.09957 168.70524,261.89251 168.61583,261.69758 C 168.56373,261.45635 168.57448,261.209 168.56645,260.96416 C 168.58859,260.73213 168.53262,260.50971 168.49431,260.28337 C 168.45493,260.01068 168.45348,259.73495 168.44474,259.46021 C 168.44203,259.16433 168.44242,258.86845 168.44219,258.57256 C 168.47296,258.34074 168.3094,258.2073 168.22339,258.02793 C 168.05296,257.8819 167.86619,257.75993 167.68717,257.62609 C 167.48884,257.51589 167.33087,257.35199 167.16298,257.2034 C 167.00394,257.05086 166.85013,256.89318 166.69243,256.73922 C 166.53198,256.58528 166.48099,256.37191 166.40127,256.17224 C 166.34859,256.05271 166.32086,255.81741 166.30372,255.74175 C 168.29208,254.08334 166.48563,255.72799 167.13075,255.67916 C 167.19329,255.91157 167.20164,256.15428 167.22135,256.39298 C 167.27479,256.67859 167.29694,256.96763 167.32243,257.25645 C 167.33747,257.51618 167.33615,257.77641 167.33788,258.03645 C 167.37769,258.25341 167.40595,258.47232 167.43964,258.69019 C 167.4626,258.94565 167.46111,259.20233 167.46447,259.45855 C 167.3827,260.2587 166.65643,259.67299 166.46594,259.69341 C 166.30291,259.51147 166.18933,259.29782 166.06236,259.09133 C 165.97277,258.88604 165.86925,258.6883 165.77107,258.48738 C 165.63644,258.26689 165.6049,258.02011 165.55616,257.77363 C 165.51958,257.48655 165.53403,257.19786 165.53978,256.91058 C 165.58848,256.65357 165.61292,256.39399 165.63895,256.13419 C 165.6274,255.87153 165.67724,255.6207 165.72377,255.36559 C 165.82093,255.163 165.68582,255.05802 165.63138,254.887 C 165.53073,254.71057 165.39354,254.55996 165.26847,254.40094 C 165.12521,254.25382 164.98079,254.10827 164.83452,253.96434 C 164.72599,253.80827 164.60913,253.65911 164.49445,253.50749 C 164.3535,253.29812 164.24146,253.07195 164.12229,252.85 C 163.96532,252.59451 163.94325,252.30863 163.89965,252.02122 C 163.87619,251.73952 163.88024,251.45672 163.87908,251.17436 C 163.86629,250.74222 163.90041,250.31314 163.9396,249.88339 C 163.9774,249.55795 163.98942,249.23083 164.00342,248.90386 C 163.96179,248.60799 164.05723,248.36606 164.1463,248.09668 C 164.26055,247.85612 164.47432,247.71372 164.66774,247.54553 C 164.84306,247.35669 165.0321,247.1853 165.22533,247.01474 C 165.41114,246.88021 165.54707,246.69821 165.69937,246.53205 C 165.83705,246.36688 165.867,246.156 165.92795,245.95654 C 166.00339,245.71171 166.06149,245.46386 166.11826,245.21454 C 166.1144,244.98028 166.23276,244.79343 166.31767,244.58845 C 166.48453,244.38244 166.61553,244.15614 166.74815,243.92782 C 166.89431,243.72179 166.99145,243.49049 167.10637,243.26973 C 167.17709,243.03612 167.16501,242.79175 167.17763,242.55133 C 167.23825,242.31558 167.13178,242.12202 167.0793,241.92296 C 166.74062,241.91028 166.13444,242.32084 167.19807,241.72387 C 166.84284,242.03582 166.3348,242.17712 165.95891,242.34471 C 165.73031,242.30195 165.62583,242.11577 165.48013,241.95448 C 165.36963,241.78566 165.19404,241.69207 165.04727,241.56383 C 164.87708,241.48498 164.67345,241.47444 164.4925,241.45745 C 164.28519,241.34311 164.5181,241.15545 164.52798,241.03892 C 164.78527,240.65996 165.28044,240.56854 165.6578,240.38456 C 165.89197,240.32408 166.1115,240.39169 166.34089,240.42006 C 166.53898,240.38576 166.74334,240.33183 166.94094,240.28058 C 167.2122,240.25258 167.48578,240.23452 167.75648,240.21373 C 168.01639,240.13281 168.28452,240.14492 168.55069,240.13663 C 168.83546,240.22113 169.12266,240.26432 169.41467,240.30428 C 169.70387,240.40437 169.63158,240.54481 169.69054,240.77855 L 169.01212,241.10533 C 168.96846,241.02922 169.07892,240.684 168.80203,240.73902 C 168.51353,240.69316 168.22914,240.6403 167.94393,240.57448 C 167.67958,240.59069 167.41449,240.59393 167.1556,240.66463 C 166.8844,240.68141 166.61132,240.6921 166.34218,240.73332 C 166.14044,240.78745 165.93368,240.86521 165.72416,240.8508 C 165.50085,240.83069 165.2842,240.77111 165.05866,240.8393 C 165.10883,240.80109 165.2642,240.69661 165.22145,240.743 C 165.19321,240.82242 164.9987,240.94319 165.11784,241.03439 C 165.31176,241.05343 165.51197,241.04292 165.68201,241.15831 C 165.83796,241.28751 166.00611,241.39825 166.12508,241.5676 C 166.2632,241.71523 166.3511,241.88357 166.56972,241.90454 C 166.53911,241.92972 166.46692,242.0239 166.4983,241.99968 C 167.06972,241.66104 167.1975,241.44293 167.72497,241.53456 C 167.78839,241.75459 167.91358,241.95075 167.84665,242.21093 C 167.83631,242.45761 167.84765,242.70743 167.78576,242.94905 C 167.67649,243.17742 167.59481,243.41679 167.43132,243.61899 C 167.30378,243.85063 167.18266,244.08365 167.00494,244.28268 C 166.91318,244.47953 166.78672,244.65313 166.79216,244.88451 C 166.73886,245.13694 166.68395,245.38706 166.60598,245.63343 C 166.54878,245.83928 166.51499,246.05727 166.39126,246.23565 C 166.23983,246.40685 166.11233,246.59803 165.91855,246.73004 C 165.7235,246.89802 165.53009,247.06523 165.36471,247.26293 C 165.16971,247.42264 164.95466,247.564 164.82939,247.79041 C 164.72629,248.04923 164.62931,248.27142 164.67213,248.56491 C 164.65769,248.89445 164.64548,249.22419 164.6048,249.55196 C 164.56329,249.97872 164.52607,250.40436 164.54621,250.83382 C 164.54719,251.11406 164.54359,251.39466 164.56328,251.67443 C 164.60286,251.95262 164.62087,252.22892 164.77227,252.47641 C 164.89031,252.69465 165.00074,252.91742 165.14121,253.12259 C 165.25422,253.27191 165.37004,253.41853 165.47733,253.57205 C 165.62459,253.71785 165.77159,253.86376 165.91386,254.01459 C 166.04038,254.17534 166.17885,254.32785 166.28118,254.506 C 166.34582,254.6955 166.49589,254.81783 166.40123,255.04355 C 166.36026,255.29357 166.28431,255.53764 166.30973,255.79764 C 166.28553,256.05856 166.2652,256.3197 166.21121,256.57691 C 166.20181,256.85859 166.18327,257.14225 166.21953,257.4246 C 166.27301,257.66142 166.28673,257.90638 166.42591,258.11757 C 166.52272,258.31627 166.625,258.51187 166.71341,258.71485 C 166.8359,258.91512 166.94332,259.12399 167.10495,259.29746 C 166.99671,259.46192 166.95116,259.921 166.79555,259.80061 C 166.79301,259.5466 166.79581,259.29215 166.77391,259.03877 C 166.74068,258.81824 166.71495,258.5966 166.66952,258.37786 C 166.66827,258.11907 166.66979,257.86011 166.65676,257.60155 C 166.63333,257.31411 166.61434,257.02624 166.55846,256.74251 C 166.53774,256.50959 166.52619,256.27274 166.47198,256.04445 C 166.87312,255.45965 164.53401,256.35655 166.95186,255.34487 C 166.98663,255.49508 167.0089,255.6561 167.05851,255.80553 C 167.13307,255.99581 167.18009,256.19852 167.33253,256.34457 C 167.49023,256.4993 167.64517,256.65652 167.80353,256.81051 C 167.97017,256.95489 168.12769,257.11256 168.32166,257.22219 C 168.50456,257.35944 168.69611,257.48491 168.86718,257.63798 C 168.97909,257.83167 169.12146,257.98362 169.10977,258.23179 C 169.10934,258.5272 169.10768,258.82264 169.11191,259.11804 C 169.11945,259.38904 169.11939,259.66108 169.15806,259.93008 C 169.1984,260.16 169.25605,260.38663 169.23472,260.62237 C 169.24134,260.86152 169.23091,261.10283 169.27684,261.33911 C 169.36263,261.52949 169.40229,261.72549 169.5802,261.86635 C 169.65821,262.04423 169.71978,262.2356 169.85201,262.38227 C 170.02053,262.46791 170.13356,262.63631 170.36579,262.59148 C 170.59714,262.67026 170.79443,262.65405 170.91482,262.91084 C 170.96228,263.16149 171.03984,263.40848 171.00923,263.66902 C 171.00969,263.93341 171.00635,264.19806 171.02243,264.46212 C 171.05468,264.73145 171.0635,265.00646 171.19535,265.25148 C 171.31615,265.44681 171.41628,265.65622 171.57314,265.8279 C 171.72129,265.96143 171.87729,266.0945 171.99872,266.25331 C 172.1003,266.42164 172.21722,266.58152 172.29738,266.76212 C 172.40104,266.80923 172.48458,266.97008 172.62836,266.91256 C 172.76941,267.00472 172.97568,266.99794 173.04843,267.22495 C 173.22089,267.40621 173.39376,267.59015 173.56813,267.77095 C 173.71937,267.93189 173.85136,268.1144 174.0429,268.232 C 174.25505,268.32862 174.42628,268.46023 174.67979,268.41765 C 174.93598,268.4153 175.19216,268.41255 175.44834,268.41043 C 175.67995,268.42373 175.91941,268.39154 176.12873,268.51372 C 176.17243,268.82211 176.27735,269.03293 175.99566,269.36291 C 175.84681,269.67827 175.68675,269.94482 175.77406,270.30004 C 175.88412,270.43944 175.96532,270.60932 176.119,270.71794 C 176.25135,270.88247 176.39932,271.03459 176.48387,271.23258 C 176.55061,271.42557 176.62429,271.61889 176.67035,271.81704 C 176.66588,272.03397 176.71105,272.2481 176.60037,272.45552 C 176.50531,272.66715 176.42476,272.88662 176.28081,273.07181 C 176.13711,273.32168 175.98817,273.56831 175.84742,273.81998 C 175.77587,274.07408 175.68085,274.32357 175.69819,274.59462 C 175.69748,274.90628 175.69559,275.21797 175.70018,275.52961 C 175.7105,275.91498 175.71816,276.30144 175.77707,276.68329 C 175.83492,277.00141 175.88733,277.31965 175.93552,277.6393 C 175.9602,277.92227 175.9767,278.20866 176.038,278.48712 C 176.12941,278.74308 176.18739,279.01018 176.39227,279.2061 C 176.57972,279.37715 176.78019,279.5374 176.93801,279.7377 C 177.04225,279.93687 177.16967,280.12183 177.21816,280.34712 C 177.32361,280.51381 177.42953,280.6801 177.5252,280.8527 C 177.63547,280.99385 177.72707,281.14974 177.8637,281.26986 C 178.02889,281.35563 178.11905,281.53181 178.35155,281.46881 C 178.60332,281.43591 178.85473,281.39413 179.10777,281.37559 C 179.33953,281.41418 179.5762,281.40636 179.77661,281.55393 C 179.97827,281.72937 180.2008,281.87695 180.33783,282.11688 C 180.45904,282.29921 180.59242,282.47436 180.68379,282.67568 C 180.77022,282.78385 180.86277,282.893 180.9484,283.00684 C 181.0668,283.14835 181.1668,283.30511 181.3103,283.42565 C 181.45016,283.56685 181.5746,283.73016 181.75293,283.82565 C 181.92347,283.90914 182.09949,283.97714 182.25669,284.08689 C 182.4198,284.21805 182.59247,284.29051 182.66337,284.5131 C 182.74583,284.76012 182.83902,285.00382 182.90444,285.25685 C 182.91595,285.53876 182.93102,285.8219 182.92105,286.10529 C 182.92158,286.37115 182.92214,286.63702 182.92227,286.90288 C 182.92294,287.1569 182.9236,287.41092 182.92468,287.66494 C 182.92351,287.91901 182.92821,288.1737 182.90377,288.42696 C 182.85398,288.68831 182.82094,288.94662 182.66318,289.17247 C 182.52974,289.42517 182.38519,289.65154 182.41133,289.95244 C 182.41362,290.19696 182.40464,290.44243 182.43336,290.68588 C 182.50526,290.89364 182.50722,291.08358 182.71837,291.21522 C 182.89864,291.37827 183.0764,291.54453 183.26558,291.69819 C 183.694,292.00121 183.87439,291.90535 183.07946,292.29674 C 183.15492,292.12231 183.37713,292.0075 183.26638,291.71862 C 183.26537,291.40099 183.26373,291.08336 183.26342,290.76573 C 183.27167,290.52102 183.26118,290.27221 183.34222,290.03707 C 183.86915,289.64151 184.63303,289.02912 183.83406,289.59055 C 183.97353,289.38731 184.15805,289.2251 184.19435,288.94916 C 184.34337,288.77696 184.44452,288.57403 184.66965,288.4735 C 184.86167,288.31506 185.07904,288.19653 185.17765,287.95199 C 185.25328,287.7206 185.3402,287.49375 185.38785,287.25397 C 185.49237,287.02861 185.5876,286.79699 185.72273,286.58734 C 185.84661,286.40235 185.98027,286.21828 186.07409,286.01683 C 186.16995,285.81179 186.27849,285.61374 186.34416,285.395 C 186.42683,285.16798 186.49897,284.93518 186.60146,284.71561 C 186.73704,284.51589 186.88285,284.32158 186.97141,284.09486 C 187.04167,283.75235 187.11053,283.42253 187.07025,283.06679 C 187.06962,282.73462 187.06879,282.40245 187.06928,282.07028 C 187.07012,281.75354 187.07101,281.4368 187.07089,281.12007 C 187.07052,280.85868 187.07358,280.59709 187.06041,280.33595 C 187.02881,280.04648 187.00893,279.75554 186.89634,279.48208 C 186.78176,279.16579 186.64085,278.85569 186.62434,278.51369 C 186.57817,278.11275 186.54085,277.71398 186.54539,277.30931 C 186.50904,276.68832 186.47339,276.0655 186.3462,275.45481 C 186.25704,275.0886 186.17054,274.73991 185.91336,274.44859 C 185.60228,274.15814 185.34088,273.88793 184.88878,273.82567 C 184.43687,273.72054 183.99486,273.64089 183.52804,273.70533 C 183.25845,273.73665 182.98922,273.76677 182.72302,273.8226 C 182.43977,273.82766 182.16306,273.86893 181.90663,273.71473 C 181.66987,273.49096 181.43723,273.25933 181.1764,273.06244 C 180.94079,272.92085 180.71139,272.77079 180.45111,272.67244 C 180.1972,272.57344 179.96044,272.4436 179.67644,272.44746 C 179.28831,272.41544 178.90112,272.40476 178.51135,272.4173 C 178.24783,272.42247 177.98404,272.42359 177.72108,272.44413 C 177.51002,272.45401 177.2967,272.49982 177.09488,272.41469 C 176.92287,272.247 176.7141,272.12798 176.63108,271.87685 C 176.59047,271.61609 176.51198,271.35868 176.54264,271.08628 C 176.51396,270.87718 176.51765,270.66197 176.41748,270.46866 C 176.35375,270.24493 176.25408,270.04333 176.30138,269.79733 C 176.30166,269.52262 176.30639,269.24758 176.2887,268.97324 C 176.25244,268.73114 176.25774,268.50289 176.0699,268.3216 C 175.87114,268.26295 175.67484,268.17064 175.45611,268.1578 C 175.26403,268.00766 175.05804,267.92618 174.97104,267.66123 C 174.86908,267.40265 174.75217,267.16202 174.77934,266.87313 C 174.78095,266.57128 174.78348,266.26943 174.78192,265.96758 C 174.77298,265.67638 174.78544,265.38011 174.70587,265.09678 C 174.72041,265.07467 174.23641,264.24722 174.9842,264.62991 C 174.90979,264.86708 174.82345,265.11099 174.74596,265.35206 C 174.64512,265.56946 174.56818,265.80367 174.39821,265.97882 C 174.00668,266.219 173.6402,266.6501 173.14858,266.54967 C 172.91584,266.43492 172.7208,266.43088 172.62997,266.13666 C 172.57141,265.88077 172.48857,265.62592 172.49719,265.35994 C 172.49741,265.10583 172.49767,264.85173 172.49792,264.59762 C 172.49674,264.34779 172.49927,264.09786 172.48935,263.84815 C 172.46925,263.62121 172.46645,263.39185 172.40818,263.16965 C 172.38814,262.89072 172.34251,262.61202 172.37435,262.32894 C 172.38572,261.99365 172.3838,261.65627 172.44242,261.32474 C 172.49595,261.06119 172.53836,260.79608 172.59634,260.53364 C 172.66779,260.3155 172.70208,260.08273 172.87175,259.91475 C 173.35264,259.61781 173.62394,259.29054 174.15794,259.40181 C 174.36212,259.50314 174.56353,259.6395 174.79537,259.64463 C 174.79775,259.6818 174.7901,259.79124 174.80252,259.75614 C 174.98935,259.55918 175.17502,259.36222 175.37564,259.17857 C 175.77711,258.9413 176.1589,258.654 176.61005,258.52173 C 176.84478,258.45973 177.07993,258.39812 177.31227,258.32675 C 177.28635,258.34572 177.20933,258.40359 177.23439,258.3835 C 179.35301,257.10938 176.85479,258.66812 177.81417,258.00997 C 178.22977,257.7416 178.59124,257.40775 179.08998,257.34501 C 179.30323,257.31332 179.51783,257.27433 179.73306,257.26667 C 179.93541,257.31582 180.14532,257.32013 180.31507,257.46243 C 180.4668,257.53261 180.61472,257.61427 180.7716,257.67524 C 180.88871,257.80217 181.06561,257.88915 181.12423,258.07926 C 181.22906,258.23738 181.33691,258.39448 181.43436,258.5579 C 181.56374,258.72603 181.68353,258.90473 181.83618,259.05239 C 181.99513,259.20919 182.14661,259.37496 182.31969,259.51659 C 182.52436,259.61038 182.70906,259.73744 182.94671,259.73845 C 182.90325,259.82371 182.94466,260.05824 182.86072,260.01247 C 182.81228,259.78409 182.83351,259.56675 182.62628,259.39806 C 182.41395,259.26355 182.19175,259.13779 182.0007,258.97272 C 181.8252,258.78604 181.63974,258.61022 181.53487,258.36798 C 181.43332,258.14168 181.29502,257.93733 181.29708,257.6748 C 181.26293,257.40333 181.21372,257.13679 181.27379,256.86402 C 181.35705,256.6464 181.37642,256.42435 181.58707,256.27556 C 181.73547,256.08656 181.89819,255.90696 182.02511,255.70067 C 182.19968,255.49295 182.37214,255.28417 182.53144,255.06379 C 182.6627,254.82979 182.8303,254.64074 182.81098,254.34345 C 182.85069,254.03727 182.90613,253.73136 182.89147,253.42155 C 182.88225,253.17549 182.89685,252.92571 182.8313,252.68533 C 182.69582,252.48574 182.66921,252.29569 182.38403,252.24694 C 182.18707,252.22895 181.97334,252.2528 181.80592,252.13277 C 181.80669,251.95167 181.71882,251.73488 181.84211,251.5401 C 182.15381,251.28985 182.3935,250.77563 182.91689,250.77121 C 183.6993,250.59251 182.83159,250.88369 182.85155,250.96362 C 182.98856,250.84536 183.11454,250.716 183.26217,250.61006 C 183.41932,250.5177 183.89243,250.2514 183.72037,250.31144 C 183.85102,250.16108 184.03412,250.08298 184.05472,249.85051 C 184.11264,249.59225 184.14697,249.33444 184.32108,249.12044 C 184.46584,248.95689 184.61649,248.79925 184.73427,248.6135 C 184.83716,248.4103 184.92485,248.1963 185.07354,248.0209 C 185.39455,247.52433 185.61833,247.26854 186.2415,247.00471 C 186.44352,246.93127 186.64078,246.8439 186.85053,246.79071 C 187.09964,246.74942 187.34493,246.67943 187.60177,246.70819 C 187.85503,246.70824 188.10831,246.70816 188.36158,246.70851 C 188.61875,246.7091 188.87591,246.70952 189.13307,246.71106 C 189.41057,246.71148 189.68831,246.71578 189.96555,246.701 C 190.75641,246.54112 190.02466,246.79853 189.9325,246.89168 C 190.02566,246.72259 190.16597,246.57492 190.18987,246.36981 C 190.30329,246.173 190.4047,245.96667 190.5214,245.7699 C 190.54994,245.53601 190.65572,245.37217 190.49665,245.14721 C 190.27751,245.06414 190.12781,244.92423 189.85222,245.03477 C 188.91645,245.35544 190.41728,244.6016 189.72968,245.06134 C 189.32752,245.42142 188.8917,245.7596 188.36566,245.9183 C 188.39407,245.89621 188.48818,245.84644 188.46337,245.87251 C 188.00825,246.18697 187.78592,246.58789 187.30881,246.33415 C 187.17162,246.08056 187.05949,245.81731 186.9299,245.55555 C 186.67129,245.33084 186.48863,245.13575 186.11256,245.13192 C 185.76312,245.09435 185.40269,245.08687 185.08636,244.91598 C 184.88141,244.64013 184.72523,244.47049 184.77415,244.08348 C 184.72977,243.72962 184.70266,243.37331 184.55206,243.04303 C 184.40419,242.72874 184.30224,242.45424 183.97815,242.2768 C 183.70165,242.10136 183.4284,241.92759 183.10246,241.85748 C 182.96136,241.73081 182.78926,241.65204 182.71055,241.455 C 182.55423,241.37453 182.41339,241.25328 182.23074,241.22872 C 182.2425,241.18297 182.29287,241.05264 182.26601,241.09147 C 182.07255,241.29116 181.89199,241.50715 181.64129,241.639 C 181.46685,241.7861 181.2574,241.88605 181.1892,242.12592 C 181.16963,242.36552 181.12575,242.60423 181.15024,242.84834 C 181.14058,243.10742 181.144,243.36911 181.07508,243.62161 C 180.97365,243.85839 180.89618,244.09899 180.68862,244.27143 C 180.10869,244.60592 179.93514,244.77859 179.34674,244.73818 C 179.09216,244.73904 178.83758,244.73966 178.58301,244.7419 C 178.33269,244.74229 178.08161,244.7495 177.83207,244.72523 C 177.60479,244.64252 177.42506,244.66723 177.32792,244.40014 C 177.32172,244.15026 177.29853,243.89766 177.32517,243.64627 C 177.34874,243.3901 177.36752,243.13352 177.42279,242.88136 C 177.42985,242.63395 177.45409,242.38419 177.42885,242.13528 C 177.40173,241.92595 177.40432,241.71074 177.31291,241.5145 C 177.67742,240.97123 175.56871,241.88642 177.68577,240.95876 C 177.27701,241.20676 176.88413,241.49553 176.43918,241.67445 C 176.20052,241.74575 175.82985,241.92516 176.35588,241.60668 C 175.96507,241.97172 175.57757,242.31158 175.05323,242.49994 C 174.81952,242.5041 174.6194,242.5937 174.39835,242.42307 C 174.22808,242.30086 174.07676,242.16327 173.87063,242.09933 C 173.63637,242.02678 173.40993,241.92096 173.1578,241.91563 C 172.95657,241.82604 172.77276,241.82587 172.67626,241.58736 C 172.5751,241.44208 172.49379,241.27851 172.36543,241.14912 C 172.11723,241.09567 171.86357,240.99852 171.5896,241.02934 C 171.30953,240.97049 171.03804,240.94402 170.81531,240.73914 C 170.58811,240.59529 170.36859,240.43612 170.1051,240.35942 C 169.86876,240.34799 169.64841,240.27233 169.41977,240.39555 C 170.36912,239.83091 170.0023,240.05217 169.74833,240.26601 L 169.07202,240.61131 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6202" />
+      <path
+         d="M 198.30994,229.46853 C 198.15135,229.58595 197.9499,229.62978 197.76988,229.7104 C 198.61043,229.09514 199.51024,228.61936 200.48865,228.29986 C 201.03269,228.19395 201.588,228.20894 202.13917,228.19919 C 202.7585,228.30259 203.35659,228.54136 203.95356,228.73045 C 204.66008,228.64133 205.29124,228.2918 205.94819,228.03592 C 206.55425,227.80304 207.19387,227.76435 207.8309,227.70403 C 208.43327,227.62448 208.56971,227.92737 208.96621,228.26655 C 209.24279,228.56485 209.51182,228.87305 209.79478,229.16487 C 210.07684,229.58194 210.16004,230.07981 210.28041,230.55954 C 210.35779,231.11166 210.75762,231.41498 211.06085,231.80297 C 211.44955,231.93261 211.77146,232.18293 212.11537,232.38908 C 212.40096,232.78851 212.83295,233.00352 213.20239,233.28189 C 213.64382,233.42966 213.70639,233.80683 213.91264,234.15407 C 214.11018,234.6823 213.96398,235.11113 213.84732,235.61659 C 213.33762,236.58081 212.14438,236.57941 211.30942,236.9475 C 210.74852,236.91608 210.22577,237.07672 209.68956,237.20773 C 209.15317,237.34784 208.59918,237.41415 208.05325,237.49135 C 208.23928,237.61131 209.25027,236.32294 208.74384,237.71339 C 208.69813,238.27298 208.71281,238.83503 208.7147,239.39582 C 208.78271,239.95923 208.56652,240.41762 208.36901,240.91757 C 207.816,241.77437 206.70887,241.97474 205.85096,242.39358 C 205.21238,243.09439 205.8785,241.28002 205.84674,242.56451 C 205.54634,243.00669 205.41893,243.5082 205.26972,244.00945 C 205.30339,245.10815 204.52598,245.13874 203.73961,245.51746 C 203.64737,245.1022 203.47952,244.71282 203.33745,244.3121 C 203.07244,243.90066 203.01203,243.42735 202.88634,242.97043 C 202.81715,242.4755 202.83174,241.97514 202.82139,241.4771 C 202.82084,240.92005 202.82421,240.36302 202.82695,239.80599 C 202.89324,238.95097 203.08894,238.11064 203.24551,237.26863 C 203.49671,236.72066 203.367,236.20879 203.31825,235.68269 C 203.04823,235.32482 202.81183,234.94367 202.5694,234.56592 C 202.3015,234.12885 201.97432,233.73802 201.66088,233.33493 C 201.36734,232.96971 201.00482,232.67485 200.66483,232.36316 C 200.24569,232.25811 199.80799,232.32881 199.38135,232.34717 C 198.95766,232.62164 198.70324,232.32008 198.34314,232.2596 C 198.17355,231.94337 197.9632,231.64091 197.7856,231.33027 C 197.68306,231.22332 197.6274,231.08357 197.54889,230.96115 L 198.85086,230.20799 C 198.92599,230.32379 198.97801,230.4574 199.07752,230.55733 C 199.24918,230.85487 199.45658,231.14328 199.61603,231.44763 C 199.91332,231.45031 200.25906,231.67691 200.5911,231.45642 C 201.04437,231.44682 201.50688,231.35593 201.93378,231.55409 C 202.27918,231.87998 202.64552,232.18922 202.94782,232.56264 C 203.26307,232.97092 203.59315,233.3665 203.86482,233.80734 C 204.11134,234.18718 204.35202,234.57012 204.62426,234.93141 C 204.6936,235.49967 204.86885,236.02245 204.58541,236.61968 C 204.4276,237.45135 204.23055,238.28162 204.15881,239.12623 C 204.15928,239.68214 204.15957,240.23805 204.15813,240.79396 C 204.16659,241.28492 204.15256,241.77779 204.2137,242.2663 C 204.3324,242.71647 204.38729,243.1801 204.64969,243.58442 C 204.78938,243.96433 204.96581,244.33246 205.03685,244.7331 C 203.54426,245.62144 203.78237,245.78759 203.91971,244.66462 C 204.05906,244.14568 204.17849,243.63139 204.47288,243.16848 C 205.1199,242.33207 205.98055,241.74542 207.03852,241.47852 C 207.02541,241.49681 206.98372,241.54974 206.99918,241.5334 C 207.18055,241.05029 207.47006,240.63703 207.37958,240.07865 C 207.3776,239.51274 207.36631,238.94617 207.39964,238.38088 C 207.67293,237.33305 207.79718,237.01881 209.25038,236.58292 C 209.7961,236.50996 210.34594,236.4494 210.87688,236.29455 C 211.41903,236.17397 211.9507,236.03573 212.51314,236.04911 C 212.50207,236.11159 212.49022,236.2992 212.47995,236.23658 C 212.57617,235.77249 212.81863,235.38977 212.5953,234.88098 C 212.39334,234.5939 212.3711,234.21587 211.94938,234.11451 C 211.557,233.83459 211.16184,233.57008 210.84166,233.19428 C 210.49447,232.99752 210.16516,232.76255 209.79167,232.60917 C 209.47178,232.18843 209.0542,231.8524 208.96219,231.27258 C 208.84667,230.81419 208.76833,230.33549 208.50261,229.93567 C 208.22179,229.64828 207.94909,229.34802 207.6805,229.04838 C 207.28508,228.81579 207.20786,228.43989 206.62404,228.5945 C 205.99718,228.6646 205.368,228.714 204.77497,228.95564 C 204.10843,229.2263 203.46036,229.58746 202.72498,229.58632 C 202.13812,229.3902 201.54828,229.13959 200.92889,229.08207 C 200.38335,229.09797 199.83241,229.08417 199.29761,229.2134 C 197.49448,229.89617 200.46898,228.39822 199.16576,229.1561 C 198.49925,229.57339 197.92249,230.36796 197.0818,230.36267 L 198.30994,229.46853 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6204" />
+      <path
+         d="M 214.25316,264.89764 C 214.0136,264.79202 213.73639,264.76563 213.47959,264.70003 C 213.0052,264.59205 212.5398,264.69275 212.06991,264.7205 C 211.55354,264.92018 211.16723,264.70349 210.69782,264.59037 C 210.33986,264.29897 209.90509,264.27765 209.48244,264.17216 C 208.98204,264.06449 208.50411,264.19555 208.01137,264.25104 C 207.96193,264.26927 208.08877,264.17659 208.13658,264.15439 C 207.74838,264.51093 207.46478,264.95691 207.16028,265.38232 C 206.82885,265.76794 206.60356,266.21947 206.34245,266.64972 C 206.10782,267.04158 205.99888,267.4885 205.85599,267.91789 C 205.71419,268.3993 205.72377,268.90108 205.68787,269.39576 C 205.6077,269.83472 205.54738,270.27719 205.47735,270.71767 C 205.42961,271.20665 205.43747,271.69823 205.42851,272.18872 C 205.42692,272.69655 205.42815,273.20437 205.42873,273.7122 C 205.41047,274.20755 205.44251,274.70376 205.45614,275.19669 C 205.57559,275.67443 205.87237,276.06016 206.13655,276.46265 C 206.36755,276.94282 206.74174,276.97294 207.16229,277.16133 C 207.62042,277.16911 208.05834,277.27666 208.50729,277.34812 C 208.95893,277.4156 209.41699,277.45669 209.86935,277.50049 C 210.21783,277.66457 210.61711,277.73228 210.97076,277.85223 C 211.13698,277.81606 210.82361,278.18865 210.67271,278.26729 C 210.94473,277.83358 211.04678,277.31778 211.18599,276.82939 C 211.43462,275.74022 212.16798,275.79317 213.13983,275.42812 C 213.36832,275.76807 213.5416,276.1477 213.73098,276.51237 C 213.95277,276.98619 213.97311,277.502 214.02808,278.01148 C 214.10453,278.56364 214.01331,279.09958 213.95294,279.64143 C 213.80049,280.28101 213.51892,280.87915 213.26629,281.48319 C 213.02163,282.01285 212.84922,282.56894 212.66748,283.12079 C 212.50938,283.63364 212.56675,284.147 212.59014,284.667 C 212.61594,285.18587 212.94586,285.41563 213.25614,285.77798 C 213.68007,286.17033 213.87712,286.68208 214.11301,287.18527 C 214.27418,287.74977 214.27442,288.33608 214.30153,288.91684 C 214.3544,289.47595 214.47312,290.02447 214.57233,290.57579 C 214.69463,291.17381 215.04569,291.63646 215.37252,292.12502 C 215.76909,292.46944 216.242,292.41187 216.72402,292.46918 C 216.63085,292.73209 217.772,292.10925 217.52878,292.24504 C 217.14795,292.45785 216.76711,292.67065 216.38628,292.88346 C 216.4341,292.84549 216.48192,292.80752 216.52973,292.76954 C 216.96335,292.62914 216.98128,292.22517 217.18833,291.92099 C 217.28689,291.4505 217.26313,290.96822 217.2764,290.49105 C 217.21164,289.88993 217.48322,289.43449 217.7346,288.92286 C 218.19935,288.04679 219.24061,287.81326 220.05649,287.37932 C 219.61956,287.65227 220.95309,286.87179 221.40314,286.62115 C 221.98645,286.39824 222.61124,286.39857 223.22457,286.35718 C 223.32515,286.3432 223.08781,286.5207 222.99195,286.55424 C 223.13447,286.10351 223.09497,285.62792 223.11055,285.16267 C 223.10742,284.65215 223.10393,284.14163 223.10088,283.63111 C 223.09802,283.11212 223.09915,282.59312 223.09952,282.07413 C 223.13539,281.43426 223.2831,280.81197 223.41585,280.18775 C 223.53898,279.63904 223.66364,279.09181 223.77674,278.54108 C 223.80286,277.98956 224.16864,277.70294 224.45672,277.29497 C 224.86708,277.01444 225.21865,276.66632 225.5928,276.34573 C 225.89499,275.87041 226.22906,275.42429 226.56081,274.97422 C 227.01576,274.54547 227.51208,274.16531 228.00363,273.78056 C 228.38087,273.54318 228.54907,273.15059 228.78156,272.8034 C 228.88556,272.35001 228.96211,271.88775 229.04022,271.42791 C 229.10365,270.94125 229.26033,270.47531 229.38869,270.00422 C 229.4205,269.57386 228.97248,270.03454 228.79842,270.04722 C 228.09822,270.44085 229.4162,269.69123 229.73098,269.52407 C 229.96581,269.39938 229.31212,269.85199 229.10269,270.01595 C 228.24206,270.70713 227.61657,270.89853 226.70868,271.14168 C 226.33257,271.11973 226.02259,270.88776 225.69265,270.73281 C 225.40536,270.43539 225.01998,270.37351 224.65177,270.23839 C 224.08627,270.00838 223.8055,269.51709 223.45492,269.06213 C 223.19131,268.2849 223.51967,267.65367 223.77953,266.9324 C 224.1065,266.48982 224.0842,266.02272 224.14145,265.52792 C 224.07979,265.13115 223.84119,264.81987 223.64573,264.48168 C 223.43624,264.04994 223.41235,263.56923 223.33725,263.10411 C 223.36293,262.67843 223.07003,262.36765 222.93384,262.03704 C 222.55569,261.79357 222.17034,261.91806 221.76802,261.92357 C 221.78327,261.9134 221.79726,261.96616 221.78231,261.97676 C 220.9566,262.7647 220.13087,262.93558 219.14028,263.10308 C 218.39588,263.12116 217.08961,263.95848 219.26921,262.73185 C 218.93506,262.9277 218.71681,263.24923 218.46693,263.53429 C 217.36252,264.39359 217.13944,264.38565 216.07596,264.40559 C 215.58023,264.33784 215.112,264.49461 214.63753,264.58903 C 214.27533,264.8022 213.87651,264.9126 213.48865,265.0607 L 214.68233,264.14436 C 215.06012,263.9818 215.44757,263.83091 215.8267,263.66951 C 216.31283,263.59364 216.7921,263.45868 217.29218,263.52122 C 218.05693,263.47175 219.22676,263.12721 217.07108,264.10499 C 217.31922,263.82278 217.56169,263.50973 217.86745,263.28387 C 218.86947,262.69349 219.30825,262.28393 220.34684,262.20785 C 220.71842,262.12613 221.98962,261.74772 220.38733,262.53134 C 221.1929,261.94889 222.00562,261.3005 222.97013,261.01759 C 223.40661,261.04126 223.8309,260.94345 224.21519,261.24351 C 224.39225,261.61253 224.66777,261.92884 224.6624,262.39362 C 224.73275,262.84429 224.75728,263.31121 224.94991,263.73254 C 225.15414,264.08439 225.40178,264.40787 225.47113,264.8201 C 225.43314,265.35034 225.49509,265.83531 225.13652,266.3116 C 224.87555,266.98062 224.53535,267.57848 224.75143,268.31277 C 225.08593,268.73793 225.34797,269.19923 225.89482,269.39239 C 226.26446,269.5404 226.65737,269.61272 226.95385,269.90813 C 227.26942,270.04154 227.55807,270.27375 227.92118,270.24642 C 228.47768,270.03186 230.05204,269.454 227.70026,270.56322 C 228.41372,270.01925 229.14762,269.49218 229.97143,269.10327 C 230.32097,269.1456 230.68482,268.726 230.74789,269.35536 C 230.6168,269.82278 230.45184,270.28509 230.38956,270.77017 C 230.31013,271.23746 230.21928,271.701 230.1461,272.16859 C 229.92313,272.54199 229.78707,272.96277 229.39637,273.2252 C 228.90175,273.60406 228.40882,273.98488 227.94275,274.39988 C 227.59474,274.83723 227.2418,275.2582 226.9756,275.76189 C 226.61065,276.10053 226.29258,276.4776 225.84149,276.7172 C 225.53355,277.09831 225.17614,277.34632 225.12344,277.87967 C 225.01518,278.43513 224.89408,278.9855 224.76245,279.53586 C 224.62648,280.15059 224.48508,280.76314 224.43427,281.3926 C 224.43523,281.91105 224.43607,282.42951 224.43741,282.94796 C 224.44028,283.45867 224.44318,283.96937 224.44752,284.48007 C 224.4368,284.9611 224.46903,285.44857 224.35791,285.9213 C 223.73763,286.39718 223.02853,287.37004 222.01713,287.24428 C 221.41194,287.29419 220.79655,287.29947 220.23152,287.55563 C 222.57593,286.1461 219.71132,287.9998 218.87338,288.30687 C 218.93733,288.26148 219.15796,288.25816 219.10815,288.31878 C 218.84175,288.80239 218.55486,289.22265 218.61362,289.80891 C 218.60381,290.29597 218.62406,290.78638 218.54427,291.26921 C 218.37844,291.65282 218.37488,292.01834 217.9277,292.20826 C 217.08415,292.73409 216.48082,293.36137 215.50644,293.34835 C 214.98834,293.26256 214.49444,293.30659 214.08837,292.89774 C 213.75072,292.38805 213.38757,291.90388 213.25384,291.28506 C 213.14954,290.72539 213.02917,290.16891 212.96733,289.6016 C 212.94541,289.03431 212.95047,288.46146 212.8008,287.90842 C 212.57526,287.42348 212.38538,286.93315 211.97306,286.55869 C 211.65131,286.17404 211.28815,285.91823 211.26347,285.36883 C 211.22951,284.83101 211.16117,284.3024 211.31492,283.76889 C 211.49093,283.20735 211.6602,282.64394 211.90753,282.10669 C 212.15974,281.51023 212.44376,280.91927 212.60371,280.28984 C 212.6735,279.76256 212.77355,279.24386 212.69579,278.70251 C 212.63557,278.21432 212.64473,277.71246 212.4248,277.25708 C 212.24734,276.91765 212.08384,276.56206 211.87121,276.24663 C 212.63163,275.70461 213.17852,274.98389 212.53922,276.18642 C 212.3982,276.69057 212.27527,277.20404 212.06213,277.68335 C 211.31069,278.1508 210.67409,278.79741 209.74294,278.72711 C 209.38029,278.60094 209.00505,278.48239 208.63821,278.36472 C 208.18298,278.32278 207.72361,278.29664 207.27344,278.2091 C 206.82415,278.14327 206.3798,278.05464 205.92601,278.01769 C 205.49935,277.7959 205.07862,277.72841 204.84584,277.22898 C 204.56799,276.80533 204.26029,276.39764 204.12659,275.89838 C 204.10942,275.39986 204.0684,274.897 204.09192,274.39493 C 204.09132,273.88683 204.09024,273.37874 204.09113,272.87065 C 204.09832,272.37616 204.09089,271.88086 204.13204,271.38748 C 204.19688,270.9485 204.23686,270.50589 204.34889,270.07431 C 204.37322,269.56858 204.37535,269.05864 204.50035,268.56409 C 204.63866,268.12446 204.74674,267.66858 204.97014,267.26207 C 205.22845,266.82668 205.44352,266.36492 205.7883,265.98444 C 206.09043,265.5525 206.37044,265.10009 206.74472,264.72459 C 207.52684,264.22539 208.26691,263.54069 209.2104,263.34756 C 209.7125,263.2849 210.20408,263.20247 210.7105,263.30556 C 211.13998,263.42927 211.58792,263.47175 211.95575,263.76452 C 212.39999,263.83767 212.79892,264.00094 213.27004,263.8183 C 213.74974,263.80341 214.23073,263.72268 214.71099,263.83307 C 214.96802,263.88994 215.22376,263.97125 215.48131,264.0035 L 214.25316,264.89764 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6208" />
+      <path
+         d="M 227.43056,285.97413 C 227.60748,285.83224 227.88226,285.93682 228.1081,285.91817 C 227.76031,286.20424 227.70251,286.59935 227.54688,286.98295 C 227.49832,287.47487 227.40908,287.96065 227.32317,288.44727 C 227.28846,288.94451 227.17545,289.42854 227.08146,289.91651 C 226.84696,290.32111 226.16524,290.12267 225.69866,290.14082 C 225.88511,289.74895 225.95706,289.32586 226.06958,288.913 C 226.09049,288.46058 226.19906,288.02369 226.28746,287.58176 C 226.40175,287.20229 226.63506,286.86559 226.83707,286.52529 C 226.96083,286.32793 226.98127,286.09164 227.05274,285.87669 L 228.40525,285.22295 C 228.33972,285.44978 228.32458,285.69503 228.2077,285.90679 C 228.01369,286.2427 227.81058,286.58008 227.63904,286.92248 C 227.54482,287.36246 227.43728,287.79964 227.41859,288.25083 C 227.31725,288.66831 227.2782,289.10118 227.05178,289.48147 C 226.81495,289.68105 226.07608,291.61771 225.72625,290.572 C 225.82739,290.08705 225.94834,289.60594 225.97621,289.10933 C 226.06113,288.62114 226.15834,288.13492 226.19477,287.64037 C 226.33273,287.2297 226.35536,286.8133 226.72741,286.51647 C 227.40448,285.99046 227.24043,284.94797 228.65871,285.08 L 227.43056,285.97413 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6210" />
+      <path
+         d="M 226.43862,258.16303 C 226.72469,258.27632 226.72681,258.61333 226.86432,258.82821 C 227.02218,259.29375 227.17236,259.76078 227.32179,260.22857 C 227.3295,260.70394 227.52105,261.12006 227.6472,261.55495 C 227.90551,261.86548 228.32629,261.94893 228.69316,262.08601 C 229.09785,262.41628 229.17859,262.92664 229.32302,263.40704 C 229.4973,263.92757 229.89757,264.05163 230.29502,264.31512 C 230.686,264.35292 230.91168,264.65713 231.21881,264.84597 C 231.62663,265.17908 232.00023,265.54493 232.3787,265.90524 C 232.71761,266.33695 232.70263,266.85047 232.79053,267.35877 C 232.78031,267.87107 232.87327,268.37312 232.95143,268.87708 C 232.89977,269.40561 233.21442,269.73769 233.42062,270.13904 C 233.71867,270.46104 234.12656,270.35436 234.4504,270.43231 C 232.97891,271.26124 235.59947,269.84404 235.69035,269.79633 C 236.27199,269.62291 236.86356,269.51268 237.45902,269.40467 C 237.88098,269.33701 238.30074,269.46848 238.70242,269.53214 C 238.04354,269.75672 237.48431,270.62844 237.78588,269.36181 C 237.67217,268.80315 237.94176,268.42803 238.11752,267.96338 C 238.49537,267.7065 238.75239,267.33465 239.05533,267.01287 C 239.31492,266.51057 239.39049,265.95596 239.49887,265.41054 C 239.70336,264.949 239.43657,264.5015 239.38232,264.12564 C 238.97875,264.17819 238.57353,264.24462 238.17086,264.31028 C 237.60499,264.48443 237.30837,264.20346 236.83929,264.00641 C 236.31187,263.78485 236.31081,263.38248 236.10251,262.93838 C 235.96384,262.41599 235.87642,261.88205 235.78461,261.35085 C 235.70622,260.81323 235.35776,260.51515 235.021,260.14433 C 234.4911,259.92771 234.63067,259.4746 234.49772,259.13458 C 235.3473,258.27887 236.00134,258.23382 236.9827,258.1632 C 237.39506,258.30154 237.81563,258.26777 238.23185,258.2934 C 238.66851,258.09995 238.97528,258.39047 239.34907,258.47425 C 239.82029,258.81966 240.38802,258.81195 240.94223,258.88891 C 241.62773,258.91417 242.09574,259.23551 242.61785,259.59458 C 242.90642,260.00377 242.89831,260.49427 242.97073,260.96852 C 242.98384,261.52868 243.35162,261.4314 243.66944,261.67168 C 243.57969,261.94532 244.75355,261.30682 244.50186,261.44596 C 244.1432,261.64646 243.78454,261.84697 243.42588,262.04748 C 243.49877,261.99032 243.57166,261.93317 243.64455,261.87601 C 244.08793,261.557 244.53355,261.24063 244.97809,260.92438 C 246.74346,259.66125 246.21918,259.99787 247.29144,260.40622 C 247.5056,260.85691 247.4758,261.35281 247.49918,261.8384 C 247.53,262.50428 247.67312,263.1507 247.81182,263.79951 C 247.95122,264.36111 248.10936,264.91639 248.26441,265.47271 C 248.46392,265.93887 248.78896,265.88943 249.20363,266.02136 C 249.9049,266.13822 250.47961,266.54126 251.05721,266.93054 C 251.64412,267.37175 252.11584,267.93221 252.59709,268.48001 C 252.943,268.74829 252.05835,269.224 251.65634,269.39679 C 251.5567,269.00239 251.39703,268.62288 251.25998,268.23903 C 251.06951,267.81897 250.87203,267.40357 250.6797,266.9848 C 250.49652,266.51535 250.50406,266.01521 250.47321,265.52132 C 250.46031,264.96097 250.46402,264.40043 250.46441,263.83998 C 250.39723,263.31091 250.61192,262.85341 250.75236,262.36494 C 250.92619,261.90794 250.92826,261.42253 250.96481,260.94284 C 250.98202,260.38515 250.9773,259.82713 250.97695,259.26927 C 250.8827,258.71916 251.19088,258.43043 251.42985,258.00437 C 252.80758,256.84918 252.86809,256.96761 253.91361,257.51015 C 254.36847,258.47742 254.65104,259.53163 254.98259,260.55004 C 255.20974,261.49855 255.51757,262.40193 255.92678,263.28332 C 256.96281,264.38578 255.68482,264.25621 255.50473,264.31525 C 255.82011,263.4577 256.02939,262.55942 256.26969,261.67664 C 256.41225,261.06405 256.50273,260.44069 256.60661,259.82145 C 256.71119,259.41318 256.99337,259.11375 257.2298,258.78136 C 257.59611,258.38979 257.92341,257.96516 258.25773,257.5483 C 258.5308,257.13634 258.50782,256.66048 258.57233,256.19477 C 258.57804,255.73382 258.29975,255.39766 258.09105,255.01515 C 257.88856,254.60402 257.86938,254.1443 257.7993,253.70025 C 257.65475,253.23036 257.63414,252.74268 257.5904,252.25747 C 257.57624,251.67549 257.55574,251.09282 257.53462,250.51238 C 257.45753,250.04394 257.32342,249.58564 257.1922,249.1303 C 257.08144,248.40003 257.07727,247.66014 257.06229,246.9234 C 257.14308,246.28385 256.96032,245.73364 256.77148,245.14355 C 256.64479,244.69611 256.33748,244.39985 256.06298,244.04957 C 255.80602,243.66776 255.56583,243.27409 255.32078,242.88392 C 255.11132,242.36816 254.71607,242.54123 254.33459,242.40794 C 253.88804,242.63586 253.40506,242.57773 252.95233,242.61715 C 252.61576,242.43926 252.46293,242.09404 252.23504,241.81274 C 251.94474,241.51902 251.64209,241.23999 251.34085,240.9577 C 251.0966,240.60248 250.72304,240.40823 250.40186,240.15819 C 249.81066,240.01144 249.65974,239.62202 249.37603,239.15776 C 249.3013,238.71293 249.1912,238.2481 249.10672,237.82313 C 248.83663,237.74105 248.50913,237.8529 248.22395,237.89924 C 247.77269,237.8767 247.50062,237.53788 247.16732,237.27662 C 246.84454,236.95502 246.52588,236.62728 246.20938,236.29901 C 245.96051,235.9053 245.5676,235.74486 245.20008,235.50416 C 244.85922,235.24652 244.54696,234.94553 244.23138,234.65968 C 243.43619,234.49239 242.70062,235.10046 244.4558,234.11165 C 243.86379,234.79647 242.70929,235.00684 242.12081,235.22529 C 241.74871,235.125 241.44859,234.89709 241.12495,234.70331 C 240.7519,234.4506 240.32936,234.51135 239.91684,234.47145 C 239.43111,234.59105 238.93016,234.57691 238.44092,234.60882 C 238.02962,234.52627 237.65023,234.29008 237.28094,234.08956 C 236.84608,233.93352 236.39336,234.01134 235.94443,234.03821 C 235.51561,233.94188 235.23368,233.61031 234.90572,233.35029 C 234.70479,232.9448 234.29754,232.97815 233.99194,232.81607 C 233.49686,232.93138 233.12263,232.69106 232.68059,232.54941 C 232.19845,232.27812 231.65419,232.24532 231.12082,232.1681 C 230.6559,232.13822 230.19061,232.24837 229.7319,232.32347 C 229.24769,232.38263 228.75957,232.37546 228.27304,232.38848 C 227.7668,232.39197 227.26055,232.39041 226.75431,232.38995 C 226.25767,232.27121 225.87777,232.48824 225.43897,232.6056 C 228.07501,231.21283 225.13094,232.6943 224.23949,233.13225 C 223.8255,233.32785 223.37214,233.3266 222.93014,233.38584 C 222.45044,233.35595 221.98367,233.44704 221.51373,233.49279 C 221.64992,233.66572 222.7926,232.28251 222.16524,233.64099 C 221.98497,234.04101 221.82245,234.44751 221.65738,234.85394 C 221.2099,235.68309 220.16695,235.8873 219.38497,236.30111 C 217.76487,236.8622 219.34293,236.12448 219.38364,236.10288 C 218.98755,236.3773 219.00624,236.76512 218.88753,237.17767 C 218.65566,238.36712 218.43128,238.15338 217.03999,238.9172 C 217.16644,238.75215 217.45051,238.99507 217.65816,238.99429 C 217.57219,239.47158 217.59545,239.95795 217.5858,240.44022 C 217.37676,241.45799 216.65144,241.38732 215.65772,241.79133 C 215.29381,241.57096 215.06464,241.18654 214.80847,240.85531 C 214.43603,240.50233 214.37184,240.02999 214.24945,239.55639 C 214.22169,238.93804 213.82808,239.10412 213.53778,238.91867 C 213.57492,238.82362 213.73885,238.95159 213.83939,238.96804 C 213.4923,239.40446 213.42724,239.91806 213.32193,240.44192 C 213.27082,240.94977 213.28105,241.46072 213.27891,241.97032 C 213.28145,242.47853 213.28285,242.98675 213.28431,243.49497 C 213.30287,243.99604 213.27282,244.4976 213.26056,244.99677 C 213.18686,245.40668 212.82008,245.57522 212.55561,245.84211 C 212.111,246.15344 211.84619,246.6026 211.55327,247.03542 C 211.34135,247.51157 212.03726,247.36616 212.21528,247.48781 C 212.77788,247.58503 213.31335,247.4743 213.85426,247.39057 C 212.56905,248.30441 213.26652,247.34693 213.42237,247.06641 C 213.75626,246.12543 214.65031,245.97691 215.52196,245.52461 C 215.35998,245.51032 214.28458,246.71022 214.92929,245.31834 C 214.94352,244.80309 215.13559,244.32428 215.2657,243.84164 C 216.42368,241.02292 216.8739,243.54864 217.03885,243.53078 C 217.09449,244.08892 217.08514,244.65067 217.08997,245.2108 C 217.10761,245.73225 217.07631,246.25416 217.06259,246.77366 C 217.03399,247.23621 216.81438,247.63432 216.65317,248.05382 C 216.34991,248.44226 216.28446,248.91165 216.14286,249.36158 C 216.20819,249.86111 215.84606,250.08136 215.64094,250.44919 C 215.32484,250.82769 215.45068,251.22497 215.43488,251.6625 C 215.36979,252.67864 214.43487,252.61151 213.61093,252.92373 C 213.11943,252.62133 213.0041,252.16449 212.81213,251.6655 C 212.73825,251.14022 212.57065,250.63809 212.41321,250.134 C 212.03791,249.00072 211.89443,249.46222 213.3901,248.68744 C 213.26794,249.04561 213.28326,249.45259 213.25731,249.83141 C 213.23252,250.30433 212.97467,250.68211 212.77741,251.09186 C 212.26747,251.85615 211.33658,252.14392 210.54874,252.58931 C 212.29735,251.32311 211.54314,252.10295 211.20024,252.84159 C 210.73475,254.92525 209.56939,253.36723 209.12607,253.47976 C 208.86749,253.12357 208.58022,252.78942 208.30041,252.44999 C 208.10469,252.04433 207.69557,251.9882 207.37816,251.77345 C 206.97381,251.81991 206.56576,251.96682 206.17112,252.08845 C 204.59059,252.50697 206.28512,251.86045 206.37362,251.81863 C 206.28432,252.20587 206.09109,252.54009 205.93057,252.89827 C 205.71671,253.36129 205.79401,253.86045 205.81372,254.35425 C 205.79993,254.9178 205.43775,255.2528 205.14946,255.68187 C 204.84139,256.03722 204.48855,256.35731 204.14204,256.67382 C 203.90261,257.13361 203.52791,257.44453 203.15844,257.78299 C 201.92521,258.68808 201.75406,258.74472 200.64423,258.58897 C 200.67425,258.17664 201.45721,258.4474 201.86312,258.37338 C 202.20246,258.64906 202.63291,258.60829 203.03854,258.66804 C 203.6246,258.51694 203.93514,258.8428 204.37604,259.02238 C 204.64396,259.47951 204.76939,259.9957 204.92054,260.4985 C 204.91169,261.08174 205.4725,261.1674 205.67407,261.34689 C 203.86167,262.64288 204.60289,261.92293 204.99827,261.21331 C 205.07042,260.72618 205.13742,260.24031 205.22011,259.75411 C 205.31883,259.31575 205.49789,258.90221 205.64548,258.4834 C 206.79084,257.47261 208.57388,256.71513 206.59715,257.70243 C 207.02339,256.6972 207.22063,256.78555 208.44111,256.09089 C 208.7661,256.15079 209.04072,256.32961 209.33827,256.46043 C 209.88792,256.56187 210.3807,256.82248 210.88976,257.04231 C 211.51228,257.17254 211.61222,257.58446 211.92044,258.01887 C 212.04547,258.43756 212.11711,258.86754 212.2095,259.29299 C 212.27216,259.7799 212.26157,260.27133 212.27312,260.76086 C 212.08122,261.126 212.45277,261.53064 212.49899,261.72871 C 212.79501,261.64631 213.05088,261.47222 213.32986,261.34766 C 209.63641,263.33659 216.67941,259.58279 212.8229,261.65264 C 212.99704,261.30186 212.9462,260.89808 212.96776,260.51807 C 212.95174,260.06444 212.66106,259.73799 212.44877,259.36536 C 212.04425,259.0844 212.01863,258.66928 211.87185,258.27855 C 214.28333,256.66184 212.70919,257.51303 212.6728,257.52824 C 212.87309,257.14419 212.94821,256.7004 213.04711,256.28282 C 213.41596,254.17149 214.73649,255.68802 215.10632,255.58529 C 215.23183,255.99959 215.48681,256.34504 215.69244,256.71601 C 216.05982,257.19655 216.48793,257.62747 216.90812,258.05931 C 217.19451,258.40606 217.50473,258.72998 217.81296,259.05687 C 218.54625,259.71475 218.57617,259.1859 217.35249,259.79544 C 217.3784,259.38717 217.67975,259.1207 217.84247,258.79356 C 218.12213,258.50936 218.19072,258.11726 218.31741,257.75352 C 218.69111,256.88187 219.80232,256.76817 220.55604,256.4154 C 220.71935,256.51591 220.18501,256.28867 219.9935,256.29622 C 220.22808,254.50286 221.49922,255.93833 221.74635,255.90473 C 222.22257,256.21673 222.02426,256.62829 222.11387,257.02078 C 221.59946,257.94026 221.11089,258.03947 220.04602,258.65019 C 219.71076,258.59177 220.69816,258.454 221.01823,258.33824 C 221.21751,258.29702 220.72682,258.63295 220.54517,258.72484 C 220.79323,258.45149 220.97547,258.13079 221.18479,257.83017 C 221.33156,257.48345 221.58225,257.19522 221.77734,256.88445 C 223.69028,255.62349 223.02834,255.80675 223.62688,256.73549 C 223.74262,257.19099 223.59093,257.61021 223.51112,258.04858 C 223.30705,258.43289 223.28549,258.85994 223.20529,259.2754 C 223.16884,259.76949 223.27572,260.26306 223.34472,260.75148 C 222.57139,261.977 226.92543,259.26637 222.4606,261.72052 C 223.06764,260.95736 224.07194,260.87226 224.85526,260.50454 C 225.02679,260.54318 224.50252,260.44697 224.32871,260.47352 C 224.51464,260.15476 224.86166,259.97375 225.15089,259.75256 C 225.27093,259.66246 225.31679,259.51351 225.39807,259.3964 L 226.7683,258.7784 C 226.69335,258.91023 226.65588,259.06962 226.54079,259.17853 C 226.25446,259.3824 225.97211,259.64234 225.69646,259.84399 C 225.12689,260.34046 224.69872,261.39598 223.65553,261.41049 C 223.72387,261.32582 223.76822,261.09912 223.86056,261.15652 C 220.17309,263.33952 223.22005,261.78456 222.01621,261.4501 C 221.94641,260.95186 221.8393,260.44867 221.8603,259.94546 C 221.93097,259.5188 221.93734,259.07903 222.14743,258.68588 C 222.24303,258.27277 222.40537,257.88181 222.29821,257.44328 C 223.17964,256.30329 218.64367,258.28878 223.17171,256.31354 C 222.97169,256.60529 222.66698,256.85381 222.56442,257.22538 C 222.3579,257.53146 222.17825,257.85369 221.93036,258.13113 C 221.24166,258.58778 220.62255,259.38945 219.75337,259.16554 C 219.7703,259.14771 219.4127,257.14491 221.22048,257.70791 C 219.18526,258.91931 220.38462,258.3179 220.74471,257.65122 C 220.6886,257.313 220.9287,256.98203 220.46273,256.6882 C 220.7513,256.33404 220.95002,255.42762 221.35145,255.64496 C 220.81907,256.1588 220.51033,257.37564 219.35398,257.31942 C 219.45403,257.23883 219.76172,257.01512 219.68037,257.11462 C 219.559,257.49168 219.47406,257.89383 219.23348,258.21464 C 219.04639,258.54341 218.69502,258.72447 218.7336,259.18833 C 217.71044,259.85038 217.45153,260.48201 216.53071,259.84332 C 216.2215,259.51187 215.90757,259.18608 215.62308,258.83251 C 215.20132,258.3962 214.77102,257.96176 214.40045,257.47846 C 214.19216,257.10928 213.92884,256.76833 213.807,256.35242 C 214.01432,256.12452 214.11671,255.58983 214.41687,255.65788 C 214.31116,256.07447 214.19047,256.51331 214.05294,256.92903 C 212.33611,258.12473 212.25892,258.20191 213.22443,257.60886 C 213.36326,257.92114 213.33987,258.37172 213.74422,258.60278 C 213.97124,259.00072 214.27719,259.35459 214.30642,259.8364 C 214.2918,260.24155 214.32393,260.65603 214.20919,261.05024 C 209.73686,263.89113 216.67609,259.47164 212.15926,262.29452 C 211.86291,262.40583 211.5804,262.63554 211.24423,262.57719 C 211.12279,262.22916 210.76038,261.92759 210.93655,261.44451 C 210.92653,260.96125 210.9369,260.47638 210.88013,259.99529 C 210.79198,259.57809 210.72393,259.15669 210.60389,258.74613 C 210.3172,258.34771 210.22238,257.98955 209.6421,257.87014 C 209.13033,257.65452 208.63012,257.41712 208.08473,257.29646 C 207.81561,257.19092 207.55823,256.97113 207.25496,257.02752 C 209.08684,255.92587 208.28842,256.21793 207.9828,257.1131 C 207.75201,257.26689 205.68705,258.46886 207.01763,257.86757 C 206.86548,258.27103 206.67448,258.66783 206.56851,259.09532 C 206.49391,259.58597 206.39589,260.06995 206.3552,260.5653 C 205.89981,261.59204 205.90752,261.63724 204.46497,262.2526 C 204.10478,261.96687 203.68994,261.81454 203.60611,261.21616 C 203.46108,260.73575 203.34058,260.24242 203.08974,259.8032 C 202.69293,259.6786 202.31693,259.42634 201.81759,259.54324 C 201.37029,259.45803 200.91652,259.4909 200.56588,259.14258 C 200.87946,258.77065 198.81357,257.28192 201.88724,257.73188 C 202.55224,257.70351 203.85065,257.58337 201.76016,258.32909 C 202.1294,258.00001 202.55944,257.75779 202.75852,257.26083 C 203.10161,256.93999 203.4294,256.59764 203.76764,256.27104 C 204.05933,255.87476 204.42677,255.56165 204.47713,255.03411 C 204.45533,254.52816 204.37731,254.00503 204.55897,253.52034 C 204.71327,253.1532 204.96723,252.84467 204.99593,252.42759 C 205.73512,251.90981 206.39863,251.2316 207.36568,251.17503 C 207.77655,251.04942 208.18809,250.86139 208.62211,250.92606 C 208.97673,251.15093 209.36144,251.27605 209.59075,251.67775 C 209.86747,252.01232 210.14782,252.34414 210.41017,252.6902 C 210.20473,252.93568 210.13352,253.52397 209.8225,253.44979 C 210.27058,252.4484 210.39514,252.22971 211.71729,251.64166 C 211.62637,251.69659 211.32613,251.78264 211.40699,251.7137 C 211.60785,251.31915 211.86758,250.95147 211.91123,250.49646 C 211.93637,250.09374 211.96585,249.68821 211.99686,249.28439 C 213.64663,248.35639 213.31925,248.20511 213.7292,249.41392 C 213.88833,249.91894 214.05971,250.42279 214.1316,250.94971 C 214.33236,251.39275 214.37161,251.84401 214.86679,252.08917 C 214.86586,252.08985 213.4797,253.54321 214.10467,252.36133 C 214.10304,251.89878 213.96884,251.46361 214.25617,251.04277 C 214.48918,250.69093 214.84067,250.51515 214.79384,250.02146 C 214.92307,249.55605 214.96431,249.07023 215.28344,248.67465 C 215.45417,248.27004 215.67868,247.89122 215.71476,247.43893 C 215.73455,246.92689 215.77905,246.40905 215.75504,245.89262 C 215.75172,245.34086 215.76241,244.78755 215.70916,244.2376 C 215.83091,244.10874 215.54739,242.33861 216.63815,243.22611 C 216.49599,243.6874 216.26772,244.14721 216.27865,244.66014 C 215.922,245.70832 215.81769,246.03629 214.32889,246.44232 C 214.45651,246.35846 214.87871,246.31298 214.78666,246.43494 C 214.32293,247.40701 213.96946,247.94213 212.66685,248.3096 C 212.1111,248.36679 211.55574,248.45048 210.99032,248.35682 C 210.51447,248.15233 210.24079,248.27503 210.18857,247.66375 C 210.46534,247.20442 210.71094,246.73944 211.1559,246.39944 C 211.42518,246.17157 211.76151,245.99559 211.91258,245.66221 C 211.93047,245.17081 211.97379,244.67358 211.94754,244.17784 C 211.94601,243.66962 211.94513,243.16141 211.94222,242.65319 C 211.94329,242.1381 211.9336,241.622 211.97737,241.10817 C 212.07253,240.56484 212.127,240.02739 212.46291,239.56276 C 213.16772,239.04023 213.68215,238.03316 214.74909,238.02039 C 215.15175,238.25586 215.47671,238.23 215.56821,238.83735 C 215.69866,239.28294 215.72365,239.74097 216.09225,240.07133 C 216.33232,240.37908 216.53982,240.7555 216.89677,240.93151 C 216.88521,240.93991 215.47784,242.35176 216.24889,241.12281 C 216.25553,240.6316 216.23584,240.1378 216.3042,239.64962 C 216.67802,238.72084 216.89315,238.34513 218.22424,237.98652 C 216.51463,239.01685 217.35958,238.77715 217.54137,237.84571 C 217.63979,237.40955 217.61489,236.98028 217.98519,236.6573 C 218.83205,236.14647 219.59184,235.56168 220.57041,235.37686 C 220.48775,235.43287 220.22228,235.55587 220.2903,235.4827 C 220.45239,235.07924 220.60749,234.67295 220.80766,234.2859 C 221.15359,233.32053 221.37333,232.93586 222.71252,232.58358 C 223.18591,232.54889 223.65983,232.48731 224.138,232.49162 C 224.57251,232.41869 225.01806,232.40374 225.42401,232.20454 C 227.47984,231.27007 222.2839,234.15577 226.61472,231.66331 C 227.05986,231.58048 227.48928,231.41144 227.96828,231.50633 C 228.47417,231.5066 228.98007,231.50843 229.48594,231.50295 C 229.96947,231.48592 230.45513,231.49229 230.93537,231.42211 C 231.40155,231.35023 231.86837,231.23417 232.34237,231.29847 C 232.88788,231.38932 233.44256,231.43869 233.93467,231.72075 C 234.36521,231.83424 234.74671,232.03462 235.21835,231.94198 C 235.56948,232.12029 235.94371,232.17927 236.18775,232.56092 C 236.4942,232.79505 236.75083,233.10868 237.16064,233.15374 C 237.62918,233.13948 238.08396,233.04785 238.53067,233.25305 C 238.89207,233.44606 239.24854,233.68789 239.66157,233.73046 C 240.14882,233.68638 240.64196,233.66658 241.12706,233.58048 C 241.56303,233.64518 242.00999,233.60937 242.39271,233.88921 C 242.71593,234.05848 243.0054,234.29909 243.37257,234.38269 C 243.26619,234.47249 242.95355,234.74943 243.05694,234.6562 C 244.5226,233.80152 244.3444,233.5932 245.50211,233.85226 C 245.81197,234.13716 246.11398,234.44235 246.4608,234.68287 C 246.82853,234.93639 247.2328,235.11263 247.48862,235.50801 C 247.80459,235.83748 248.12095,236.16804 248.44653,236.48748 C 248.76288,236.71898 249.00028,237.03049 249.42807,236.99602 C 249.78028,236.97942 250.10909,236.78601 250.4093,237.05862 C 250.50079,237.49571 250.63787,237.96198 250.68638,238.42773 C 250.98532,238.81899 251.07622,239.22475 251.65849,239.32934 C 251.98501,239.5937 252.35793,239.80954 252.61715,240.16189 C 252.92131,240.44905 253.22831,240.73265 253.52304,241.02993 C 253.73361,241.28615 253.86363,241.61718 254.18751,241.754 C 254.63381,241.68624 255.10425,241.65847 255.54926,241.5208 C 255.99755,241.6716 256.37071,241.61615 256.62281,242.13235 C 256.86219,242.51305 257.0959,242.89873 257.34948,243.26941 C 257.62869,243.63369 257.94873,243.94422 258.07746,244.40611 C 258.27803,245.01532 258.47704,245.58131 258.38924,246.24341 C 258.40296,246.97075 258.40451,247.70139 258.51349,248.42243 C 258.6476,248.88097 258.78352,249.34308 258.8625,249.81521 C 258.88632,250.39779 258.91305,250.98299 258.92138,251.56785 C 258.96297,252.046 258.98072,252.52695 259.12489,252.98963 C 259.19044,253.41857 259.21131,253.86388 259.39542,254.26438 C 259.61555,254.66974 259.90535,255.03298 259.91315,255.5187 C 259.85793,256.0043 259.88317,256.50168 259.63255,256.94412 C 259.30379,257.36683 258.99347,257.80842 258.61187,258.19117 C 258.371,258.50333 258.10255,258.79534 257.96029,259.16974 C 257.84513,259.79133 257.74623,260.4163 257.61002,261.03513 C 257.36651,261.92467 257.13819,262.82065 256.86998,263.70134 C 255.68392,264.59409 255.31038,265.46734 254.63389,264.02215 C 254.22064,263.13109 253.91408,262.21926 253.69732,261.25719 C 253.37095,260.26397 253.08415,259.23971 252.63372,258.29737 C 251.36878,257.79158 252.6698,257.62748 252.81791,257.42365 C 252.54691,257.81575 252.23912,258.04515 252.31288,258.58689 C 252.31276,259.14678 252.316,259.70676 252.30202,260.26653 C 252.27272,260.7582 252.27691,261.25551 252.11473,261.72805 C 251.96354,262.2017 251.73812,262.63981 251.80062,263.1582 C 251.79915,263.71734 251.79432,264.27657 251.8056,264.83565 C 251.8334,265.31112 251.82402,265.79391 251.99139,266.24807 C 252.18332,266.66975 252.37943,267.08861 252.57234,267.51029 C 252.71442,267.90032 252.87415,268.28635 252.98964,268.68367 C 252.74304,268.86798 251.78465,270.31223 251.31309,269.25157 C 250.84371,268.71218 250.38539,268.15859 249.80167,267.7352 C 249.23101,267.35962 248.66923,266.97573 247.97452,266.88787 C 247.52871,266.70628 247.15494,266.72441 246.94891,266.19811 C 246.79402,265.63532 246.63841,265.07327 246.4939,264.5066 C 246.35301,263.84962 246.21236,263.19494 246.16626,262.52227 C 246.14612,262.06894 246.1767,261.60137 245.99431,261.17549 C 246.35697,260.43011 242.50281,262.23418 246.37979,260.3832 C 245.93163,260.69169 245.4822,261.00246 245.03456,261.31515 C 244.17794,261.85356 243.46842,262.60463 242.42979,262.5254 C 242.03713,262.26197 241.70992,262.24989 241.64372,261.67554 C 241.58054,261.23152 241.59026,260.76542 241.3351,260.37747 C 240.82332,260.10918 240.37854,259.72655 239.72651,259.75623 C 239.15225,259.66564 238.57006,259.65661 238.08377,259.29182 C 237.73872,259.24265 237.406,259.01903 237.02181,259.19079 C 236.60718,259.14833 236.18473,259.13739 235.77113,259.05121 C 234.31504,259.22294 235.45955,258.93148 235.88012,258.52501 C 235.94616,258.65671 235.78416,259.25134 236.29188,259.34611 C 236.64376,259.74399 237.01803,260.07245 237.10642,260.63724 C 237.19736,261.16938 237.28209,261.70569 237.42478,262.22822 C 237.61738,262.64602 237.60897,262.9873 238.10619,263.19467 C 238.5488,263.34804 238.85333,263.58799 239.37317,263.41003 C 239.80093,263.34296 240.24994,263.19495 240.66759,263.33546 C 240.78485,263.79174 241.03775,264.20427 240.84294,264.74801 C 240.74009,265.30839 240.66326,265.87375 240.42698,266.4002 C 240.1376,266.74463 239.93958,267.15741 239.50181,267.37109 C 239.28323,267.81906 239.00151,268.10946 239.12713,268.68838 C 238.96212,269.75228 238.9661,269.89662 237.48227,270.42112 C 237.07422,270.3582 236.68217,270.19474 236.25963,270.30467 C 235.67108,270.42155 235.08264,270.53366 234.5092,270.71785 C 235.6219,269.97304 235.12911,270.38749 233.24831,271.34207 C 232.86659,271.24253 232.4644,271.24235 232.14117,270.93183 C 231.91708,270.49578 231.57604,270.1431 231.62456,269.57853 C 231.54525,269.07151 231.44566,268.56615 231.45811,268.05069 C 231.38341,267.57214 231.40845,267.08736 231.09323,266.67955 C 230.71789,266.32866 230.34741,265.96956 229.9429,265.64619 C 229.64271,265.47175 229.40922,265.19664 229.03833,265.14719 C 228.63092,264.85042 228.19658,264.68079 228.01361,264.13976 C 227.87948,263.69725 227.80958,263.21334 227.43775,262.91422 C 227.03417,262.7548 226.60136,262.68657 226.341,262.30457 C 226.20769,261.85696 225.99942,261.43698 226.00305,260.9447 C 225.85541,260.47726 225.70803,260.01084 225.54124,259.54908 C 225.44338,259.40355 225.45759,259.06541 225.21047,259.05717 L 226.43862,258.16303 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6212" />
+      <path
+         d="M 263.21521,253.47043 C 263.08582,253.69995 263.07544,253.97782 263.00565,254.23112 C 262.95309,254.7107 262.96264,255.19364 262.95309,255.67511 C 262.90639,256.16139 262.9851,256.64057 263.01981,257.11975 C 263.10228,257.4882 263.39419,257.72204 263.6003,258.01289 C 263.97164,258.41221 264.03117,258.9242 264.15214,259.4295 C 264.29162,260.08225 264.11821,260.67382 263.96529,261.29923 C 263.78124,261.91096 263.7816,262.54562 263.75481,263.17362 C 263.89642,263.58332 263.00449,263.61966 262.59306,263.75387 C 262.57739,263.14169 262.74969,262.56393 262.89402,261.9766 C 263.03652,261.31505 263.49111,260.86657 263.91734,260.37521 C 264.28123,259.97168 264.28263,259.47692 264.3899,258.98318 C 264.48152,258.51166 264.35881,258.0645 264.30222,257.60398 C 264.17105,257.16424 264.02655,256.72956 263.89151,256.29182 C 263.75453,255.93964 263.47085,255.6922 263.24884,255.40029 C 262.96675,255.25647 262.81208,254.97365 262.59969,254.76618 L 263.90124,254.00706 C 264.10975,254.20805 264.2818,254.46297 264.53944,254.62222 C 264.77056,254.92958 265.06449,255.1915 265.20636,255.56147 C 265.34323,256.00607 265.48769,256.44799 265.62745,256.89247 C 265.69068,257.36673 265.82147,257.82567 265.73318,258.31231 C 265.6381,258.82975 265.64584,259.34977 265.29461,259.78691 C 264.87304,260.25895 264.40831,260.69832 264.24163,261.32998 C 264.09413,261.90812 263.91144,262.47735 263.9422,263.08212 C 263.64071,263.33858 262.5795,264.997 262.42338,263.86378 C 262.44459,263.22226 262.43626,262.5728 262.61574,261.94524 C 262.77725,261.33964 262.95886,260.76861 262.82733,260.13272 C 262.71751,259.65014 262.67032,259.16669 262.30923,258.79034 C 262.09,258.47702 261.78549,258.22317 261.69392,257.82981 C 261.65397,257.34106 261.56376,256.85419 261.61579,256.3569 C 261.62316,255.87106 261.61524,255.38429 261.65719,254.89964 C 261.71808,254.68068 261.65388,254.27551 261.8626,254.16104 L 263.21521,253.47043 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6214" />
+      <path
+         d="M 262.67647,250.03715 C 262.79811,249.99392 262.8629,250.14282 262.94188,250.18758 L 261.65708,250.98622 C 261.59409,250.96965 261.53078,250.88923 261.44832,250.9313 L 262.67647,250.03715 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6216" />
+      <path
+         d="M 259.41404,267.69071 C 259.33207,267.97752 259.03063,268.15531 258.8279,268.36164 C 258.49089,268.60592 258.19602,268.89883 257.88841,269.17605 C 257.58094,269.51918 257.29355,269.88065 257.00017,270.23622 C 256.6583,270.54678 256.78936,270.95948 256.72584,271.31877 C 257.07494,271.59514 257.53901,271.58734 257.96175,271.66406 C 258.32602,271.8834 258.73198,271.98056 259.12886,272.11479 C 260.72414,272.02244 259.05723,272.54047 259.04775,272.54504 C 259.36401,272.12865 259.25231,271.6786 259.27439,271.20825 C 259.1744,270.69486 259.04109,270.18753 258.92638,269.67651 C 258.97483,269.20413 258.75712,268.80421 258.63438,268.40412 L 259.92482,267.62597 C 260.0649,268.05837 260.31499,268.45995 260.25089,268.97095 C 260.36291,269.48505 260.49345,269.99447 260.60223,270.50839 C 260.62141,271.01474 260.69507,271.48467 260.43151,271.95565 C 259.47671,272.58161 258.97232,273.26448 257.88616,272.96112 C 257.49636,272.82329 257.09864,272.71637 256.72929,272.52401 C 256.24881,272.4231 255.75506,272.44411 255.40562,272.04644 C 255.41888,271.61999 255.29106,271.219 255.61689,270.82755 C 255.91358,270.472 256.20246,270.11071 256.50086,269.75668 C 256.80333,269.46775 257.09104,269.16727 257.43086,268.91894 C 257.62643,268.73738 257.87022,268.52984 258.06143,268.38132 L 259.41404,267.69071 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6218" />
+      <path
+         d="M 244.65472,280.19115 C 244.27049,280.3609 243.88063,280.24553 243.48433,280.23274 C 242.99173,280.13949 242.48995,280.18006 241.99832,280.17569 C 241.97203,280.11886 242.12132,280.19824 242.18281,280.20951 C 241.84352,280.68859 241.79314,281.24541 241.69836,281.80304 C 241.65353,282.32148 241.66273,282.84223 241.66127,283.36198 C 241.645,283.85748 241.67812,284.35369 241.69313,284.84671 C 241.88504,285.30305 242.21047,285.2201 242.62687,285.32812 C 243.29924,285.36375 243.97313,285.352 244.64617,285.35014 C 245.47516,285.45456 246.10578,285.20479 246.8183,284.82942 C 245.76203,285.56134 247.02555,284.61956 247.33136,284.39549 C 247.93195,283.55589 248.98791,283.29882 249.84444,282.87127 C 250.33166,282.74079 250.71009,282.96742 251.15123,283.11235 C 251.5726,283.40539 251.92358,283.24865 252.33705,283.2416 C 250.20226,284.78182 251.78921,283.24229 252.2295,282.67588 C 252.65287,282.17005 253.16403,281.75303 253.65739,281.32012 C 254.0601,281.03922 254.19855,280.61682 254.42234,280.22287 C 254.5772,279.81678 254.35984,279.46928 254.28462,279.08874 C 254.07448,278.56743 254.11467,278.02809 254.11905,277.48073 C 254.11876,277.01793 253.745,276.90974 253.48686,276.635 C 253.1438,276.41083 252.73292,276.38098 252.34338,276.29692 C 251.96131,276.11102 251.85243,275.72368 251.67213,275.36951 C 251.41254,275.3527 252.0618,275.01274 252.29662,274.90058 C 252.02602,275.24857 251.82281,275.63762 251.59937,276.0155 C 251.14036,276.81919 249.97486,276.92944 249.33272,277.18829 C 248.89259,277.0357 248.63203,276.63487 248.32068,276.31168 C 248.01202,275.92095 248.02835,275.45003 247.9467,274.98901 C 248.14201,274.38457 247.4382,274.66168 247.30677,274.57707 C 247.64876,274.58042 248.55476,273.43577 248.04782,274.75594 C 247.99722,275.24368 247.64241,275.44942 247.3373,275.76912 C 246.48628,276.42504 245.89851,276.59339 244.98913,276.77546 C 244.92713,276.80005 244.86514,276.82465 244.80315,276.84924 C 245.17969,276.63625 245.55226,276.41603 245.93278,276.21025 C 246.19191,276.07012 245.5311,276.64181 245.33027,276.85759 C 245.09853,277.28057 244.76499,277.62859 244.46325,277.99864 C 244.43986,277.98304 244.22303,278.29524 244.21866,278.30063 L 242.84008,278.90554 C 242.91824,278.79616 242.96279,278.66266 243.07456,278.5774 C 243.38034,278.2173 243.72794,277.88517 243.95636,277.46361 C 244.56965,276.69968 245.02347,276.10363 246.17603,275.84859 C 246.83303,275.72077 248.21639,275.24277 245.94049,276.32787 C 246.24997,276.04969 246.61133,275.8632 246.69891,275.41898 C 246.98891,274.40568 247.09438,274.1162 248.50821,273.66514 C 248.87123,273.8685 249.2299,273.63138 249.27936,274.29595 C 249.34887,274.72795 249.32418,275.16888 249.60964,275.53612 C 249.90469,275.83725 250.14043,276.21413 250.56993,276.32805 C 250.45302,276.42608 250.1166,276.73648 250.22591,276.63 C 250.44679,276.24381 250.65993,275.85679 250.91228,275.49007 C 251.59797,275.02363 252.22462,274.03665 252.97172,274.60691 C 253.15439,274.91535 253.20996,275.30706 253.58154,275.44138 C 253.98753,275.53757 254.4112,275.56374 254.75792,275.82556 C 255.07211,276.13254 255.41014,276.29663 255.45355,276.79717 C 255.44314,277.32614 255.39924,277.84811 255.59874,278.35299 C 255.70781,278.76168 255.9023,279.13691 255.78034,279.57675 C 255.5713,280.00786 255.46646,280.44594 255.04425,280.75502 C 254.54965,281.1837 254.04202,281.60011 253.60141,282.08769 C 252.85564,283.05771 252.43918,283.66522 251.15177,284.16876 C 250.73046,284.13191 250.30875,284.22091 249.9018,283.95255 C 249.47298,283.82916 249.11821,283.62689 248.65179,283.78242 C 248.67434,283.79834 248.73734,283.80916 248.71943,283.83019 C 246.1947,285.75808 247.76429,284.353 245.65887,285.76288 C 244.93092,286.11335 244.2687,286.32495 243.44169,286.22783 C 242.7624,286.23067 242.0815,286.24828 241.40348,286.19816 C 240.93323,286.03346 240.57005,286.09684 240.36371,285.54867 C 240.34522,285.05003 240.30332,284.54713 240.32467,284.04486 C 240.32539,283.5202 240.31663,282.99475 240.35594,282.47109 C 240.44291,281.89468 240.48898,281.3162 240.80614,280.80538 C 241.41713,280.05359 242.17279,279.38571 243.20491,279.27839 C 243.70502,279.29508 244.20988,279.27936 244.70792,279.36118 C 245.09412,279.35244 245.47902,279.46011 245.83788,279.24278 L 244.65472,280.19115 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6220" />
+      <path
+         d="M 255.29031,282.22416 C 255.6168,281.63023 256.02223,281.08518 256.40703,280.529 C 256.86499,280.0228 257.04886,279.42122 257.24534,278.79388 C 257.29665,278.28442 257.33769,277.77499 257.38612,277.26579 C 257.40105,276.84093 257.54893,276.4375 257.6346,276.03293 C 259.27022,274.99543 259.03917,275.12205 259.14579,276.24417 C 259.13941,276.73845 259.16743,277.23356 259.1814,277.72563 C 259.29244,278.29907 259.32664,278.88168 259.37452,279.4623 C 259.44718,279.98416 259.1664,280.23531 258.93122,280.62556 C 258.32242,281.29714 257.37374,281.50799 256.60995,281.8653 C 256.52897,281.8293 256.78513,281.83867 256.87271,281.82536 C 256.69641,282.05822 256.51941,282.29045 256.3428,282.52295 L 254.95825,283.11174 C 255.13403,282.87813 255.33584,282.66149 255.48719,282.40874 C 256.217,281.9061 256.8416,281.07323 257.81067,280.95914 C 257.716,281.03413 257.44737,281.27766 257.53718,281.19688 C 257.75299,280.83928 258.1364,280.67547 258.04438,280.15141 C 257.99981,279.57448 257.9719,278.99488 257.85183,278.4267 C 257.8346,277.93103 257.79793,277.43135 257.80957,276.93239 C 258.76769,275.75639 255.29746,276.73794 259.02705,275.43805 C 258.93052,275.78757 258.70016,276.18572 258.73366,276.60497 C 258.688,277.11548 258.62146,277.62452 258.59424,278.1383 C 258.40992,278.79056 258.24429,279.41426 257.77047,279.93847 C 257.39168,280.48289 256.99042,281.01754 256.67072,281.59833 L 255.29031,282.22416 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6222" />
+      <path
+         d="M 206.40805,246.37554 C 206.42984,246.64028 206.37796,246.89972 206.35725,247.16034 C 206.31679,247.45417 206.08304,247.6233 205.9298,247.84302 C 205.64965,248.00094 205.64526,248.25609 205.5434,248.51888 C 205.46887,248.82886 205.53097,249.13921 205.54903,249.44435 C 205.73818,249.45384 205.96649,249.41191 206.16525,249.38395 C 206.51657,249.42113 206.86778,249.45791 207.21954,249.49114 C 207.33387,249.53742 206.97267,249.50285 206.85091,249.52243 C 206.9098,249.17614 206.89592,248.82332 206.89842,248.47352 C 206.92902,248.0832 206.87157,247.69759 206.84462,247.31221 C 206.80279,247.03197 206.59636,246.85614 206.46131,246.63493 C 206.43037,246.60914 206.39944,246.58336 206.36849,246.55758 L 207.27245,245.99315 C 207.30575,246.02277 207.33903,246.0524 207.37232,246.08202 C 207.52674,246.31812 207.72416,246.51638 207.78193,246.81173 C 207.822,247.20396 207.86675,247.59357 207.84201,247.99131 C 207.84191,248.34756 207.85482,248.70563 207.80885,249.05991 C 207.44472,249.37991 207.15187,250.27476 206.35642,250.10924 C 206.0091,250.07433 205.66125,250.02611 205.31239,250.01935 C 205.05837,250.04212 204.81145,250.1457 204.61231,249.95505 C 204.58821,249.63521 204.51667,249.31322 204.5886,248.98669 C 204.6738,248.70429 204.6646,248.42194 204.94046,248.23783 C 205.09948,248.04377 205.34588,247.90655 205.40036,247.62504 C 205.42411,247.37214 205.49169,247.12277 205.45161,246.86388 L 206.40805,246.37554 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6251" />
+      <path
+         d="M 202.06959,247.81215 C 202.18709,247.69305 202.4043,247.82199 202.57097,247.8095 C 202.36452,248.15214 202.85974,248.12081 202.96139,248.23037 C 202.85636,248.38848 203.65107,247.91619 203.48404,248.00596 C 203.21737,248.15314 202.9507,248.3003 202.68403,248.44747 C 202.71308,248.41276 202.74213,248.37804 202.77119,248.34333 C 202.87175,248.22415 202.86643,248.06143 202.91312,247.92327 L 203.86803,247.45672 C 203.82812,247.6097 203.8333,247.77879 203.74737,247.9193 C 203.24682,248.26614 202.74479,248.78501 202.08695,248.83696 C 201.79067,248.64659 201.59528,248.69241 201.60832,248.26096 C 201.93964,247.63904 201.95076,247.46224 202.93802,247.17989 L 202.06959,247.81215 z "
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78131109;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path6253" />
+      <path
+         d="M 329.82764,76.088444 L 341.1875,76.088444 L 356.01172,97.868229 L 356.01172,76.088444 L 367.479,76.088444 L 367.479,115.45856 L 356.01172,115.45856 L 341.26807,93.839909 L 341.26807,115.45856 L 329.82764,115.45856 L 329.82764,76.088444 z "
+         transform="matrix(0.7095522,0,0,0.7110141,-35.152043,-14.099956)"
+         style="font-size:55px;font-family:Arial Black"
+         id="flowRoot6364" />
+      <path
+         d="M 142.82761,276.14153 L 142.82761,251.42501 L 113.05308,263.5024 L 142.82761,276.14153 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.76694417px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1891" />
+      <path
+         d="M 282.00309,274.79688 L 282.00309,250.08146 L 311.81543,262.15832 L 282.00309,274.79688 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.76802802px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1893" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(0.7095522,0,0,0.7110141,84.068549,50.679479)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_31.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_31.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_31.svg	(revision 590)
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9454976,0,0,0.9070214,-102.31787,-192.66026)"
+       id="g2345">
+      <g
+         transform="matrix(0,0.937717,-0.916227,0,754.273,22.3902)"
+         id="g5068">
+        <path
+           d="M 507.23536,651.86218 L 464.02108,609.36218 L 495.44965,626.1479 L 508.30679,504.36218 L 507.23536,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5062" />
+        <path
+           d="M 508.10267,651.86218 L 551.31695,609.36218 L 519.88838,626.1479 L 507.03124,504.36218 L 508.10267,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5066" />
+      </g>
+      <g
+         transform="matrix(0.916227,0,0,0.937717,-131.357,66.4309)"
+         id="g5074">
+        <path
+           d="M 507.23536,651.86218 L 464.02108,609.36218 L 495.44965,626.1479 L 508.30679,504.36218 L 507.23536,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5076" />
+        <path
+           d="M 508.10267,651.86218 L 551.31695,609.36218 L 519.88838,626.1479 L 507.03124,504.36218 L 508.10267,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5078" />
+      </g>
+      <g
+         transform="matrix(0,-0.937717,0.916227,0,-87.6122,975.339)"
+         id="g5080">
+        <path
+           d="M 507.23536,651.86218 L 464.02108,609.36218 L 495.44965,626.1479 L 508.30679,506.70096 L 507.23536,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5082" />
+        <path
+           d="M 508.10267,651.86218 L 551.31695,609.36218 L 519.88838,626.1479 L 507.03124,506.31117 L 508.10267,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5084" />
+      </g>
+      <g
+         transform="matrix(-0.916227,0,0,-0.937717,799.8488,924.885)"
+         id="g5086">
+        <path
+           d="M 507.23536,651.86218 L 464.02108,609.36218 L 495.44965,626.1479 L 508.30679,504.36218 L 507.23536,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5088" />
+        <path
+           d="M 508.10267,651.86218 L 551.31695,609.36218 L 519.88838,626.1479 L 507.03124,504.36218 L 508.10267,651.86218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path5090" />
+      </g>
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-9.9544,-14.3312)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot6986" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(190.4144,201.8415)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <rect
+         width="72.688103"
+         height="72.920319"
+         x="298.56589"
+         y="459.87506"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:11.47000217;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect2190" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_13.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_13.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_13.svg	(revision 590)
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-701.34082"
+       y="405.20447"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1904" />
+    <g
+       transform="matrix(0.8259067,0,0,0.743329,49.011271,33.101891)"
+       id="g3515">
+      <path
+         d="M 329.82764,76.088444 L 341.1875,76.088444 L 356.01172,97.868229 L 356.01172,76.088444 L 367.479,76.088444 L 367.479,115.45856 L 356.01172,115.45856 L 341.26807,93.839909 L 341.26807,115.45856 L 329.82764,115.45856 L 329.82764,76.088444 z "
+         transform="translate(-151.93179,-75.1349)"
+         style="font-size:55px;font-family:Arial Black"
+         id="flowRoot6364" />
+      <path
+         d="M 123.50569,315.33198 L 196.52259,71.35588 L 268.62686,315.33198 L 195.6098,559.30806 L 123.50569,315.33198 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:18.78049088px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3529" />
+      <path
+         d="M 495 441.29074 A 62.5 32.5 0 1 1  370,441.29074 A 62.5 32.5 0 1 1  495 441.29074 z"
+         transform="matrix(1.334562,0,0,1.792097,-382.27499,-474.3921)"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:8.13799953;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3531" />
+      <path
+         d="M 193.94947,389.16064 L 197.65336,523.97327 L 155.98161,381.93853 C 168.27305,383.6378 165.12331,386.93296 193.94947,389.16064 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.6665653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4418" />
+      <path
+         d="M 199.5998,248.1647 L 195.25092,109.72055 L 237.90971,255.86829 C 225.61827,254.16902 228.42595,250.39238 199.5998,248.1647 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.6665653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path5305" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(4.298733,10.8335)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <g
+         transform="translate(-40.263487,-200)"
+         id="g2457">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2433" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2435" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2437" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2439" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2441" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2443" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2445" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2447" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2449" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2451" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2453" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2455" />
+      </g>
+      <path
+         d="M 149.73651,307.36218 L 149.73651,312.36218 L 154.73651,312.36218 L 154.73651,307.36218 L 149.73651,307.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2473" />
+      <g
+         transform="translate(-20.263487,-220)"
+         id="g2477">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2479" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2481" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2483" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2485" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2487" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2489" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2491" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2493" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2495" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2497" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2499" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2501" />
+      </g>
+      <g
+         transform="translate(-0.263487,-240)"
+         id="g2503">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2505" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2507" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2509" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2511" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2513" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2515" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2517" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2519" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2521" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2523" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2525" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2527" />
+      </g>
+      <g
+         transform="translate(-30.263487,-240)"
+         id="g2529">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2531" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2533" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2535" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2537" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2539" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2541" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2543" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2545" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2547" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2549" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2551" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2553" />
+      </g>
+      <g
+         transform="translate(9.736513,-220)"
+         id="g2555">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2557" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2559" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2561" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2563" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2565" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2567" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2569" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2571" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2573" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2575" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2577" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2579" />
+      </g>
+      <g
+         transform="translate(29.736513,-240)"
+         id="g2581">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2583" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2585" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2587" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2589" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2591" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2593" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2595" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2597" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2599" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2601" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2603" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2605" />
+      </g>
+      <g
+         transform="translate(-0.263487,-259.22097)"
+         id="g2607">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2609" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2611" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2613" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2615" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2617" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2619" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2621" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2623" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2625" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2627" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2629" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2631" />
+      </g>
+      <g
+         transform="translate(-30.263487,-259.10715)"
+         id="g2633">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2635" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2637" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2639" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2641" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2643" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2645" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2647" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2649" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2651" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2653" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2655" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2657" />
+      </g>
+      <g
+         transform="translate(-50.263487,-220)"
+         id="g2659">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2661" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2663" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2665" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2667" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2669" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2671" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2673" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2675" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2677" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2679" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2681" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2683" />
+      </g>
+      <g
+         transform="translate(39.736513,-220)"
+         id="g2685">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2687" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2689" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2691" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2693" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2695" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2697" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2699" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2701" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2703" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2705" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2707" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2709" />
+      </g>
+      <g
+         transform="translate(29.736513,-258.75001)"
+         id="g2711">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2713" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2715" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2717" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2719" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2721" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2723" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2725" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2727" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2729" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2731" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2733" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2735" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,-0.263487,-253.91242)"
+         id="g2737">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2739" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2741" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2743" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2745" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2747" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2749" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2751" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2753" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2755" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2757" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2759" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2761" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,-20.263487,-253.82305)"
+         id="g2763">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2765" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2767" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2769" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2771" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2773" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2775" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2777" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2779" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2781" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2783" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2785" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2787" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,-10.263487,-176.23375)"
+         id="g2789">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2791" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2793" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2795" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2797" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2799" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2801" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2803" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2805" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2807" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2809" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2811" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2813" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,19.736513,-176.68019)"
+         id="g2815">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2817" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2819" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2821" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2823" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2825" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2827" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2829" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2831" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2833" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2835" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2837" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2839" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,-30.263487,-157.03733)"
+         id="g2841">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2843" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2845" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2847" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2849" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2851" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2853" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2855" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2857" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2859" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2861" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2863" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2865" />
+      </g>
+      <g
+         transform="matrix(1,0,0,0.955357,-0.263487,-157.2159)"
+         id="g2867">
+        <path
+           d="M 190,547.36218 L 190,552.36218 L 195,552.36218 L 195,547.36218 L 190,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2869" />
+        <path
+           d="M 205,542.36218 L 205,547.36218 L 210,547.36218 L 210,542.36218 L 205,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2871" />
+        <path
+           d="M 190,537.36218 L 190,542.36218 L 195,542.36218 L 195,537.36218 L 190,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2873" />
+        <path
+           d="M 200,537.36218 L 200,542.36218 L 205,542.36218 L 205,537.36218 L 200,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2875" />
+        <path
+           d="M 195,542.36218 L 195,547.36218 L 200,547.36218 L 200,542.36218 L 195,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2877" />
+        <path
+           d="M 200,547.36218 L 200,552.36218 L 205,552.36218 L 205,547.36218 L 200,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2879" />
+        <path
+           d="M 210,547.36218 L 210,552.36218 L 215,552.36218 L 215,547.36218 L 210,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2881" />
+        <path
+           d="M 210,537.36218 L 210,542.36218 L 215,542.36218 L 215,537.36218 L 210,537.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2883" />
+        <path
+           d="M 205,532.36218 L 205,537.36218 L 210,537.36218 L 210,532.36218 L 205,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2885" />
+        <path
+           d="M 195,532.36218 L 195,537.36218 L 200,537.36218 L 200,532.36218 L 195,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2887" />
+        <path
+           d="M 215,542.36218 L 215,547.36218 L 220,547.36218 L 220,542.36218 L 215,542.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2889" />
+        <path
+           d="M 215,532.36218 L 215,537.36218 L 220,537.36218 L 220,532.36218 L 215,532.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2891" />
+      </g>
+      <path
+         d="M 139.73651,307.36218 L 139.73651,312.36218 L 144.73651,312.36218 L 144.73651,307.36218 L 139.73651,307.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2893" />
+      <path
+         d="M 154.73651,302.36218 L 154.73651,307.36218 L 159.73651,307.36218 L 159.73651,302.36218 L 154.73651,302.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2895" />
+      <path
+         d="M 229.73651,355.75503 L 229.73651,360.75503 L 234.73651,360.75503 L 234.73651,355.75503 L 229.73651,355.75503 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2897" />
+      <path
+         d="M 219.73651,355.75503 L 219.73651,360.75503 L 224.73651,360.75503 L 224.73651,355.75503 L 219.73651,355.75503 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2899" />
+      <path
+         d="M 234.73651,350.57646 L 234.73651,355.57646 L 239.73651,355.57646 L 239.73651,350.57646 L 234.73651,350.57646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2901" />
+      <path
+         d="M 224.73651,350.57646 L 224.73651,355.57646 L 229.73651,355.57646 L 229.73651,350.57646 L 224.73651,350.57646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2903" />
+      <path
+         d="M 234.73651,360.57646 L 234.73651,365.57646 L 239.73651,365.57646 L 239.73651,360.57646 L 234.73651,360.57646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2905" />
+      <path
+         d="M 224.73651,360.57646 L 224.73651,365.57646 L 229.73651,365.57646 L 229.73651,360.57646 L 224.73651,360.57646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2907" />
+      <path
+         d="M 249.73651,345.9336 L 249.73651,350.9336 L 254.73651,350.9336 L 254.73651,345.9336 L 249.73651,345.9336 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2909" />
+      <path
+         d="M 239.73651,345.9336 L 239.73651,350.9336 L 244.73651,350.9336 L 244.73651,345.9336 L 239.73651,345.9336 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2911" />
+      <path
+         d="M 249.73651,336.46932 L 249.73651,341.46932 L 254.73651,341.46932 L 254.73651,336.46932 L 249.73651,336.46932 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2913" />
+      <path
+         d="M 239.73651,336.46932 L 239.73651,341.46932 L 244.73651,341.46932 L 244.73651,336.46932 L 239.73651,336.46932 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2915" />
+      <path
+         d="M 254.73651,332.36218 L 254.73651,337.36218 L 259.73651,337.36218 L 259.73651,332.36218 L 254.73651,332.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2917" />
+      <path
+         d="M 244.73651,332.36218 L 244.73651,337.36218 L 249.73651,337.36218 L 249.73651,332.36218 L 244.73651,332.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2919" />
+      <path
+         d="M 254.73651,341.64789 L 254.73651,346.64789 L 259.73651,346.64789 L 259.73651,341.64789 L 254.73651,341.64789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2921" />
+      <path
+         d="M 244.73651,341.64789 L 244.73651,346.64789 L 249.73651,346.64789 L 249.73651,341.64789 L 244.73651,341.64789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2923" />
+      <path
+         d="M 249.2008,354.86217 L 249.2008,359.86217 L 254.2008,359.86217 L 254.2008,354.86217 L 249.2008,354.86217 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2925" />
+      <path
+         d="M 239.2008,354.86217 L 239.2008,359.86217 L 244.2008,359.86217 L 244.2008,354.86217 L 239.2008,354.86217 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2927" />
+      <path
+         d="M 254.2008,350.39789 L 254.2008,355.39789 L 259.2008,355.39789 L 259.2008,350.39789 L 254.2008,350.39789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2929" />
+      <path
+         d="M 244.2008,350.39789 L 244.2008,355.39789 L 249.2008,355.39789 L 249.2008,350.39789 L 244.2008,350.39789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2931" />
+      <path
+         d="M 259.73651,307.36218 L 259.73651,312.36218 L 264.73651,312.36218 L 264.73651,307.36218 L 259.73651,307.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2933" />
+      <path
+         d="M 249.73651,307.36218 L 249.73651,312.36218 L 254.73651,312.36218 L 254.73651,307.36218 L 249.73651,307.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2935" />
+      <path
+         d="M 259.73651,297.36218 L 259.73651,302.36218 L 264.73651,302.36218 L 264.73651,297.36218 L 259.73651,297.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2937" />
+      <path
+         d="M 249.73651,297.36218 L 249.73651,302.36218 L 254.73651,302.36218 L 254.73651,297.36218 L 249.73651,297.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2939" />
+      <path
+         d="M 229.73651,268.61217 L 229.73651,273.61217 L 234.73651,273.61217 L 234.73651,268.61217 L 229.73651,268.61217 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2941" />
+      <path
+         d="M 219.73651,268.61217 L 219.73651,273.61217 L 224.73651,273.61217 L 224.73651,268.61217 L 219.73651,268.61217 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2943" />
+      <path
+         d="M 154.73651,292.89789 L 154.73651,297.89789 L 159.73651,297.89789 L 159.73651,292.89789 L 154.73651,292.89789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2945" />
+      <path
+         d="M 144.73651,292.89789 L 144.73651,297.89789 L 149.73651,297.89789 L 149.73651,292.89789 L 144.73651,292.89789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2947" />
+      <path
+         d="M 154.73651,282.36218 L 154.73651,287.36218 L 159.73651,287.36218 L 159.73651,282.36218 L 154.73651,282.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2949" />
+      <path
+         d="M 144.73651,282.36218 L 144.73651,287.36218 L 149.73651,287.36218 L 149.73651,282.36218 L 144.73651,282.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2951" />
+      <path
+         d="M 149.73651,288.07646 L 149.73651,293.07646 L 154.73651,293.07646 L 154.73651,288.07646 L 149.73651,288.07646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2953" />
+      <path
+         d="M 139.73651,288.07646 L 139.73651,293.07646 L 144.73651,293.07646 L 144.73651,288.07646 L 139.73651,288.07646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2955" />
+      <path
+         d="M 144.73651,302.36218 L 144.73651,307.36218 L 149.73651,307.36218 L 149.73651,302.36218 L 144.73651,302.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2957" />
+      <path
+         d="M 134.73651,302.36218 L 134.73651,307.36218 L 139.73651,307.36218 L 139.73651,302.36218 L 134.73651,302.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2959" />
+      <path
+         d="M 149.73651,297.36218 L 149.73651,302.36218 L 154.73651,302.36218 L 154.73651,297.36218 L 149.73651,297.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2961" />
+      <path
+         d="M 139.73651,297.36218 L 139.73651,302.36218 L 144.73651,302.36218 L 144.73651,297.36218 L 139.73651,297.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2963" />
+      <path
+         d="M 159.73651,268.07646 L 159.73651,273.07646 L 164.73651,273.07646 L 164.73651,268.07646 L 159.73651,268.07646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2965" />
+      <path
+         d="M 149.73651,268.07646 L 149.73651,273.07646 L 154.73651,273.07646 L 154.73651,268.07646 L 149.73651,268.07646 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2967" />
+      <path
+         d="M 154.73651,273.43361 L 154.73651,278.43361 L 159.73651,278.43361 L 159.73651,273.43361 L 154.73651,273.43361 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2969" />
+      <path
+         d="M 144.73651,273.43361 L 144.73651,278.43361 L 149.73651,278.43361 L 149.73651,273.43361 L 144.73651,273.43361 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2971" />
+      <path
+         d="M 149.73651,278.4336 L 149.73651,283.4336 L 154.73651,283.4336 L 154.73651,278.4336 L 149.73651,278.4336 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2973" />
+      <path
+         d="M 139.73651,278.4336 L 139.73651,283.4336 L 144.73651,283.4336 L 144.73651,278.4336 L 139.73651,278.4336 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2975" />
+      <path
+         d="M 144.73651,332.36218 L 144.73651,337.36218 L 149.73651,337.36218 L 149.73651,332.36218 L 144.73651,332.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2977" />
+      <path
+         d="M 134.73651,332.36218 L 134.73651,337.36218 L 139.73651,337.36218 L 139.73651,332.36218 L 134.73651,332.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2979" />
+      <path
+         d="M 154.73651,352.36218 L 154.73651,357.36218 L 159.73651,357.36218 L 159.73651,352.36218 L 154.73651,352.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2981" />
+      <path
+         d="M 144.73651,352.36218 L 144.73651,357.36218 L 149.73651,357.36218 L 149.73651,352.36218 L 144.73651,352.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2983" />
+      <path
+         d="M 149.73651,357.36218 L 149.73651,362.36218 L 154.73651,362.36218 L 154.73651,357.36218 L 149.73651,357.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2985" />
+      <path
+         d="M 139.73651,357.36218 L 139.73651,362.36218 L 144.73651,362.36218 L 144.73651,357.36218 L 139.73651,357.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2987" />
+      <path
+         d="M 144.73651,342.36218 L 144.73651,347.36218 L 149.73651,347.36218 L 149.73651,342.36218 L 144.73651,342.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2989" />
+      <path
+         d="M 134.73651,342.36218 L 134.73651,347.36218 L 139.73651,347.36218 L 139.73651,342.36218 L 134.73651,342.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2991" />
+      <path
+         d="M 139.73651,337.36218 L 139.73651,342.36218 L 144.73651,342.36218 L 144.73651,337.36218 L 139.73651,337.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2993" />
+      <path
+         d="M 129.73651,337.36218 L 129.73651,342.36218 L 134.73651,342.36218 L 134.73651,337.36218 L 129.73651,337.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2995" />
+      <path
+         d="M 134.73651,312.36218 L 134.73651,317.36218 L 139.73651,317.36218 L 139.73651,312.36218 L 134.73651,312.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2997" />
+      <path
+         d="M 124.73651,312.36218 L 124.73651,317.36218 L 129.73651,317.36218 L 129.73651,312.36218 L 124.73651,312.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2999" />
+      <path
+         d="M 134.73651,322.36218 L 134.73651,327.36218 L 139.73651,327.36218 L 139.73651,322.36218 L 134.73651,322.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3001" />
+      <path
+         d="M 124.73651,322.36218 L 124.73651,327.36218 L 129.73651,327.36218 L 129.73651,322.36218 L 124.73651,322.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3003" />
+      <path
+         d="M 139.73651,347.36218 L 139.73651,352.36218 L 144.73651,352.36218 L 144.73651,347.36218 L 139.73651,347.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3005" />
+      <path
+         d="M 154.55794,361.29074 L 154.55794,366.29074 L 159.55794,366.29074 L 159.55794,361.29074 L 154.55794,361.29074 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3007" />
+      <path
+         d="M 254.73651,302.36218 L 254.73651,307.36218 L 259.73651,307.36218 L 259.73651,302.36218 L 254.73651,302.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3009" />
+      <path
+         d="M 249.73651,287.89789 L 249.73651,292.89789 L 254.73651,292.89789 L 254.73651,287.89789 L 249.73651,287.89789 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3011" />
+      <path
+         d="M 130.27223,317.36218 L 130.27223,322.36218 L 135.27223,322.36218 L 135.27223,317.36218 L 130.27223,317.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3013" />
+      <path
+         d="M 164.73651,263.79075 L 164.73651,268.79075 L 169.73651,268.79075 L 169.73651,263.79075 L 164.73651,263.79075 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3015" />
+      <path
+         d="M 134.73651,292.36218 L 134.73651,297.36218 L 139.73651,297.36218 L 139.73651,292.36218 L 134.73651,292.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3017" />
+      <path
+         d="M 129.73651,307.36218 L 129.73651,312.36218 L 134.73651,312.36218 L 134.73651,307.36218 L 129.73651,307.36218 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3019" />
+      <g
+         transform="translate(206.00461,-206.34937)"
+         id="g3918">
+        <path
+           d="M 71.92985,517.23305 L 120.9173,517.05448 L 69.786993,495.07775 L 71.92985,517.23305 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.36042655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3021" />
+        <path
+           d="M 71.889735,517.4223 L 120.23505,517.185 L 70.119824,537.91579 L 71.889735,517.4223 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5915302px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3023" />
+      </g>
+      <g
+         transform="matrix(-1,0,0,-1,181.59751,829.975)"
+         id="g3922">
+        <path
+           d="M 71.92985,517.23305 L 120.9173,517.05448 L 69.786993,495.07775 L 71.92985,517.23305 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.36042655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3924" />
+        <path
+           d="M 71.889735,517.4223 L 120.23505,517.185 L 70.119824,537.91579 L 71.889735,517.4223 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5915302px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3926" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_32.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_32.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_32.svg	(revision 590)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.692892,0,0,0.6133452,-55.846424,-1.9260903)"
+       id="g2354">
+      <g
+         transform="matrix(1.07605,0,0,1.112571,-62.456755,-109.20897)"
+         id="g7113">
+        <path
+           d="M 390.49064,357.67909 L 424.12782,286.1908 L 455.20366,357.67909 L 455.20366,572.14396 L 424.12782,643.63225 L 390.49064,572.14396 L 390.49064,357.67909 L 390.49064,357.67909 L 390.49064,357.67909 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:68.01634216px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7090" />
+        <path
+           d="M 327.05829,496.34921 L 262.34527,459.19032 L 327.05829,424.86092 L 521.19735,424.86092 L 585.91037,459.19032 L 521.19735,496.34921 L 327.05829,496.34921 L 327.05829,496.34921 L 327.05829,496.34921 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:68.01634216px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7092" />
+        <path
+           d="M 378.27824,924.60277 L 378.79803,923.60277 L 379.27824,924.60277 L 379.27824,927.60277 L 378.79803,928.60277 L 378.27824,927.60277 L 378.27824,924.60277 L 378.27824,924.60277 L 378.27824,924.60277 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7098" />
+        <path
+           d="M 141.1569,893.80779 L 141.67669,892.80779 L 142.1569,893.80779 L 142.1569,896.80779 L 141.67669,897.80779 L 141.1569,896.80779 L 141.1569,893.80779 L 141.1569,893.80779 L 141.1569,893.80779 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path7100" />
+        <rect
+           width="136.26778"
+           height="50.04184"
+           x="321.80753"
+           y="448.78058"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:7.0999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect7106" />
+        <rect
+           width="72.368202"
+           height="44.652721"
+           x="453.45605"
+           y="438.00235"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:7.0999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect7111" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.07605,0,0,1.112571,303.90437,70.026496)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.07605,0,0,1.112571,23.822763,-236.61482)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_14.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_14.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_14.svg	(revision 590)
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.2048906,0,0,1.2187584,-140.60253,-383.18666)"
+       id="g2615">
+      <path
+         d="M 278.25058,373.19073 L 289.81699,373.19073 L 304.91074,395.36652 L 304.91074,373.19073 L 316.58652,373.19073 L 316.58652,413.27667 L 304.91074,413.27667 L 289.89902,391.26495 L 289.89902,413.27667 L 278.25058,413.27667 L 278.25058,373.19073 z "
+         style="font-size:56px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial Black"
+         id="text3823" />
+      <path
+         d="M 414.24942,509.00494 L 447.44473,509.00494 L 447.44473,517.56354 L 426.66348,517.56354 L 426.66348,523.93463 L 445.94083,523.93463 L 445.94083,532.11041 L 426.66348,532.11041 L 426.66348,540.01276 L 448.0463,540.01276 L 448.0463,549.09088 L 414.24942,549.09088 L 414.24942,509.00494 z "
+         style="font-size:56px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial Black"
+         id="text3831" />
+      <g
+         id="g8432">
+        <path
+           d="M 545.48238 517.99152 A 79.802048 79.802048 0 1 1  385.87828,517.99152 A 79.802048 79.802048 0 1 1  545.48238 517.99152 z"
+           transform="matrix(0.759387,0,0,0.722648,-57.16595,152.0945)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:26.54899979;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path2209" />
+        <path
+           d="M 545.48238 517.99152 A 79.802048 79.802048 0 1 1  385.87828,517.99152 A 79.802048 79.802048 0 1 1  545.48238 517.99152 z"
+           transform="matrix(0.184375,0,0,0.165506,211.2137,441.605)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:70.65251923;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3098" />
+        <path
+           d="M 296.73231,544.41218 L 296.73231,584.06066 L 296.73231,584.06066"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5759" />
+        <path
+           d="M 296.42857,468.60937 L 296.42857,508.25785 L 296.42857,508.25785"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8418" />
+        <path
+           d="M 354.4671,527.71932 L 314.81862,527.71932 L 314.81862,527.71932"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8420" />
+        <path
+           d="M 277.39848,526.6479 L 237.75,526.6479 L 237.75,526.6479"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8422" />
+        <path
+           d="M 257.75,487.63005 L 285.7857,515.66575 L 285.7857,515.66575"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8424" />
+        <path
+           d="M 309.2143,537.98719 L 337.25,566.02289 L 337.25,566.02289"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8426" />
+        <path
+           d="M 285.7857,534.05862 L 257.75,562.09432 L 257.75,562.09432"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8428" />
+        <path
+           d="M 337.25,486.20148 L 309.2143,514.23718 L 309.2143,514.23718"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path8430" />
+      </g>
+      <path
+         d="M 286.26606,459.20305 L 286.26606,430.25831 L 297.34173,415.78595 L 308.41739,430.25831 L 308.41739,459.20305 L 286.26606,459.20305 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.53212357px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8446" />
+      <path
+         d="M 365.31685,518.62824 L 394.26158,518.62824 L 408.73394,529.70391 L 394.26158,540.77958 L 365.31685,540.77958 L 365.31685,518.62824 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.53212357px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8450" />
+      <path
+         d="M 307.55545,589.72204 L 307.55545,618.66678 L 296.47977,633.13914 L 285.40411,618.66678 L 285.40411,589.72204 L 307.55545,589.72204 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.53212357px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8452" />
+      <path
+         d="M 227.77969,537.65344 L 198.83494,537.65344 L 184.36259,526.57776 L 198.83494,515.50211 L 227.77969,515.50211 L 227.77969,537.65344 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.53212357px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8454" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_50.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_50.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_50.svg	(revision 590)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-31.112698,-266.90636)"
+       id="g2400">
+      <g
+         transform="matrix(3.441086,0,0,3.232982,-957.2253,-1215.08)"
+         id="g6568">
+        <g
+           transform="matrix(0.35534,0,0,0.348629,244.3993,348.4684)"
+           id="g3649">
+          <path
+             d="M 352.14284 523.52289 A 7.5892859 7.5892859 0 1 1  336.96427,523.52289 A 7.5892859 7.5892859 0 1 1  352.14284 523.52289 z"
+             transform="translate(-39.25,7.02858)"
+             style="opacity:0.97000002;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1872" />
+          <path
+             d="M 363.0357 527.27289 A 17.857143 19.375 0 1 1  327.32141,527.27289 A 17.857143 19.375 0 1 1  363.0357 527.27289 z"
+             transform="matrix(0.695668,0,0,0.642091,65.42376,192.1552)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:9.30445576;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2760" />
+          <path
+             d="M 336.5 531.73718 A 30.875 30.875 0 1 1  274.75,531.73718 A 30.875 30.875 0 1 1  336.5 531.73718 z"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:8.44200039;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path3647" />
+        </g>
+        <path
+           d="M 374.75 534.61218 A 21.25 21.25 0 1 1  332.25,534.61218 A 21.25 21.25 0 1 1  374.75 534.61218 z"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:8.44200039;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path3654" />
+        <path
+           d="M 387.125 534.36218 A 34.3125 33.25 0 1 1  318.5,534.36218 A 34.3125 33.25 0 1 1  387.125 534.36218 z"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.10000002;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4543" />
+        <path
+           d="M 378.52899,537.36218 L 386.59601,537.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02857721px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4545" />
+        <path
+           d="M 328.48148,537.36218 L 319.01852,537.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01835012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4547" />
+        <path
+           d="M 354.125,509.70385 L 354.125,500.77051"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.03279555px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4549" />
+        <path
+           d="M 354,560.11218 L 354.125,567.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4551" />
+        <path
+           d="M 371.22476,517.21065 L 377.40653,511.83065"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.1137265px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4553" />
+        <path
+           d="M 328.02107,511.50825 L 334.36909,518.31966"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.04214442px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4559" />
+        <path
+           d="M 369.00535,554.29431 L 374.96432,559.3265"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.07136142px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4561" />
+        <path
+           d="M 335.2848,551.98899 L 328.73664,557.41215"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.07683265px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4565" />
+        <g
+           transform="translate(-45.77614,-47.23058)"
+           id="g6353">
+          <path
+             d="M 394.7,548.46236 L 399.65581,548.02042 L 399.7,542.05438 L 394.7,548.46236 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4567" />
+          <path
+             d="M 404.80486,548.46894 L 399.76067,548.027 L 399.80486,542.06096 L 404.80486,548.46894 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5454" />
+        </g>
+        <g
+           transform="matrix(0,1,-1,0,935.2752,137.4873)"
+           id="g6357">
+          <path
+             d="M 394.7,548.46236 L 399.65581,548.02042 L 399.7,542.05438 L 394.7,548.46236 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6359" />
+          <path
+             d="M 404.80486,548.71894 L 399.76067,548.027 L 399.80486,542.06096 L 404.80486,548.71894 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6361" />
+        </g>
+        <g
+           transform="matrix(-1,0,0,-1,753.6594,1115.901)"
+           id="g6363">
+          <path
+             d="M 394.7,548.46236 L 399.65581,548.02042 L 399.7,542.05438 L 394.7,548.46236 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6365" />
+          <path
+             d="M 404.80486,548.46894 L 399.76067,548.027 L 399.80486,542.06096 L 404.80486,548.46894 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6367" />
+        </g>
+        <g
+           transform="matrix(0,-1,1,0,-229.8036,936.8154)"
+           id="g6369">
+          <path
+             d="M 394.95,548.64986 L 399.65581,548.02042 L 399.7,542.05438 L 394.95,548.64986 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6371" />
+          <path
+             d="M 404.80486,548.46894 L 399.76067,548.027 L 399.80486,542.06096 L 404.80486,548.46894 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6373" />
+        </g>
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(79.83724,224.2814)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-83.95703,65.86333)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(-80.19434,368.4911)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1980" />
+      <path
+         d="M 323.43359,303.29417 C 323.43359,298.8645 324.92838,295.21412 327.91797,292.343 C 330.90754,289.47193 334.9453,288.03639 340.03125,288.03636 C 345.84633,288.03639 350.23955,289.72258 353.21094,293.09495 C 355.59892,295.81112 356.79293,299.15617 356.79297,303.13011 C 356.79293,307.59626 355.31182,311.25577 352.34961,314.10862 C 349.38734,316.96149 345.29034,318.38792 340.05859,318.38792 C 335.39191,318.38792 331.61848,317.20303 328.73828,314.83323 C 325.20182,311.89834 323.43359,308.05199 323.43359,303.29417 L 323.43359,303.29417 z M 334.58984,303.26683 C 334.58983,305.85538 335.11392,307.76944 336.16211,309.00901 C 337.21027,310.24861 338.52733,310.8684 340.11328,310.86839 C 341.71743,310.8684 343.03448,310.25772 344.06445,309.03636 C 345.09438,307.81501 345.60935,305.85538 345.60938,303.15745 C 345.60935,300.64184 345.08982,298.7688 344.05078,297.53831 C 343.0117,296.30786 341.72654,295.69263 340.19531,295.69261 C 338.5729,295.69263 337.23306,296.31698 336.17578,297.56566 C 335.11848,298.81437 334.58983,300.71476 334.58984,303.26683 L 334.58984,303.26683 z "
+         transform="matrix(1.1604724,0,0,1.6290247,-301.21997,28.288088)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot1988" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_33.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_33.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_33.svg	(revision 590)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-211.14286,-229.14286)"
+       id="g2296">
+      <path
+         d="M 420.81217,382.32553 L 441.5203,382.32553 L 441.26776,362.32553 L 430.28924,352.32553 L 420.28924,362.32553 L 420.81217,382.32553 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1940" />
+      <path
+         d="M 316.37247,500.749 L 316.37247,480.04087 L 296.37247,480.29341 L 286.37247,491.27193 L 296.37247,501.27193 L 316.37247,500.749 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1944" />
+      <path
+         d="M 444.69204,611.51947 L 423.98391,611.51947 L 424.23645,631.51947 L 435.21497,641.51947 L 445.21497,631.51947 L 444.69204,611.51947 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1946" />
+      <path
+         d="M 544.79656,480.91011 L 544.79656,501.61824 L 564.79656,501.3657 L 574.79656,490.38718 L 564.79656,480.38718 L 544.79656,480.91011 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1948" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(251.7385,195.8562)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(82.65034,32.49398)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 539.42146 493.74783 A 109.09647 109.09647 0 1 1  321.22851,493.74783 A 109.09647 109.09647 0 1 1  539.42146 493.74783 z"
+         transform="matrix(0.952336,0,0,0.956965,20.95538,24.29912)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:24.07065964;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="path2069" />
+      <rect
+         width="55.73521"
+         height="62.806278"
+         x="402.96243"
+         y="528.5097"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.93448257;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="rect2956" />
+      <rect
+         width="55.73521"
+         height="62.806278"
+         x="341.30261"
+         y="462.34467"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.93448257;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="rect3843" />
+      <rect
+         width="55.73521"
+         height="62.806278"
+         x="402.4574"
+         y="395.16953"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.93448257;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="rect3845" />
+      <rect
+         width="55.73521"
+         height="62.806278"
+         x="464.07666"
+         y="462.34467"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6.93448257;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="rect3847" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_15.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_15.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_15.svg	(revision 590)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-84.852813,-216.17264)"
+       id="g2389">
+      <g
+         transform="matrix(1.571043,0,0,1.579954,-346.75734,-400.58831)"
+         id="g8708">
+        <g
+           id="g7798">
+          <g
+             transform="matrix(1.499409,0,0,1.417922,-191.9873,-156.6127)"
+             id="g6877">
+            <path
+               d="M 403.17712 540.59363 A 13.384521 13.384521 0 1 1  376.40808,540.59363 A 13.384521 13.384521 0 1 1  403.17712 540.59363 z"
+               transform="matrix(1.195693,0,0,1.190976,-72.34677,-122.1065)"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.92016244;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path4200" />
+            <g
+               id="g4214">
+              <g
+                 id="g4204">
+                <path
+                   d="M 393.94568,506.11758 L 393.94568,521.85051 L 408.92234,521.85051 C 407.80587,513.39838 405.95738,505.55212 393.94568,506.11758 z "
+                   style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02334249px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   id="path4198" />
+                <path
+                   d="M 393.62106,506.22294 L 393.62106,521.83367 L 378.64056,521.83367 C 379.75731,513.44719 381.60628,505.66187 393.62106,506.22294 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.01949167px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   id="path4202" />
+              </g>
+              <g
+                 transform="matrix(-1,0,0,-1,787.6156,1044.094)"
+                 id="g4208">
+                <path
+                   d="M 393.94568,506.11758 L 393.94568,521.85051 L 408.92234,521.85051 C 407.80587,513.39838 405.95738,505.55212 393.94568,506.11758 z "
+                   style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02334249px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   id="path4210" />
+                <path
+                   d="M 393.62106,506.22294 L 393.62106,521.83367 L 378.64056,521.83367 C 379.75731,513.44719 381.60628,505.66187 393.62106,506.22294 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.01949167px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+                   id="path4212" />
+              </g>
+            </g>
+          </g>
+          <g
+             transform="matrix(4.00614,0,0,4.277573,-1024.345,-1738.586)"
+             id="g7782">
+            <path
+               d="M 355.06313,536.94472 L 355.06313,516.77774 L 347.62119,527.39853 L 353.06313,525.82017 L 353.06313,537.36218 L 355.06313,536.94472 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path6889" />
+            <path
+               d="M 355.58824,536.74494 L 355.74052,517.57703 L 361.36875,526.7465 L 357.30349,526.11765 L 357.30349,537.20415 L 355.58824,536.74494 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88372129px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path6891" />
+          </g>
+          <g
+             transform="matrix(0,-4.00614,-4.277573,0,2719.64,2005.773)"
+             id="g7786">
+            <path
+               d="M 355.06313,536.94472 L 355.06313,516.77774 L 347.62119,527.39853 L 353.06313,525.82017 L 353.06313,537.36218 L 355.06313,536.94472 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path7788" />
+            <path
+               d="M 355.58824,536.74494 L 355.74052,517.57703 L 361.36875,526.7465 L 357.30349,526.11765 L 357.30349,537.20415 L 355.58824,536.74494 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.88372129px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path7790" />
+          </g>
+        </g>
+        <g
+           transform="matrix(1.903547,0,0,2.122449,-260.0025,-661.6547)"
+           id="g8704">
+          <path
+             d="M 341,597.05034 L 341,617.92407 L 345.91071,617.92407 L 345.91071,597.05034 L 341,597.05034 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7815" />
+          <path
+             d="M 345.5,597.45147 L 345.5,617.45147 L 350.5,617.45147 L 350.5,597.45147 L 345.5,597.45147 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path7817" />
+        </g>
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(136.65162,223.71949)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-64.517638,17.31039)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_34.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_34.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_34.svg	(revision 590)
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.928007,0,0,0.8676816,-38.415215,-275.01597)"
+       id="g2285">
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-63.48761,108.459)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot5601" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(138.941,316.7704)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot5629" />
+      <path
+         d="M 411.42857 608.79077 A 130.71428 130.71428 0 1 1  150.00002,608.79077 A 130.71428 130.71428 0 1 1  411.42857 608.79077 z"
+         transform="translate(0,0.178571)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:14.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2031" />
+      <g
+         transform="matrix(1.922619,0,0,4.383232,-399.5132,-1999.594)"
+         id="g4708">
+        <g
+           id="g6484">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4710" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path4712" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0,1.922619,-4.383232,0,2888.717,-63.9146)"
+         id="g6512">
+        <g
+           id="g6514">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6516" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6518" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0,-1.922619,4.383232,0,-2325.866,1284.001)"
+         id="g6520">
+        <g
+           id="g6522">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6524" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6526" />
+        </g>
+      </g>
+      <g
+         transform="matrix(-1.922619,0,0,-4.383232,960.4984,3212.826)"
+         id="g6528">
+        <g
+           id="g6530">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6532" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6534" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_16.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_16.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_16.svg	(revision 590)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-6.0609153,-299.00515)"
+       id="g2353">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(73.02687,329.2014)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-163.2756,98.48723)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 167.02003,489.46471 L 167.02003,580.04063 L 194.42177,580.04063 L 194.42177,489.46471 L 224.75941,498.03614 L 181.69953,421.27893 L 136.04684,499.46471 L 167.02003,489.46471 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.2525382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path8017" />
+      <path
+         d="M 320.48079,610.40766 L 229.90487,610.40766 L 229.90487,637.8094 L 320.48079,637.8094 L 311.90936,668.14704 L 388.66657,625.08716 L 310.48079,579.43446 L 320.48079,610.40766 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5.2525382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2035" />
+      <path
+         d="M 73.571428 526.29077 A 50.357143 50.357143 0 1 1  -27.142859,526.29077 A 50.357143 50.357143 0 1 1  73.571428 526.29077 z"
+         transform="matrix(0.933215,0,0,0.883569,158.3361,161.9905)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:12.30000019;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2037" />
+      <path
+         d="M 207.14286,595.21932 L 150.71429,656.6479"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2924" />
+      <path
+         d="M 150.37143,595.56218 L 206.8,656.99076"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2926" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_35.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_35.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_35.svg	(revision 590)
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9134585,0,0,0.914023,-41.303183,-208.6576)"
+       id="g2437">
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-60.39171,23.3712)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot5601" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(142.0369,231.6826)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot5629" />
+      <path
+         d="M 411.42857 608.79077 A 130.71428 130.71428 0 1 1  150.00002,608.79077 A 130.71428 130.71428 0 1 1  411.42857 608.79077 z"
+         transform="translate(3.0959,-84.909229)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:14.19999981;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2031" />
+      <g
+         transform="matrix(1.922619,0,0,4.383232,-396.4173,-2084.6818)"
+         id="g4708">
+        <g
+           id="g6484">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4710" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path4712" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0,1.922619,-4.383232,0,2891.8129,-149.0024)"
+         id="g6512">
+        <g
+           id="g6514">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6516" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6518" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0,-1.922619,4.383232,0,-2322.7701,1198.9132)"
+         id="g6520">
+        <g
+           id="g6522">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6524" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6526" />
+        </g>
+      </g>
+      <g
+         transform="matrix(-1.922619,0,0,-4.383232,963.5943,3127.7382)"
+         id="g6528">
+        <g
+           id="g6530">
+          <path
+             d="M 353.66649,564.0395 L 353.66664,553.75846 L 363.09041,564.0395 L 353.66649,564.0395 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6532" />
+          <path
+             d="M 353.54449,563.96907 L 353.76443,553.91206 L 352.03253,555.77243 L 344.17746,563.96907 L 353.54449,563.96907 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.17066273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+             id="path6534" />
+        </g>
+      </g>
+      <g
+         transform="translate(-251.0229,142.9366)"
+         id="g2301">
+        <path
+           d="M 473.15698,395.53775 L 497.20946,395.53775 L 497.20946,373.22204 L 473.15698,373.22204 L 473.15698,395.53775 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2040" />
+        <path
+           d="M 545.31443,417.85346 L 569.36692,417.85346 L 569.36692,395.53775 L 545.31443,395.53775 L 545.31443,417.85346 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2927" />
+        <path
+           d="M 497.20946,417.85346 L 521.26195,417.85346 L 521.26195,395.53775 L 497.20946,395.53775 L 497.20946,417.85346 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2929" />
+        <path
+           d="M 473.15698,350.90633 L 497.20946,350.90633 L 497.20946,328.59062 L 473.15698,328.59062 L 473.15698,350.90633 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2931" />
+        <path
+           d="M 521.26195,350.90633 L 545.31443,350.90633 L 545.31443,328.59062 L 521.26195,328.59062 L 521.26195,350.90633 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2933" />
+        <path
+           d="M 497.20946,373.22204 L 521.26195,373.22204 L 521.26195,350.90633 L 497.20946,350.90633 L 497.20946,373.22204 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2935" />
+        <path
+           d="M 521.26195,395.53775 L 545.31443,395.53775 L 545.31443,373.22204 L 521.26195,373.22204 L 521.26195,395.53775 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2937" />
+        <path
+           d="M 545.31443,462.48488 L 569.36692,462.48488 L 569.36692,440.16917 L 545.31443,440.16917 L 545.31443,462.48488 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2939" />
+        <path
+           d="M 569.36692,440.16917 L 593.4194,440.16917 L 593.4194,417.85346 L 569.36692,417.85346 L 569.36692,440.16917 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2941" />
+        <path
+           d="M 569.36692,350.90633 L 593.4194,350.90633 L 593.4194,328.59062 L 569.36692,328.59062 L 569.36692,350.90633 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2943" />
+        <path
+           d="M 545.31443,373.22204 L 569.36692,373.22204 L 569.36692,350.90633 L 545.31443,350.90633 L 545.31443,373.22204 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2945" />
+        <path
+           d="M 569.36692,395.53775 L 593.4194,395.53775 L 593.4194,373.22204 L 569.36692,373.22204 L 569.36692,395.53775 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2947" />
+        <path
+           d="M 521.26195,440.16917 L 545.31443,440.16917 L 545.31443,417.85346 L 521.26195,417.85346 L 521.26195,440.16917 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2949" />
+        <path
+           d="M 497.20946,462.48488 L 521.26195,462.48488 L 521.26195,440.16917 L 497.20946,440.16917 L 497.20946,462.48488 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2951" />
+        <path
+           d="M 593.4194,373.22204 L 617.47189,373.22204 L 617.47189,350.90633 L 593.4194,350.90633 L 593.4194,373.22204 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2953" />
+        <path
+           d="M 593.4194,417.85346 L 617.47189,417.85346 L 617.47189,395.53775 L 593.4194,395.53775 L 593.4194,417.85346 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2955" />
+        <path
+           d="M 593.4194,462.48488 L 617.47189,462.48488 L 617.47189,440.16917 L 593.4194,440.16917 L 593.4194,462.48488 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2957" />
+        <path
+           d="M 449.10449,373.22204 L 473.15698,373.22204 L 473.15698,350.90633 L 449.10449,350.90633 L 449.10449,373.22204 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2959" />
+        <path
+           d="M 449.10449,417.85346 L 473.15698,417.85346 L 473.15698,395.53775 L 449.10449,395.53775 L 449.10449,417.85346 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2961" />
+        <path
+           d="M 449.10449,462.48488 L 473.15698,462.48488 L 473.15698,440.16917 L 449.10449,440.16917 L 449.10449,462.48488 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2963" />
+        <path
+           d="M 473.15698,440.16917 L 497.20946,440.16917 L 497.20946,417.85346 L 473.15698,417.85346 L 473.15698,440.16917 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2965" />
+        <path
+           d="M 593.4194,328.59062 L 617.47189,328.59062 L 617.47189,306.27491 L 593.4194,306.27491 L 593.4194,328.59062 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2967" />
+        <path
+           d="M 545.31443,328.59062 L 569.36692,328.59062 L 569.36692,306.27491 L 545.31443,306.27491 L 545.31443,328.59062 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2969" />
+        <path
+           d="M 497.20946,328.59062 L 521.26195,328.59062 L 521.26195,306.27491 L 497.20946,306.27491 L 497.20946,328.59062 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2971" />
+        <path
+           d="M 449.10449,328.59062 L 473.15698,328.59062 L 473.15698,306.27491 L 449.10449,306.27491 L 449.10449,328.59062 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2973" />
+        <rect
+           width="174.07446"
+           height="163.09892"
+           x="446.40341"
+           y="302.03339"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:9.14688969;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3002" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_17.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_17.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_17.svg	(revision 590)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-160.16536"
+       y="696.0271"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1904" />
+    <g
+       transform="matrix(1.1122325,0,0,1.1813269,-211.4308,-322.58952)"
+       id="g2269">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(210.47753,252.2551)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-6.4618,86.3972)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 324.32914,589.08659 L 324.32914,477.45572 L 285.07872,477.45572 L 343.10835,419.09314 L 402.82999,477.45572 L 363.57957,477.45572 L 363.57957,536.08598 L 442.08042,536.79076 L 442.08042,505.36344 L 520.58126,548.77195 L 442.08042,589.08659 L 442.08042,561.17887 L 363.57957,561.17887 L 363.57957,616.99429 L 324.32914,616.99429 L 324.32914,589.08659 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.6193347px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2062" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_18.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_18.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_18.svg	(revision 590)
@@ -0,0 +1,1143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-903.08594"
+       y="736.21582"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect10945" />
+    <g
+       transform="matrix(0.8592252,0,0,0.7415268,-30.403055,-104.58622)"
+       id="g3326">
+      <g
+         transform="matrix(0.814946,0,0,0.787774,6.5236532,123.8046)"
+         id="g10496">
+        <path
+           d="M 207.14285 521.11218 A 8.5714283 9.1071424 0 1 1  190,521.11218 A 8.5714283 9.1071424 0 1 1  207.14285 521.11218 z"
+           transform="matrix(1.514551,0,0,1.562715,-67.35827,-363.7734)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4264" />
+        <g
+           transform="translate(-89.01013,-84.53831)"
+           id="g7810">
+          <g
+             transform="matrix(1.866078,0,0,2.441031,-312.9909,-797.6275)"
+             id="g4150">
+            <g
+               id="g4065">
+              <path
+                 d="M 340.38498,539.53288 L 318.36502,515.2868 L 340.38498,442.54865 L 340.38498,539.53288 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.68687034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2156" />
+              <g
+                 id="g3986">
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.53571"
+                   y="512.89789"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3045" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.8475"
+                   y="472.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3047" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44644"
+                   y="482.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3049" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="492.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3051" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="502.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3053" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="487.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3055" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="477.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3057" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44641"
+                   y="462.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3059" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="517.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3063" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="507.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3065" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="497.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3067" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="321.875"
+                   y="507.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3069" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="502.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3071" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.51785"
+                   y="492.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3073" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="522.67395"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3077" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="512.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3079" />
+                <path
+                   d="M 334.9,532.46218 L 334.9,527.46218 L 329.9,527.46218 L 334.9,532.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path3081" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="327.41071"
+                   y="482.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3968" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="336.89999"
+                   y="452.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3972" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="332.33929"
+                   y="467.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3974" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="323.10001"
+                   y="497.26218"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3976" />
+                <path
+                   d="M 339.55357,537.26218 L 339.55357,532.26218 L 334.55357,532.26218 L 339.55357,537.26218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path3978" />
+                <path
+                   d="M 325.9,522.46218 L 325.9,517.46218 L 320.9,517.46218 L 325.9,522.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path3980" />
+                <path
+                   d="M 330.18929,527.54074 L 330.18929,522.54074 L 325.18929,522.54074 L 330.18929,527.54074 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path3982" />
+                <rect
+                   width="2.3439825"
+                   height="4.4510989"
+                   x="319.12979"
+                   y="512.58484"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.44530416;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect3984" />
+              </g>
+            </g>
+            <g
+               transform="matrix(-1,0,0,1,681.2284,-0.464293)"
+               id="g4094">
+              <path
+                 d="M 340.38498,539.53288 L 318.36502,515.2868 L 340.48067,442.10973 L 340.38498,539.53288 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.68687034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path4096" />
+              <g
+                 id="g4098">
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.53571"
+                   y="512.89789"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4100" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.8475"
+                   y="472.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4102" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44644"
+                   y="482.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4104" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="492.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4106" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="502.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4108" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="487.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4110" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="477.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4112" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44641"
+                   y="462.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4114" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="517.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4116" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="507.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4118" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="497.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4120" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="321.875"
+                   y="507.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4122" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="502.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4124" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.51785"
+                   y="492.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4126" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="522.67395"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4128" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="512.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4130" />
+                <path
+                   d="M 334.9,532.46218 L 334.9,527.46218 L 329.9,527.46218 L 334.9,532.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path4132" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="327.41071"
+                   y="482.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4134" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="336.89999"
+                   y="452.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4136" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="332.33929"
+                   y="467.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4138" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="323.10001"
+                   y="497.26218"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4140" />
+                <path
+                   d="M 339.55357,537.26218 L 339.55357,532.26218 L 334.55357,532.26218 L 339.55357,537.26218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path4142" />
+                <path
+                   d="M 325.9,522.46218 L 325.9,517.46218 L 320.9,517.46218 L 325.9,522.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path4144" />
+                <path
+                   d="M 330.18929,527.54074 L 330.18929,522.54074 L 325.18929,522.54074 L 330.18929,527.54074 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path4146" />
+                <rect
+                   width="2.3439825"
+                   height="4.4510989"
+                   x="319.12979"
+                   y="512.58484"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.44530416;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect4148" />
+              </g>
+            </g>
+          </g>
+          <path
+             d="M 320.32403,282.96888 L 325.22942,283.16819 L 323.31346,274.30366 L 320.32403,282.96888 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.13547522;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5151" />
+        </g>
+      </g>
+      <g
+         transform="matrix(0.814946,0,0,0.787774,191.41172,142.72393)"
+         id="g9435">
+        <g
+           transform="matrix(1.191067,0,0,1.259159,-90.16443,-127.9079)"
+           id="g9267">
+          <g
+             transform="matrix(2.366269,0,0,2.187328,-805.1721,-614.441)"
+             id="g2100">
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="350.4733"
+               y="547.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1872" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="360.4733"
+               y="547.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1874" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="355.4733"
+               y="542.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1876" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="360.4733"
+               y="537.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1878" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="350.4733"
+               y="537.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1880" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="370.4733"
+               y="527.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1882" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="370.4733"
+               y="537.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1884" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="370.4733"
+               y="547.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1886" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="365.4733"
+               y="542.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1888" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="365.4733"
+               y="532.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1890" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="350.4733"
+               y="527.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1892" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="360.4733"
+               y="527.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1894" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="355.4733"
+               y="532.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1896" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="380.4733"
+               y="548.01404"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1902" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="385.4733"
+               y="543.0141"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1904" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="375.4733"
+               y="543.01404"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1906" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="395.4733"
+               y="533.0141"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1908" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="395.4733"
+               y="543.0141"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1910" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="390.4733"
+               y="548.01404"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1914" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="390.4733"
+               y="537.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1916" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="375.4733"
+               y="533.0141"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1918" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="385.4733"
+               y="532.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1920" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="380.4733"
+               y="538.01404"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1922" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="380.4733"
+               y="527.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1976" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="390.4733"
+               y="527.29974"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1978" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="385.4733"
+               y="522.29974"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1980" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="390.4733"
+               y="517.2998"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1982" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="380.4733"
+               y="517.29974"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1984" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="395.4733"
+               y="522.29974"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1992" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="395.4733"
+               y="512.2998"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1994" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="380.4733"
+               y="507.29977"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1996" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="390.4733"
+               y="507.29977"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect1998" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="385.4733"
+               y="512.29974"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2000" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="355.4733"
+               y="522.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2002" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="365.4733"
+               y="522.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2004" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="360.4733"
+               y="517.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2006" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="365.4733"
+               y="512.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2008" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="355.4733"
+               y="512.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2010" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="375.4733"
+               y="512.83551"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2014" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="375.4733"
+               y="522.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2016" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="370.4733"
+               y="517.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2018" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="370.4733"
+               y="507.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2020" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="350.4733"
+               y="507.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2022" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="360.4733"
+               y="507.83542"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2026" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="350.4733"
+               y="517.83545"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2086" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="375.4733"
+               y="502.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2088" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="385.4733"
+               y="502.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2090" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="395.4733"
+               y="502.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2092" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="355.4733"
+               y="502.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2094" />
+            <rect
+               width="4.0533853"
+               height="4.0534105"
+               x="365.4733"
+               y="502.83548"
+               style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.94661492;stroke-opacity:1"
+               id="rect2098" />
+          </g>
+          <path
+             d="M 23.021763,484.38965 L 23.021763,593.75603 L 141.33516,593.75603 L 142.34531,482.99462 L 23.021763,484.38965 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.27503943px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path2152" />
+        </g>
+        <path
+           d="M -24.243668 330.10312 A 99.500023 105.05586 0 1 1  -223.24371,330.10312 A 99.500023 105.05586 0 1 1  -24.243668 330.10312 z"
+           transform="translate(131.3198,218.1929)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:7.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path9433" />
+      </g>
+      <g
+         transform="matrix(0,0.787774,-0.814946,0,658.16504,393.38169)"
+         id="g10558">
+        <path
+           d="M 207.14285 521.11218 A 8.5714283 9.1071424 0 1 1  190,521.11218 A 8.5714283 9.1071424 0 1 1  207.14285 521.11218 z"
+           transform="matrix(1.514551,0,0,1.562715,-67.35827,-363.7734)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path10560" />
+        <g
+           transform="translate(-89.01013,-84.53831)"
+           id="g10562">
+          <g
+             transform="matrix(1.866078,0,0,2.441031,-312.9909,-797.6275)"
+             id="g10564">
+            <g
+               id="g10566">
+              <path
+                 d="M 340.38498,539.53288 L 318.36502,515.2868 L 340.38498,442.54865 L 340.38498,539.53288 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.68687034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path10568" />
+              <g
+                 id="g10570">
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.53571"
+                   y="512.89789"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10572" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.8475"
+                   y="472.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10574" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44644"
+                   y="482.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10576" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="492.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10578" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="502.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10580" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="487.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10582" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="477.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10584" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44641"
+                   y="462.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10586" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="517.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10588" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="507.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10590" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="497.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10592" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="321.875"
+                   y="507.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10594" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="502.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10596" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.51785"
+                   y="492.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10598" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="522.67395"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10600" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="512.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10602" />
+                <path
+                   d="M 334.9,532.46218 L 334.9,527.46218 L 329.9,527.46218 L 334.9,532.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10604" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="327.41071"
+                   y="482.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10606" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="336.89999"
+                   y="452.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10608" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="332.33929"
+                   y="467.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10610" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="323.10001"
+                   y="497.26218"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10612" />
+                <path
+                   d="M 339.55357,537.26218 L 339.55357,532.26218 L 334.55357,532.26218 L 339.55357,537.26218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10614" />
+                <path
+                   d="M 325.9,522.46218 L 325.9,517.46218 L 320.9,517.46218 L 325.9,522.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10616" />
+                <path
+                   d="M 330.18929,527.54074 L 330.18929,522.54074 L 325.18929,522.54074 L 330.18929,527.54074 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10618" />
+                <rect
+                   width="2.3439825"
+                   height="4.4510989"
+                   x="319.12979"
+                   y="512.58484"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.44530416;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10620" />
+              </g>
+            </g>
+            <g
+               transform="matrix(-1,0,0,1,681.2284,-0.464293)"
+               id="g10622">
+              <path
+                 d="M 340.38498,539.53288 L 318.36502,515.2868 L 340.48067,442.10973 L 340.38498,539.53288 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.68687034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path10624" />
+              <g
+                 id="g10626">
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.53571"
+                   y="512.89789"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10628" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.8475"
+                   y="472.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10630" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44644"
+                   y="482.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10632" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="492.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10634" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="502.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10636" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="487.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10638" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="477.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10640" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.44641"
+                   y="462.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10642" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="517.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10644" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="507.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10646" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="330.8475"
+                   y="497.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10648" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="321.875"
+                   y="507.67398"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10650" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="502.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10652" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.51785"
+                   y="492.76468"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10654" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="335.4025"
+                   y="522.67395"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10656" />
+                <rect
+                   width="3.75"
+                   height="4.2857141"
+                   x="326.33929"
+                   y="512.76471"
+                   style="opacity:0.97000002;fill-opacity:1;stroke:#000000;stroke-width:0.80500001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10658" />
+                <path
+                   d="M 334.9,532.46218 L 334.9,527.46218 L 329.9,527.46218 L 334.9,532.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10660" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="327.41071"
+                   y="482.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10662" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="336.89999"
+                   y="452.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10664" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="332.33929"
+                   y="467.46219"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10666" />
+                <rect
+                   width="3"
+                   height="5"
+                   x="323.10001"
+                   y="497.26218"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10668" />
+                <path
+                   d="M 339.55357,537.26218 L 339.55357,532.26218 L 334.55357,532.26218 L 339.55357,537.26218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10670" />
+                <path
+                   d="M 325.9,522.46218 L 325.9,517.46218 L 320.9,517.46218 L 325.9,522.46218 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10672" />
+                <path
+                   d="M 330.18929,527.54074 L 330.18929,522.54074 L 325.18929,522.54074 L 330.18929,527.54074 z "
+                   style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path10674" />
+                <rect
+                   width="2.3439825"
+                   height="4.4510989"
+                   x="319.12979"
+                   y="512.58484"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.44530416;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="rect10676" />
+              </g>
+            </g>
+          </g>
+          <path
+             d="M 320.32403,282.96888 L 325.22942,283.16819 L 323.31346,274.30366 L 320.32403,282.96888 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.13547522;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path10678" />
+        </g>
+      </g>
+      <path
+         d="M 510.27691,559.98802 L 543.47222,559.98802 L 543.47222,568.54662 L 522.69097,568.54662 L 522.69097,574.91771 L 541.96832,574.91771 L 541.96832,583.09349 L 522.69097,583.09349 L 522.69097,590.99584 L 544.07378,590.99584 L 544.07378,600.07396 L 510.27691,600.07396 L 510.27691,559.98802 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 178.28958,230.48539 L 189.85599,230.48539 L 204.94974,252.66117 L 204.94974,230.48539 L 216.62552,230.48539 L 216.62552,270.57133 L 204.94974,270.57133 L 189.93802,248.55961 L 189.93802,270.57133 L 178.28958,270.57133 L 178.28958,230.48539 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_36.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_36.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_36.svg	(revision 590)
@@ -0,0 +1,2141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.9635149,0,0,0.9468884,-148.37715,-156.68993)"
+       id="g4540">
+      <g
+         transform="matrix(0.572746,0,0,0.565413,225.33147,296.43202)"
+         id="g8871">
+        <g
+           transform="matrix(0.40562,0,0,0.799835,145.4471,-292.7411)"
+           id="g5786">
+          <g
+             id="g4802">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path1880" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path1882" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2909" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path2915" />
+            <g
+               id="g2919">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2911" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2913" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2917" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g2926">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2928" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2930" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2932" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g2934">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2936" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2938" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2940" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g2950">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2952" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2954" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2956" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g2958">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2960" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2962" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2964" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g2966">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2968" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2970" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2972" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3867" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3869" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3871" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3873" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3877" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3879" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3883" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3885" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3887" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3889" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3895" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3897" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3899" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3901" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3903" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path3905" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3907" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path3913" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path4800" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4851" />
+        </g>
+        <g
+           transform="matrix(0.656793,0,0,0.636268,224.3455,228.3327)"
+           id="g7717">
+          <g
+             transform="translate(-54.28571,-328.5714)"
+             id="g5738">
+            <g
+               id="g1976">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1874" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(22.13525,0.210761)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1876" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="matrix(-1,0,0,-1,217.3291,840.585)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1888" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="matrix(-1,0,0,-1,195.0076,840.4064)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path1890" />
+              <g
+                 transform="translate(-7.5,-5.535714)"
+                 id="g1900">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1892" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1894" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1896" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1898" />
+              </g>
+              <g
+                 transform="translate(36.15313,-5.535697)"
+                 id="g1906">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1908" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1910" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1912" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1914" />
+              </g>
+              <g
+                 transform="translate(36.15313,36.25002)"
+                 id="g1916">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1918" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1920" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1922" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1924" />
+              </g>
+              <g
+                 transform="translate(36.60713,76.86512)"
+                 id="g1926">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1928" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1930" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1932" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1934" />
+              </g>
+              <g
+                 transform="translate(-7.321437,75.89287)"
+                 id="g1936">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1938" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1940" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1942" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1944" />
+              </g>
+              <g
+                 transform="translate(-51.42858,75.7143)"
+                 id="g1946">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1948" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1950" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1952" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1954" />
+              </g>
+              <g
+                 transform="translate(-52.14287,-5.714267)"
+                 id="g1956">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1958" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1960" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1962" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1964" />
+              </g>
+              <g
+                 transform="translate(-51.78572,35.00001)"
+                 id="g1966">
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(7.41069,-35.78746)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1968" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="translate(29.1888,-35.75527)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1970" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,224.7398,804.7975)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1972" />
+                <path
+                   d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                   transform="matrix(-1,0,0,-1,202.4183,804.6189)"
+                   style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                   id="path1974" />
+              </g>
+            </g>
+            <rect
+               width="136.72069"
+               height="130.64926"
+               x="40.362724"
+               y="354.53757"
+               style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:7.55402708;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="rect2022" />
+          </g>
+          <path
+             d="M -731.42857 -214.78067 A 144.28572 144.28572 0 1 1  -1020,-214.78067 A 144.28572 144.28572 0 1 1  -731.42857 -214.78067 z"
+             transform="matrix(0.999135,0,0,1.018937,929.2425,308.5248)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:27.77199936;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5837" />
+          <path
+             d="M 121.72858,26.402793 L 150.3,-3.5972073 L 150.3,-3.5972073"
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9.39999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6724" />
+          <path
+             d="M -13.789346,25.633605 L -43.789346,-2.9378176 L -43.789346,-2.9378176"
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9.39999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7611" />
+          <path
+             d="M 153.81442,185.6336 L 123.81442,157.06218 L 123.81442,157.06218"
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9.39999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7613" />
+          <path
+             d="M -43.27142,186.0918 L -14.7,156.0918 L -14.7,156.0918"
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:9.39999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7615" />
+        </g>
+        <g
+           transform="matrix(0.113213,-0.113213,0.147225,0.147225,63.95151,160.2303)"
+           id="g7971">
+          <g
+             id="g7973">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path7975" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path7977" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path7979" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path7981" />
+            <g
+               id="g7983">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7985" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7987" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7989" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g7991">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7993" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7995" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path7997" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g7999">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8001" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8003" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8005" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8007">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8009" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8011" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8013" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8015">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8017" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8019" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8021" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8023">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8025" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8027" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8029" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8031" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8033" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8035" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8037" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8039" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8041" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8043" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8045" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8047" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8049" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8051" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8053" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8055" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8057" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8059" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8061" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8063" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8065" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8067" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8069" />
+        </g>
+        <g
+           transform="matrix(0.113213,0.113213,-0.147225,0.147225,392.8465,94.93449)"
+           id="g8271">
+          <g
+             id="g8273">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8275" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8277" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8279" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8281" />
+            <g
+               id="g8283">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8285" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8287" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8289" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8291">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8293" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8295" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8297" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8299">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8301" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8303" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8305" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8307">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8309" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8311" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8313" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8315">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8317" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8319" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8321" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8323">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8325" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8327" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8329" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8331" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8333" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8335" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8337" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8339" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8341" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8343" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8345" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8347" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8349" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8351" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8353" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8355" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8357" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8359" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8361" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8363" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8365" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8367" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8369" />
+        </g>
+        <g
+           transform="matrix(0,0.40562,-0.799835,0,842.1744,170.249)"
+           id="g8371">
+          <g
+             id="g8373">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8375" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8377" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8379" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8381" />
+            <g
+               id="g8383">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8385" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8387" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8389" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8391">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8393" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8395" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8397" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8399">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8401" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8403" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8405" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8407">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8409" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8411" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8413" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8415">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8417" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8419" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8421" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8423">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8425" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8427" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8429" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8431" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8433" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8435" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8437" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8439" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8441" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8443" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8445" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8447" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8449" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8451" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8453" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8455" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8457" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8459" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8461" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8463" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8465" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8467" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8469" />
+        </g>
+        <g
+           transform="matrix(-0.113213,0.113213,-0.147225,-0.147225,455.999,411.6372)"
+           id="g8471">
+          <g
+             id="g8473">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8475" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8477" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8479" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8481" />
+            <g
+               id="g8483">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8485" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8487" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8489" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8491">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8493" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8495" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8497" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8499">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8501" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8503" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8505" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8507">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8509" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8511" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8513" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8515">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8517" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8519" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8521" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8523">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8525" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8527" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8529" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8531" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8533" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8535" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8537" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8539" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8541" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8543" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8545" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8547" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8549" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8551" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8553" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8555" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8557" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8559" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8561" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8563" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8565" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8567" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8569" />
+        </g>
+        <g
+           transform="matrix(-0.113213,-0.113213,0.147225,-0.147225,134.2963,476.1814)"
+           id="g8571">
+          <g
+             id="g8573">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8575" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8577" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8579" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8581" />
+            <g
+               id="g8583">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8585" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8587" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8589" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8591">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8593" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8595" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8597" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8599">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8601" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8603" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8605" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8607">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8609" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8611" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8613" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8615">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8617" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8619" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8621" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8623">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8625" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8627" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8629" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8631" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8633" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8635" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8637" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8639" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8641" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8643" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8645" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8647" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8649" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8651" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8653" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8655" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8657" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8659" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8661" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8663" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8665" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8667" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8669" />
+        </g>
+        <g
+           transform="matrix(-0.40562,0,0,-0.799835,382.1131,864.5366)"
+           id="g8671">
+          <g
+             id="g8673">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8675" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8677" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8679" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8681" />
+            <g
+               id="g8683">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8685" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8687" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8689" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8691">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8693" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8695" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8697" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8699">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8701" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8703" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8705" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8707">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8709" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8711" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8713" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8715">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8717" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8719" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8721" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8723">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8725" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8727" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8729" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8731" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8733" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8735" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8737" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8739" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8741" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8743" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8745" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8747" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8749" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8751" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8753" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8755" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8757" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8759" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8761" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8763" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8765" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8767" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8769" />
+        </g>
+        <g
+           transform="matrix(0,-0.40562,0.799835,0,-319.3174,400.9039)"
+           id="g8771">
+          <g
+             id="g8773">
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(202.1276,194.3178)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8775" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.4438,953.6145)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8777" />
+            <path
+               d="M 286.3712,368.73338 L 286.3712,615.99098 L 415.23594,615.99098 L 286.3712,368.73338 z "
+               style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.44199991;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8779" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(288.5562,195.0322)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8781" />
+            <g
+               id="g8783">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8785" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8787" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8789" />
+            </g>
+            <g
+               transform="matrix(-1,0,0,-1,663.315,1189.021)"
+               id="g8791">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8793" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8795" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8797" />
+            </g>
+            <g
+               transform="translate(-21.81732,-40.49476)"
+               id="g8799">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8801" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8803" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8805" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-22.28163,1147.754)"
+               id="g8807">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8809" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8811" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8813" />
+            </g>
+            <g
+               transform="translate(-23.29181,-81.43462)"
+               id="g8815">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8817" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8819" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8821" />
+            </g>
+            <g
+               transform="matrix(1,0,0,-1,-23.79689,1107.754)"
+               id="g8823">
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(223.5562,194.3178)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8825" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(244.2705,194.675)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8827" />
+              <path
+                 d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+                 transform="translate(266.4286,195.0322)"
+                 style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path8829" />
+            </g>
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(266.4286,154.9527)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8831" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,461.9718,995.0494)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8833" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,483.5714,994.8706)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8835" />
+            <path
+               d="M 107.26926,407.54077 L 103.06694,412.61947 L 103.74567,419.17629 L 97.61695,416.74905 L 91.590772,419.42073 L 92.005337,412.84192 L 87.60223,407.93628 L 93.987162,406.29758 L 97.292069,400.59405 L 100.82361,406.1601 L 107.26926,407.54077 z "
+               transform="matrix(0.822804,0,0,0.999999,322.9205,195.3893)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8837" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,393.0434,872.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8839" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,413.9362,873.6207)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8841" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(-1,0,0,-1,392.8578,832.7217)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8843" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(197.6496,32.46908)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8845" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(218.5562,33.66274)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8847" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.930701,0,0,1,203.9525,-6.938255)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8849" />
+            <path
+               d="M 337.93003,464.24455 L 332.27057,456.18214 L 327.06997,465.61364 L 337.93003,464.24455 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8851" />
+            <path
+               d="M 317.03718,424.1017 L 311.37772,416.03929 L 306.17712,425.47079 L 317.03718,424.1017 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8853" />
+            <path
+               d="M 297.57288,392.49456 L 291.91342,384.43215 L 286.71282,393.86365 L 297.57288,392.49456 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.85421956px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8855" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(198.5562,73.60362)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8857" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="translate(219.2781,73.60361)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8859" />
+            <path
+               d="M 108.57143,407.3622 L 103.0281,412.74276 L 104.31789,420.35955 L 97.487685,416.75022 L 90.642259,420.33059 L 91.964286,412.71934 L 86.443793,407.31535 L 94.091055,406.22066 L 97.524629,399.30044 L 100.92887,406.23514 L 108.57143,407.3622 z "
+               transform="matrix(0.822458,0,0,1.02573,257.4827,62.78786)"
+               style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:2.08899999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+               id="path8861" />
+            <path
+               d="M 376.48269,545.92404 L 385.98638,564.77713 L 379.29861,559.81579 L 374.37077,560.31192 L 376.83469,553.86219 L 376.48269,542.94723"
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.17009652px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8863" />
+            <path
+               d="M 360.92197,510.27426 L 356.375,510.06364 L 352.55556,505.21932 L 354.55623,513.43359 L 351.46428,521.64789 L 361.28572,516.38231 L 360.92197,510.27426 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8865" />
+            <path
+               d="M 284.19162,370.00414 L 284.19162,360.99669 L 289.81098,370.25668 L 284.19162,370.00414 z "
+               style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+               id="path8867" />
+          </g>
+          <path
+             d="M 283.66686,597.07047 L 284.8272,363.3497 L 156.60943,617.33146 L 283.66686,597.07047 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path8869" />
+        </g>
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.276681,0,0,1.230352,136.70823,87.98172)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.276681,0,0,1.230352,-62.39813,-99.99428)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_19.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_19.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_19.svg	(revision 590)
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-1710.7015"
+       y="549.28674"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect10945" />
+    <g
+       transform="matrix(0.68551,0,0,0.7295708,73.944732,15.285212)"
+       id="g2316">
+      <g
+         transform="matrix(5.373307,0,0,5.188327,-1811.917,-2360.821)"
+         id="g2794">
+        <path
+           d="M 372.94642 536.60327 A 14.955358 14.955358 0 1 1  343.0357,536.60327 A 14.955358 14.955358 0 1 1  372.94642 536.60327 z"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.9000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1872" />
+        <path
+           d="M 345,532.36218 C 362,522.36218 362,522.36218 362,522.36218 L 362.41072,523.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2760" />
+        <path
+           d="M 345,541.82647 C 368,526.36218 368,526.36218 368,526.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2762" />
+        <path
+           d="M 349,548.36218 L 372,532.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2764" />
+        <path
+           d="M 359,550.36218 C 372,540.36218 372,540.36218 372,540.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2766" />
+        <path
+           d="M 371.69407,539.87768 C 358.02021,522.38239 358.02021,522.38239 358.02021,522.38239"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.04042327px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2768" />
+        <path
+           d="M 350,525.36218 C 367,548.36218 367,548.36218 367,548.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2770" />
+        <path
+           d="M 344.18734,530.22809 C 358.90194,550.28198 358.90194,550.28198 358.90194,550.28198 L 358.90194,550.28198"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.01753926px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2772" />
+      </g>
+      <g
+         transform="matrix(5.373307,0,0,5.704256,-1971.648,-2809.513)"
+         id="g2786">
+        <path
+           d="M 385,552.36218 L 385,532.36218 L 380,532.36218 L 388,521.91575 L 395,532.36218 L 390,532.36218 L 390,552.36218 L 385,552.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2774" />
+        <path
+           d="M 385,551.82647 L 389.55357,547.36218 L 389.55357,547.36218 L 389.55357,547.36218 L 389.46429,546.82647"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2776" />
+        <path
+           d="M 385,542.36218 L 389.55357,537.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2778" />
+        <path
+           d="M 385,532.36218 L 391,526.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2780" />
+        <path
+           d="M 389.55357,547.36218 L 385,542.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2782" />
+        <path
+           d="M 385,542.36218 L 389,537.36218 L 382.58929,529.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2784" />
+      </g>
+      <g
+         transform="matrix(0,-5.188327,-9.152113,0,5245.939,2437.684)"
+         id="g2804">
+        <path
+           d="M 385,552.36218 L 385,532.36218 L 380,532.36218 L 388,521.91575 L 395,532.36218 L 390,532.36218 L 390,552.36218 L 385,552.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2806" />
+        <path
+           d="M 385,551.82647 L 389.55357,547.36218 L 389.55357,547.36218 L 389.55357,547.36218 L 389.46429,546.82647"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2808" />
+        <path
+           d="M 385,542.36218 L 389.55357,537.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2810" />
+        <path
+           d="M 385,532.36218 L 391,526.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2812" />
+        <path
+           d="M 389.55357,547.36218 L 385,542.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2814" />
+        <path
+           d="M 385,542.36218 L 389,537.36218 L 382.58929,529.36218"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path2816" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(159.0077,125.7178)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-233.6978,-161.3578)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_37.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_37.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_37.svg	(revision 590)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.8541561,0,0,0.8278264,-73.342864,-176.2404)"
+       id="g2311">
+      <g
+         transform="matrix(2.828697,0,0,2.46252,-450.7429,-760.262)"
+         id="g1902">
+        <path
+           d="M 298.50007 514.45593 A 12.121831 12.121831 0 1 1  274.2564,514.45593 A 12.121831 12.121831 0 1 1  298.50007 514.45593 z"
+           transform="matrix(0.563063,0,0,0.521397,117.6793,254.1753)"
+           style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1872" />
+        <g
+           transform="matrix(0.853812,0,0,2.36934,-31.56705,-781.5973)"
+           id="g1880">
+          <path
+             d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1876" />
+          <path
+             d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1878" />
+        </g>
+        <g
+           transform="matrix(0,-0.853812,2.36934,0,-1025.971,832.8776)"
+           id="g1884">
+          <path
+             d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1886" />
+          <path
+             d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1888" />
+        </g>
+        <g
+           transform="matrix(0,0.853812,-2.36934,0,1583.702,210.0499)"
+           id="g1890">
+          <path
+             d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1892" />
+          <path
+             d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1894" />
+        </g>
+        <g
+           transform="matrix(-0.853812,0,0,-2.36934,591.5414,1826.553)"
+           id="g1896">
+          <path
+             d="M 365,547.36218 L 365,522.36218 L 355,542.36218 L 365,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1898" />
+          <path
+             d="M 364.91071,547.36218 L 364.91071,522.36218 L 374.91071,542.36218 L 364.91071,547.36218 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             id="path1900" />
+        </g>
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.276681,0,0,1.230352,118.7487,152.7155)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.276681,0,0,1.230352,-98.54041,-27.17924)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha.svg	(revision 590)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="norte_flecha.svg"
+   sodipodi:docbase="D:\Documents and Settings\gruposig2\Escritorio"
+   inkscape:version="0.42.2"
+   sodipodi:version="0.32"
+   id="svg2"
+   viewBox="0 0 450 500"
+   height="500"
+   width="450">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     inkscape:window-y="-4"
+     inkscape:window-x="-4"
+     inkscape:window-height="998"
+     inkscape:window-width="1280"
+     inkscape:current-layer="layer1"
+     inkscape:cy="257.30875"
+     inkscape:cx="225.00000"
+     inkscape:zoom="1.3220000"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1">
+    <g
+       id="g6600">
+      <path
+         d="M 205.44100,187.29449 L 205.44100,187.29449 L 205.44100,187.29449 L 205.44100,187.29449"
+         class="fil0 str1"
+         id="_53765264"
+         style="fill:none;stroke:#1f1a17;stroke-width:0.076200001" />
+      <line
+         y2="194.51949"
+         x2="210.04100"
+         y1="194.51949"
+         x1="210.04100"
+         class="fil0 str1"
+         id="_56376032"
+         style="fill:none;stroke:#1f1a17;stroke-width:0.076200001" />
+      <line
+         style="fill:none;stroke:#000000;stroke-width:1.0000000;stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
+         id="line1413"
+         class="fil0 str1"
+         x1="228.17790"
+         y1="112.68045"
+         x2="288.81149"
+         y2="420.16144" />
+      <path
+         style="fill:none;stroke:#1f1a17;stroke-width:0.49073389"
+         id="path1405"
+         class="fil0 str1"
+         d="M 225.01957,398.56499 L 225.01957,398.56499 L 225.01957,398.56499 L 225.01957,398.56499" />
+      <line
+         style="fill:none;stroke:#1f1a17;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none"
+         id="line1409"
+         class="fil0 str1"
+         x1="225.59557"
+         y1="397.81879"
+         x2="288.82269"
+         y2="420.16144" />
+      <line
+         style="fill:none;stroke:#1f1a17;stroke-width:0.49073389"
+         id="line1411"
+         class="fil0 str1"
+         x1="288.82050"
+         y1="420.16980"
+         x2="288.82050"
+         y2="420.16980" />
+      <polyline
+         transform="matrix(14.04006,0.000000,0.000000,3.092717,-1243.696,4.370190)"
+         style="fill:#000000;fill-opacity:1.0000000;stroke:#000000;stroke-width:0.076200001;stroke-opacity:0.00000000"
+         id="polyline1407"
+         class="fil0 str1"
+         points="104.829,34.9867 100.062,134.442 104.665,127.217 " />
+      <text
+         xml:space="preserve"
+         style="font-size:39.300793px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+         x="214.28415"
+         y="108.23495"
+         id="text5063"><tspan
+           sodipodi:role="line"
+           id="tspan5065"
+           x="214.28415"
+           y="108.23495">N</tspan></text>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_38.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_38.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_38.svg	(revision 590)
@@ -0,0 +1,3222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.860825,0,0,0.8000699,-48.718641,-159.81939)"
+       id="g3742">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(171.3383,236.49703)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-38.9362,30.50783)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <g
+         transform="translate(-85.0245,-25.98677)"
+         id="g3272">
+        <path
+           d="M 390.05204,543.93736 L 357.62125,488.68543 L 390.05204,387.83727 L 422.48283,488.68543 L 390.05204,543.93736 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.24249077px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3274" />
+        <g
+           transform="translate(54.99999,-10.00001)"
+           id="g3276">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3278" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3280" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3282" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3284" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3286" />
+        </g>
+        <g
+           transform="translate(40.14999,-54.88215)"
+           id="g3288">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3290" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3292" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3294" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3296" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3298" />
+        </g>
+        <g
+           transform="translate(55.14999,-69.88215)"
+           id="g3300">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3302" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3304" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3306" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3308" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3310" />
+        </g>
+        <g
+           transform="translate(40.14999,-24.88215)"
+           id="g3312">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3314" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3316" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3318" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3320" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3322" />
+        </g>
+        <g
+           transform="translate(55.14999,-39.88215)"
+           id="g3324">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3326" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3328" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3330" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3332" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3334" />
+        </g>
+        <g
+           transform="translate(-35.53571,-13.51249)"
+           id="g3336">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="420.67947"
+             y="445.9863"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3338" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="425.82568"
+             y="441.2504"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3340" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="430.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3342" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="430.82523"
+             y="446.13205"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3344" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="420.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3346" />
+        </g>
+        <g
+           transform="translate(69.99999,-55.00001)"
+           id="g3348">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3350" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3352" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3354" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3356" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3358" />
+        </g>
+        <g
+           transform="translate(54.87858,-40.14645)"
+           id="g3360">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3362" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3364" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3366" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3368" />
+        </g>
+        <g
+           transform="translate(54.87858,-10.14645)"
+           id="g3370">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3372" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3374" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3376" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3378" />
+        </g>
+        <g
+           transform="translate(69.87858,-25.14645)"
+           id="g3380">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3382" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3384" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3386" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3388" />
+        </g>
+        <g
+           transform="matrix(1,0,0,1.045282,45.00001,-93.12737)"
+           id="g3390">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3392" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3394" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3396" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3398" />
+        </g>
+        <g
+           transform="matrix(1.031413,0,0,1,29.63384,-25.14645)"
+           id="g3400">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3402" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3404" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3406" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3408" />
+        </g>
+        <g
+           transform="translate(69.87858,-55.14645)"
+           id="g3410">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3412" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3414" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3416" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3418" />
+        </g>
+        <g
+           transform="translate(64.87858,-10.14645)"
+           id="g3420">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3422" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3424" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3426" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3428" />
+        </g>
+        <g
+           transform="translate(40.00001,-54.64288)"
+           id="g3430">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3432" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3434" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3436" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3438" />
+        </g>
+        <g
+           transform="translate(55.00001,-70.21074)"
+           id="g3440">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3442" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3444" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3446" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3448" />
+        </g>
+        <g
+           transform="translate(55.00001,-99.64288)"
+           id="g3450">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3452" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3454" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3456" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3458" />
+        </g>
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="437.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3460" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="427.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3462" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="432.76398"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3464" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="447.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3466" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.02856"
+           y="397.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3468" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.02856"
+           y="402.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3470" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="427.76395"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3472" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="417.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3474" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3476" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3478" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="462.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3480" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="370.44641"
+           y="447.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3482" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="405.14999"
+           y="442.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3484" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3486" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="477.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3488" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3490" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3492" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="502.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3494" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="410.14999"
+           y="497.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3496" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="487.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3498" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3500" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="512.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3502" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3504" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3506" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.14999"
+           y="532.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3508" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3510" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3512" />
+      </g>
+      <g
+         transform="matrix(0,-1,1,0,-254.3873,924.20923)"
+         id="g3514">
+        <path
+           d="M 390.05204,543.93736 L 357.62125,488.68543 L 390.05204,387.83727 L 422.48283,488.68543 L 390.05204,543.93736 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.24249077px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3516" />
+        <g
+           transform="translate(54.99999,-10.00001)"
+           id="g3518">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3520" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3522" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3524" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3526" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3528" />
+        </g>
+        <g
+           transform="translate(40.14999,-54.88215)"
+           id="g3530">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3532" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3534" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3536" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3538" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3540" />
+        </g>
+        <g
+           transform="translate(55.14999,-69.88215)"
+           id="g3542">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3544" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3546" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3548" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3550" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3552" />
+        </g>
+        <g
+           transform="translate(40.14999,-24.88215)"
+           id="g3554">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3556" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3558" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3560" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3562" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3564" />
+        </g>
+        <g
+           transform="translate(55.14999,-39.88215)"
+           id="g3566">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3568" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3570" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3572" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3574" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3576" />
+        </g>
+        <g
+           transform="translate(-35.53571,-13.51249)"
+           id="g3578">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="420.67947"
+             y="445.9863"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3580" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="425.82568"
+             y="441.2504"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3582" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="430.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3584" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="430.82523"
+             y="446.13205"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3586" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="420.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3588" />
+        </g>
+        <g
+           transform="translate(69.99999,-55.00001)"
+           id="g3590">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3592" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3594" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3596" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3598" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3600" />
+        </g>
+        <g
+           transform="translate(54.87858,-40.14645)"
+           id="g3602">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3604" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3606" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3608" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3610" />
+        </g>
+        <g
+           transform="translate(54.87858,-10.14645)"
+           id="g3612">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3614" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3616" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3618" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3620" />
+        </g>
+        <g
+           transform="translate(69.87858,-25.14645)"
+           id="g3622">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3624" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3626" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3628" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3630" />
+        </g>
+        <g
+           transform="matrix(1,0,0,1.045282,45.00001,-93.12737)"
+           id="g3632">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3634" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3636" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3638" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3640" />
+        </g>
+        <g
+           transform="matrix(1.031413,0,0,1,29.63384,-25.14645)"
+           id="g3642">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3644" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3646" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3648" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3650" />
+        </g>
+        <g
+           transform="translate(69.87858,-55.14645)"
+           id="g3652">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3654" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3656" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3658" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3660" />
+        </g>
+        <g
+           transform="translate(64.87858,-10.14645)"
+           id="g3662">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3664" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3666" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3668" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3670" />
+        </g>
+        <g
+           transform="translate(40.00001,-54.64288)"
+           id="g3672">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3674" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3676" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3678" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3680" />
+        </g>
+        <g
+           transform="translate(55.00001,-70.21074)"
+           id="g3682">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3684" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3686" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3688" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3690" />
+        </g>
+        <g
+           transform="translate(55.00001,-99.64288)"
+           id="g3692">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3694" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3696" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3698" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3700" />
+        </g>
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="437.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3702" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="427.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3704" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="432.76398"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3706" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="447.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3708" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.02856"
+           y="397.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3710" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.02856"
+           y="402.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3712" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="427.76395"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3714" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="417.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3716" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3718" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3720" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="462.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3722" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="370.44641"
+           y="447.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3724" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="405.14999"
+           y="442.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3726" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3728" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="477.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3730" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3732" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3734" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="502.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3736" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="410.14999"
+           y="497.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3738" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="487.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3740" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3742" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="512.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3744" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3746" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3748" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.14999"
+           y="532.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3750" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3752" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3754" />
+      </g>
+      <g
+         transform="matrix(0,1,-1,0,864.2702,144.22873)"
+         id="g3756">
+        <path
+           d="M 390.05204,543.93736 L 357.62125,488.68543 L 390.05204,387.83727 L 422.48283,488.68543 L 390.05204,543.93736 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.24249077px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3758" />
+        <g
+           transform="translate(54.99999,-10.00001)"
+           id="g3760">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3762" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3764" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3766" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3768" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3770" />
+        </g>
+        <g
+           transform="translate(40.14999,-54.88215)"
+           id="g3772">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3774" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3776" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3778" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3780" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3782" />
+        </g>
+        <g
+           transform="translate(55.14999,-69.88215)"
+           id="g3784">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3786" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3788" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3790" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3792" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3794" />
+        </g>
+        <g
+           transform="translate(40.14999,-24.88215)"
+           id="g3796">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3798" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3800" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3802" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3804" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3806" />
+        </g>
+        <g
+           transform="translate(55.14999,-39.88215)"
+           id="g3808">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3810" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3812" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3814" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3816" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3818" />
+        </g>
+        <g
+           transform="translate(-35.53571,-13.51249)"
+           id="g3820">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="420.67947"
+             y="445.9863"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3822" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="425.82568"
+             y="441.2504"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3824" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="430.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3826" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="430.82523"
+             y="446.13205"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3828" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="420.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3830" />
+        </g>
+        <g
+           transform="translate(69.99999,-55.00001)"
+           id="g3832">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3834" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3836" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3838" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3840" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3842" />
+        </g>
+        <g
+           transform="translate(54.87858,-40.14645)"
+           id="g3844">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3846" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3848" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3850" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3852" />
+        </g>
+        <g
+           transform="translate(54.87858,-10.14645)"
+           id="g3854">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3856" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3858" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3860" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3862" />
+        </g>
+        <g
+           transform="translate(69.87858,-25.14645)"
+           id="g3864">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3866" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3868" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3870" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3872" />
+        </g>
+        <g
+           transform="matrix(1,0,0,1.045282,45.00001,-93.12737)"
+           id="g3874">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3876" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3878" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3880" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3882" />
+        </g>
+        <g
+           transform="matrix(1.031413,0,0,1,29.63384,-25.14645)"
+           id="g3884">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3886" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3888" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3890" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3892" />
+        </g>
+        <g
+           transform="translate(69.87858,-55.14645)"
+           id="g3894">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3896" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3898" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3900" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3902" />
+        </g>
+        <g
+           transform="translate(64.87858,-10.14645)"
+           id="g3904">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3906" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3908" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3910" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3912" />
+        </g>
+        <g
+           transform="translate(40.00001,-54.64288)"
+           id="g3914">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3916" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3918" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3920" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3922" />
+        </g>
+        <g
+           transform="translate(55.00001,-70.21074)"
+           id="g3924">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3926" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3928" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3930" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3932" />
+        </g>
+        <g
+           transform="translate(55.00001,-99.64288)"
+           id="g3934">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3936" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3938" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3940" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3942" />
+        </g>
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="437.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3944" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="427.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3946" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="432.76398"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3948" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="447.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3950" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.02856"
+           y="397.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3952" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.02856"
+           y="402.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3954" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="427.76395"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3956" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="417.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3958" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3960" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3962" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="462.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3964" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="370.44641"
+           y="447.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3966" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="405.14999"
+           y="442.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3968" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3970" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="477.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3972" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3974" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3976" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="502.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3978" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="410.14999"
+           y="497.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3980" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="487.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3982" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3984" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="512.17261"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3986" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3988" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3990" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.14999"
+           y="532.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3992" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3994" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3996" />
+      </g>
+      <g
+         transform="matrix(-1,0,0,-1,695.1296,1093.0094)"
+         id="g3148">
+        <path
+           d="M 390.05204,543.93736 L 357.62125,488.68543 L 390.05204,387.83727 L 422.48283,488.68543 L 390.05204,543.93736 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.24249077px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1986" />
+        <g
+           transform="translate(54.99999,-10.00001)"
+           id="g2893">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect1994" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2885" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2887" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2889" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2891" />
+        </g>
+        <g
+           transform="translate(40.14999,-54.88215)"
+           id="g2902">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2904" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2906" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2908" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2910" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2912" />
+        </g>
+        <g
+           transform="translate(55.14999,-69.88215)"
+           id="g2914">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2916" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2918" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2920" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2922" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2924" />
+        </g>
+        <g
+           transform="translate(40.14999,-24.88215)"
+           id="g2926">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2928" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2930" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2932" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2934" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2936" />
+        </g>
+        <g
+           transform="translate(55.14999,-39.88215)"
+           id="g2938">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2940" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2942" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2944" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2946" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2948" />
+        </g>
+        <g
+           transform="translate(-35.53571,-13.51249)"
+           id="g2979">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="420.67947"
+             y="445.9863"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2952" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="425.82568"
+             y="441.2504"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2954" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="430.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2956" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="430.82523"
+             y="446.13205"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2958" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="420.82727"
+             y="436.13412"
+             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2960" />
+        </g>
+        <g
+           transform="translate(69.99999,-55.00001)"
+           id="g2962">
+          <rect
+             width="4.8339028"
+             height="4.7446151"
+             x="329.99377"
+             y="532.35596"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28752652;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2964" />
+          <rect
+             width="4.6629047"
+             height="4.6629033"
+             x="335.13998"
+             y="527.62006"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27995285;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2966" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="340.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2968" />
+          <rect
+             width="4.7209816"
+             height="4.5745606"
+             x="340.13953"
+             y="532.50171"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.2790097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2970" />
+          <rect
+             width="4.7168207"
+             height="4.7168279"
+             x="330.14157"
+             y="522.50378"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28319013;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2972" />
+        </g>
+        <g
+           transform="translate(54.87858,-40.14645)"
+           id="g2996">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2986" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2988" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2990" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect2994" />
+        </g>
+        <g
+           transform="translate(54.87858,-10.14645)"
+           id="g3002">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3004" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3006" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3008" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3010" />
+        </g>
+        <g
+           transform="translate(69.87858,-25.14645)"
+           id="g3012">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3014" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3016" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3018" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3020" />
+        </g>
+        <g
+           transform="matrix(1,0,0,1.045282,45.00001,-93.12737)"
+           id="g3022">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3024" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3026" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3028" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3030" />
+        </g>
+        <g
+           transform="matrix(1.031413,0,0,1,29.63384,-25.14645)"
+           id="g3032">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3034" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3036" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3038" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3040" />
+        </g>
+        <g
+           transform="translate(69.87858,-55.14645)"
+           id="g3042">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3044" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3046" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3048" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3050" />
+        </g>
+        <g
+           transform="translate(64.87858,-10.14645)"
+           id="g3052">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3054" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3056" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3058" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3060" />
+        </g>
+        <g
+           transform="translate(40.00001,-54.64288)"
+           id="g3062">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3064" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3066" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3068" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3070" />
+        </g>
+        <g
+           transform="translate(55.00001,-70.21074)"
+           id="g3072">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3074" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3076" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3078" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3080" />
+        </g>
+        <g
+           transform="translate(55.00001,-99.64288)"
+           id="g3082">
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="330.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3084" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="335.02856"
+             y="517.51221"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3086" />
+          <rect
+             width="4.8214297"
+             height="4.9107127"
+             x="340.14999"
+             y="512.30145"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3088" />
+          <rect
+             width="4.7139287"
+             height="4.5674872"
+             x="335.14304"
+             y="507.65167"
+             style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.28608248;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="rect3090" />
+        </g>
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="437.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3092" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="427.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3094" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="432.76398"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3096" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="447.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3098" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.02856"
+           y="397.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3100" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.02856"
+           y="402.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3104" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="427.76395"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3106" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="417.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3108" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3110" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3112" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="462.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3114" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="370.44641"
+           y="447.51218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3116" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="405.14999"
+           y="442.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3118" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3120" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="477.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3122" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="482.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3124" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="492.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3126" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="365.14999"
+           y="502.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3128" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="410.14999"
+           y="497.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3130" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="360.14999"
+           y="487.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3132" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3134" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="375.14999"
+           y="512.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3136" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="400.14999"
+           y="517.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3138" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="380.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3140" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="385.14999"
+           y="532.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3142" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="390.14999"
+           y="527.30145"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3144" />
+        <rect
+           width="4.8214297"
+           height="4.9107127"
+           x="415.14999"
+           y="472.30148"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect3146" />
+      </g>
+      <g
+         transform="matrix(1.253438,0,0,1.267773,145.3357,-124.37767)"
+         id="g6508">
+        <path
+           d="M 120,512.36218 L 120,517.36218 L 125,517.36218 L 125,512.36218 L 120,512.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4726" />
+        <path
+           d="M 130,522.36218 L 130,527.36218 L 135,527.36218 L 135,522.36218 L 130,522.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4728" />
+        <path
+           d="M 125,517.36218 L 125,522.36218 L 130,522.36218 L 130,517.36218 L 125,517.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4730" />
+        <path
+           d="M 130,512.36218 L 130,517.36218 L 135,517.36218 L 135,512.36218 L 130,512.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4732" />
+        <path
+           d="M 120,522.36218 L 120,527.36218 L 125,527.36218 L 125,522.36218 L 120,522.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path4734" />
+        <rect
+           width="14.670349"
+           height="14.759633"
+           x="120.1722"
+           y="512.23395"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.273;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect4736" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_39.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_39.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_39.svg	(revision 590)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-256.33777"
+       y="380.63318"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1904" />
+    <g
+       transform="translate(-18.571429,-22.857143)"
+       id="g2337">
+      <rect
+         width="6.3891425"
+         height="70.025955"
+         x="233.28166"
+         y="158.41487"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:11.37500095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect1902" />
+      <rect
+         width="6.3891425"
+         height="70.025955"
+         x="233.49455"
+         y="324.85138"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:11.37500095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect1906" />
+      <rect
+         width="6.524157"
+         height="68.576797"
+         x="276.5726"
+         y="-350.34045"
+         transform="matrix(0,1,-1,0,0,0)"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:11.37500095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect1908" />
+      <rect
+         width="6.524157"
+         height="68.576797"
+         x="277.74426"
+         y="-191.32622"
+         transform="matrix(0,1,-1,0,0,0)"
+         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:11.37500095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect1910" />
+      <path
+         d="M 252.03306 499.1774 A 2.6516504 2.6516504 0 1 1  246.72976,499.1774 A 2.6516504 2.6516504 0 1 1  252.03306 499.1774 z"
+         transform="matrix(3.373295,0,0,3.444579,-604.855,-1580.9045)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1914" />
+      <path
+         d="M 252.03306 499.1774 A 2.6516504 2.6516504 0 1 1  246.72976,499.1774 A 2.6516504 2.6516504 0 1 1  252.03306 499.1774 z"
+         transform="matrix(3.373295,0,0,3.444579,-470.7754,-1440.0555)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1916" />
+      <path
+         d="M 252.03306 499.1774 A 2.6516504 2.6516504 0 1 1  246.72976,499.1774 A 2.6516504 2.6516504 0 1 1  252.03306 499.1774 z"
+         transform="matrix(3.373295,0,0,3.444579,-738.083,-1438.3165)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1918" />
+      <path
+         d="M 252.03306 499.1774 A 2.6516504 2.6516504 0 1 1  246.72976,499.1774 A 2.6516504 2.6516504 0 1 1  252.03306 499.1774 z"
+         transform="matrix(3.373295,0,0,3.444579,-604.855,-1304.6975)"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1920" />
+      <g
+         transform="matrix(1.563758,-1.40606,1.563758,1.40606,-1079.764,-56.02686)"
+         id="g1926">
+        <rect
+           width="0.82368344"
+           height="6.0328536"
+           x="305"
+           y="502.36218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect1922" />
+        <path
+           d="M 257.33637 495.38931 A 1.1364216 1.1364216 0 1 1  255.06353,495.38931 A 1.1364216 1.1364216 0 1 1  257.33637 495.38931 z"
+           transform="translate(49.24493,2.525381)"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1924" />
+      </g>
+      <g
+         transform="matrix(-1.376962,-1.596803,1.376962,-1.596803,-87.5671,1623.5275)"
+         id="g1936">
+        <rect
+           width="0.82368344"
+           height="6.0328536"
+           x="305"
+           y="502.36218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect1938" />
+        <path
+           d="M 257.33637 495.38931 A 1.1364216 1.1364216 0 1 1  255.06353,495.38931 A 1.1364216 1.1364216 0 1 1  257.33637 495.38931 z"
+           transform="translate(49.24493,2.525381)"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1940" />
+      </g>
+      <g
+         transform="matrix(1.376962,1.596803,-1.376962,1.596803,559.24128,-1069.9471)"
+         id="g1942">
+        <rect
+           width="0.82368344"
+           height="6.0328536"
+           x="305"
+           y="502.36218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect1944" />
+        <path
+           d="M 257.33637 495.38931 A 1.1364216 1.1364216 0 1 1  255.06353,495.38931 A 1.1364216 1.1364216 0 1 1  257.33637 495.38931 z"
+           transform="translate(49.24493,2.525381)"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1946" />
+      </g>
+      <g
+         transform="matrix(-1.563758,1.40606,-1.563758,-1.40606,1553.853,609.20281)"
+         id="g1948">
+        <rect
+           width="0.82368344"
+           height="6.0328536"
+           x="305"
+           y="502.36218"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect1950" />
+        <path
+           d="M 257.33637 495.38931 A 1.1364216 1.1364216 0 1 1  255.06353,495.38931 A 1.1364216 1.1364216 0 1 1  257.33637 495.38931 z"
+           transform="translate(49.24493,2.525381)"
+           style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path1952" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(66.8279,-17.68201)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-109.7053,-197.68199)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <rect
+         width="67.85714"
+         height="75"
+         x="202.26985"
+         y="238.54054"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:13.07299995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect4069" />
+      <path
+         d="M 265.71429 277.36218 A 54.285713 54.285713 0 1 1  157.14286,277.36218 A 54.285713 54.285713 0 1 1  265.71429 277.36218 z"
+         transform="matrix(1.011092,0,0,1.023256,22.8897,-6.70785)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:13.07299995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4956" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte1-1.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte1-1.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte1-1.svg	(revision 590)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:docname="norte1-1.svg"
+   sodipodi:docbase="C:\Documents and Settings\fjp\Mis documentos"
+   height="450"
+   width="500"
+   viewBox="0 0 450 500"
+   inkscape:version="0.40+cvs"
+   sodipodi:version="0.32"
+   id="svg1339">
+  <metadata
+     id="metadata1344">
+    <rdf:RDF
+       id="RDF8804">
+      <cc:Work
+         id="Work8806"
+         rdf:about="">
+        <dc:format
+           id="format8808">image/svg+xml</dc:format>
+        <dc:type
+           id="type8810"
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs1342" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1152"
+     inkscape:window-height="804"
+     inkscape:zoom="0.72400000"
+     inkscape:cx="224.99999"
+     inkscape:cy="250.00000"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <path
+     id="path1356"
+     d="M 214.88545,437.72425 C 212.75786,431.08672 215.47026,422.11860 213.21451,416.40309 C 181.12670,410.06229 151.92169,389.79914 136.70726,360.54831 C 128.94673,346.78211 126.60150,331.03383 124.13579,315.66262 C 116.47407,315.65908 108.42639,317.96290 101.04732,315.54768 C 101.97606,309.82682 116.91469,312.03676 124.21249,310.80944 C 127.26952,304.25407 125.94995,291.15534 130.37336,283.01009 C 142.40713,243.65111 179.01975,213.44799 220.22853,210.22205 C 227.27815,211.05945 223.51488,202.04956 224.82385,197.65895 C 225.82517,185.21373 225.00388,172.41129 228.03982,160.25779 C 234.56557,165.95822 231.41268,185.92371 233.31618,197.17910 C 231.20477,206.85221 234.04559,211.80439 243.68690,211.14406 C 288.81728,217.32843 326.87539,255.84101 332.19983,301.11923 C 331.74224,307.84331 333.06572,312.59304 340.75677,310.75680 C 347.05882,310.11476 366.75864,312.79264 351.30865,315.74116 C 340.47876,314.83218 329.64713,315.11070 331.58656,328.92145 C 325.32027,371.42064 290.44841,407.58476 248.24101,415.50578 C 240.48442,415.40763 245.52046,425.09912 244.01033,429.84306 C 243.80991,450.55682 233.52535,422.61133 228.19970,421.19537 C 223.53165,424.67092 220.82019,439.02832 214.88545,437.72425 z M 226.50850,366.17145 C 226.26374,349.42917 226.97561,332.61323 225.56286,315.92145 C 221.56086,328.85653 223.66293,344.08863 222.12452,357.89264 C 220.86653,381.72957 220.57496,405.64527 218.43711,429.42145 C 221.81116,422.99802 228.14560,417.41683 226.47801,409.55901 C 226.48818,395.09649 226.49834,380.63397 226.50850,366.17145 z M 236.50762,372.42145 C 235.57213,353.67078 234.69950,334.91647 233.65739,316.17145 C 229.72620,327.91725 232.54651,345.91733 231.54786,360.01556 C 231.53914,378.68039 231.54598,397.34522 231.54381,416.01004 C 234.47984,420.46088 241.08478,435.61370 238.83189,421.75245 C 238.10436,405.30661 237.30692,388.86392 236.50762,372.42145 z M 196.54381,406.92145 C 190.13941,403.54795 193.70619,408.96653 197.54381,407.72926 L 196.54381,406.92145 z M 214.34021,406.81064 C 197.18082,400.93543 178.91092,395.66543 165.74611,382.23730 C 151.48952,369.24071 142.39102,351.60424 136.95931,333.30112 C 142.62078,366.30101 169.02286,394.38454 200.88674,404.16535 C 204.52799,404.70171 212.46005,408.95188 214.34021,406.81064 z M 269.71871,399.07999 C 285.94403,391.12367 301.34605,378.70796 309.28185,362.32615 C 294.80985,383.93113 272.38212,400.84284 246.29381,405.33609 C 234.14200,411.41649 268.94924,400.56565 269.71871,399.07999 z M 270.53221,404.36710 C 298.82017,391.30310 321.28532,364.14134 326.35093,333.21559 C 317.91997,362.56167 298.87243,390.36777 270.14405,402.99536 C 263.64923,405.62261 258.25920,409.78235 268.41261,405.25079 L 270.53220,404.36711 L 270.53221,404.36710 z M 187.73131,403.23834 C 181.58248,402.23525 189.58892,405.17286 187.73131,403.23834 z M 215.54381,398.36908 C 216.61079,370.87587 217.80920,343.38115 219.55548,315.92145 C 192.88493,315.92145 166.21437,315.92145 139.54381,315.92145 C 140.10955,354.67301 168.40595,391.73676 206.77370,399.95978 C 209.70984,399.79365 216.72754,405.05207 215.54381,398.36908 z M 251.75508,399.98398 C 286.59441,392.10303 313.47523,360.71503 317.68454,325.49380 C 322.87232,314.83802 314.76976,315.30058 307.39234,315.92145 C 284.43895,315.92145 261.48555,315.92145 238.53215,315.92145 C 240.55399,344.54854 241.14135,373.34802 243.00508,401.92145 C 245.93933,401.35708 248.84306,400.64988 251.75508,399.98398 z M 170.04381,392.74634 C 151.69260,377.54951 137.77947,356.90266 131.78911,333.74521 C 135.35027,357.98203 151.00913,379.38884 170.04297,394.14511 C 173.76155,397.58668 171.41958,392.01937 170.04381,392.74634 z M 321.32582,332.92145 C 320.39316,328.31421 318.83234,346.56829 321.10379,335.42145 L 321.32582,332.92145 L 321.32582,332.92145 z M 131.19975,327.65242 C 129.99315,325.40955 131.76726,337.13309 131.19975,327.65242 z M 136.19975,326.65242 C 134.99315,324.40955 136.76726,336.13309 136.19975,326.65242 z M 322.19975,325.65242 C 320.99315,323.40955 322.76726,335.13309 322.19975,325.65242 z M 135.19975,320.65242 C 133.99315,318.40955 135.76726,330.13309 135.19975,320.65242 z M 323.19975,319.65242 C 321.99315,317.40955 323.76726,329.13309 323.19975,319.65242 z M 219.95221,301.17145 C 221.34761,275.57500 222.74116,249.96334 223.29029,224.33460 C 188.84795,226.79936 156.05253,249.51154 144.83961,282.76230 C 143.96736,290.08065 134.60628,308.77291 143.05029,310.92145 C 168.47621,310.92145 193.90214,310.92145 219.32807,310.92145 C 219.53611,307.67145 219.74416,304.42145 219.95221,301.17145 z M 226.54381,293.25478 C 226.71995,286.94598 226.28520,267.64838 225.56593,283.97272 C 225.70486,291.56490 223.39703,306.20257 225.94752,309.81751 C 226.62077,304.32675 226.48720,298.77541 226.54381,293.25478 z M 232.97130,293.67145 C 232.88721,288.01276 231.72673,267.55339 231.60677,283.46633 C 232.03909,291.36383 230.34042,305.72613 233.03779,309.90260 C 233.51175,304.50516 233.12375,299.07530 232.97130,293.67145 z M 317.93279,304.67145 C 314.96374,278.45975 301.76410,252.52090 278.32198,239.05353 C 265.19666,230.99004 250.15431,225.62301 234.79733,224.33460 C 235.49445,253.21619 236.95442,282.08642 238.75954,310.92145 C 265.34407,310.92145 291.92861,310.92145 318.51314,310.92145 C 318.31969,308.83812 318.12624,306.75478 317.93279,304.67145 z M 328.19975,306.65242 C 326.99315,304.40955 328.76726,316.13309 328.19975,306.65242 z M 320.13701,288.48621 C 319.26884,280.60201 308.49530,261.70133 316.02271,279.87188 C 318.16392,286.86868 324.67590,308.84729 320.63998,290.43180 L 320.13702,288.48621 L 320.13701,288.48621 z M 140.77867,270.40303 C 154.43749,242.69574 181.54873,223.38661 211.19465,216.14346 C 184.94524,219.72739 160.62350,235.54737 146.42573,258.09809 C 138.35360,270.19128 132.72766,284.01127 130.63707,298.42145 C 134.20626,289.20084 136.04734,279.23786 140.77867,270.40303 z M 325.14388,286.51198 C 320.52829,269.64768 311.22496,253.46293 298.16055,241.92145 C 310.54982,257.05746 321.67065,274.46889 325.60866,294.13016 C 328.85323,304.94972 326.32550,289.23722 325.14387,286.51198 L 325.14388,286.51198 z M 151.31420,261.66532 C 151.90808,254.52712 134.16368,290.90442 144.28738,274.20334 C 146.50925,269.96604 148.57810,265.60348 151.31420,261.66532 z M 308.72713,261.70478 C 304.66261,260.34254 311.33613,266.03280 308.72713,261.70478 z M 305.72713,257.70478 C 301.66261,256.34254 308.33613,262.03280 305.72713,257.70478 z M 155.54381,255.80342 C 152.77539,254.07464 153.93973,260.36953 155.54381,255.80342 z M 301.06539,251.53864 C 288.40949,236.01705 269.89780,226.33782 250.60622,221.94118 C 269.76136,229.30623 289.19241,238.84797 302.36338,255.18903 C 305.26308,257.38868 300.27441,250.03820 301.06539,251.53864 z M 165.54381,245.42145 C 166.84979,240.46923 159.74350,250.38524 165.54381,245.42145 z M 172.97936,239.03932 C 180.21044,231.32341 205.31080,224.06276 204.37415,222.43664 C 193.85698,225.96658 174.15260,233.29178 171.19434,240.43485 L 172.97936,239.03933 L 172.97936,239.03932 z M 293.04381,236.92145 C 284.31836,229.65053 296.72885,243.51300 293.04381,236.92145 z M 282.54381,229.50752 C 276.16599,224.43700 259.26642,217.76980 256.36874,218.97776 C 265.50895,221.21519 273.94032,227.32187 282.54381,229.50752 z M 204.98494,150.48666 C 207.08463,147.90174 213.06669,143.66931 210.52626,136.31640 C 210.35999,124.95176 209.75611,113.60083 209.24758,102.24811 C 196.77457,98.603110 214.47473,96.371766 218.71896,98.635492 C 226.85357,110.93469 235.17606,123.10784 243.54381,135.24922 C 243.54381,124.28612 243.54381,113.32302 243.54381,102.35993 C 225.32349,96.879585 265.75783,96.142060 249.22758,102.10183 C 247.63547,106.96335 248.99712,113.86713 248.54381,119.51603 C 248.07619,129.86304 249.91008,140.85093 246.46025,150.65182 C 236.53817,141.15539 229.25186,126.64450 220.42894,115.14456 C 210.80073,97.529067 215.83546,124.19020 215.28757,132.31147 C 216.42224,136.97266 213.74676,144.34830 217.41427,147.20502 C 230.05672,151.23338 206.89795,153.55264 204.98494,150.48666 z "
+     style="opacity:0.80000007;fill:none;stroke:#000002;stroke-width:0.80000001;stroke-miterlimit:3.5000000;stroke-opacity:1.0000000" />
+  <path
+     id="path1354"
+     d="M 215.09513,437.00449 C 218.21784,424.18979 217.11732,411.89170 200.96344,412.12321 C 186.62494,407.79513 172.90457,400.24479 161.87624,390.25568 C 177.79152,400.62161 194.79437,410.65185 214.03528,413.04009 C 209.33757,406.52665 187.59180,405.23715 178.15287,396.82407 C 172.45808,393.97104 160.35642,382.33787 172.59188,391.45844 C 185.01295,400.01385 199.64625,406.22461 214.62195,407.95790 C 209.59118,399.79916 189.34274,400.64283 180.22812,391.86605 C 174.64622,389.11660 162.30746,377.33495 174.47770,386.37058 C 186.33540,394.96178 200.62389,400.54090 215.12822,402.21267 C 219.29041,390.32092 217.64668,375.51941 219.08896,362.46537 C 219.64174,346.71613 220.98419,330.91403 220.24231,315.17145 C 194.48962,312.82661 168.38674,313.73742 142.53322,314.68067 C 131.71220,320.96639 144.36707,342.27468 147.43803,352.96532 C 150.17409,357.80259 160.59370,376.84843 151.70670,363.77417 C 141.35590,348.27059 136.43233,329.21197 136.18556,310.69859 C 137.86776,295.43472 140.72657,279.80111 149.60420,266.82214 C 151.75733,261.76136 166.73140,243.71831 157.28361,257.61029 C 146.28249,273.48803 137.49499,292.71333 139.04381,312.42145 C 165.34570,312.39503 191.66936,313.29075 217.95423,312.28305 C 224.98415,302.54125 221.00959,284.53782 223.23430,271.50815 C 223.81864,255.53147 225.13791,239.51338 224.55999,223.53763 C 209.12532,222.82159 193.77619,230.07535 180.29517,237.15421 C 166.57632,243.86320 188.69946,229.27909 193.58137,228.64339 C 202.88604,223.27065 217.00674,224.49058 224.25252,218.29682 C 205.39466,218.36261 188.08715,226.98133 171.95040,235.92145 C 179.74559,227.96597 193.91405,222.66868 205.59673,219.35976 C 211.95161,218.87735 234.55323,212.49332 216.37815,213.75653 C 199.46338,215.82609 183.91075,222.98678 169.04972,230.92145 C 177.17699,222.75028 192.55196,217.52173 204.85712,214.30369 C 217.31917,213.05119 231.50001,210.83444 226.76043,194.39277 C 227.23897,183.06443 226.82908,171.57668 229.15480,160.42145 C 232.34549,176.70838 229.56673,193.74162 232.97365,209.86323 C 250.25847,214.15680 268.69928,216.48719 283.73661,227.01058 C 296.36914,236.26800 273.32018,222.53793 269.48322,221.41033 C 258.51727,217.71579 243.64565,211.73673 233.72362,214.48358 C 247.05658,219.15381 261.93344,220.49897 274.69968,227.53279 C 280.76402,229.28402 292.85501,238.99156 279.59987,231.93602 C 266.00479,225.28733 251.48802,219.15043 236.23609,218.15869 C 233.03931,223.69394 254.65710,222.51243 259.83939,227.23866 C 266.35559,230.14274 281.42204,234.96216 282.17541,239.49968 C 266.98796,231.85273 251.01550,222.89515 233.52763,223.53763 C 233.48921,252.91450 234.93258,282.44038 237.76229,311.68268 C 261.90676,313.93445 286.37495,312.20752 310.66369,312.47602 C 319.57031,314.99807 321.09531,308.41275 318.71330,300.66661 C 315.64158,285.39706 310.15522,270.42064 301.82315,257.30877 C 312.61383,268.44733 317.00964,284.81351 320.36582,299.77289 C 323.79410,317.35128 319.99542,335.67950 312.92414,351.94536 C 311.01683,358.27283 296.56345,378.64221 305.98238,361.78303 C 314.26897,347.86175 319.80730,331.49045 319.41732,315.26904 C 293.65770,312.91568 267.56099,313.70823 241.69767,314.55188 C 231.99575,320.78960 240.44498,341.39663 238.63908,353.36432 C 239.66278,369.79020 239.82072,386.36959 242.21351,402.64735 C 259.85829,401.02684 275.91414,392.23129 290.13093,382.17524 C 278.44728,393.85363 262.52355,400.90790 246.41196,404.37408 C 236.00076,412.33212 260.64949,404.27739 264.86054,402.15417 C 273.54360,400.35213 290.72735,386.41463 291.22638,388.18406 C 277.81885,400.09766 260.70313,406.48371 243.62472,411.02263 C 250.07562,415.14738 269.77153,405.97061 279.54301,400.96972 C 285.58223,397.26390 302.95497,385.11469 289.55450,395.90870 C 276.35413,406.99738 259.48730,411.33723 243.45005,416.40101 C 239.86250,420.41742 246.34158,447.62733 237.65407,431.67819 C 234.34439,424.97443 228.07479,413.13439 223.77892,425.90833 C 220.42151,427.59860 219.70920,440.05247 215.09513,437.00449 z M 223.54381,423.15918 C 226.55130,418.70001 229.14458,414.12791 228.08209,408.55912 C 227.98832,378.08831 229.10105,347.58028 227.85052,317.13780 C 218.81924,311.97080 222.79599,338.58723 220.92233,346.79939 C 219.36311,374.62830 218.90777,402.55278 217.43020,430.34562 C 219.71406,432.18123 222.05847,424.53575 223.54381,423.15918 z M 240.66945,429.92145 C 238.43923,392.47750 238.82020,354.84721 235.05185,317.49729 C 227.06040,309.20315 230.43799,333.41015 229.66882,339.39125 C 229.72226,364.73493 229.91727,390.07806 230.04381,415.42145 C 233.38029,419.80174 235.94892,429.32792 240.66945,429.92145 z M 227.43382,311.55397 C 229.16346,287.65085 228.35235,263.53077 227.55131,239.57629 C 225.88579,233.85218 225.64445,252.22920 225.13365,256.56756 C 224.36850,274.88820 222.76244,293.29227 223.69679,311.60578 C 224.52856,313.22872 226.62268,313.13773 227.43382,311.55397 z M 234.39083,311.60578 C 235.18267,287.62186 233.41404,263.51870 231.67580,239.58180 C 229.79197,233.81248 230.26229,252.21306 229.92646,256.53480 C 229.87882,274.86066 229.00468,293.30096 230.65380,311.55398 C 231.46494,313.13774 233.55907,313.22871 234.39083,311.60578 z M 154.54381,383.42145 C 151.55674,376.76275 159.52072,387.56038 154.54381,383.42145 z M 301.54381,384.16635 C 305.05315,376.89061 305.69366,384.98618 301.54381,384.16635 z M 297.54381,381.16635 C 301.05315,373.89061 301.69366,381.98618 297.54381,381.16635 z M 157.54381,379.42145 C 154.55674,372.76275 162.52072,383.56038 157.54381,379.42145 z M 161.54381,376.42145 C 158.55674,369.76275 166.52072,380.56038 161.54381,376.42145 z M 294.54381,377.16635 C 298.05315,369.89061 298.69366,377.98618 294.54381,377.16635 z M 142.02390,367.43454 C 131.22697,352.30707 128.51163,333.74665 125.55560,315.92145 C 119.95905,312.72363 92.593067,315.97859 112.93441,313.34360 C 132.52725,317.56546 125.69263,294.23889 131.21868,283.02056 C 135.90798,268.69081 144.13281,255.29983 154.25773,244.30203 C 141.35441,262.65370 129.75553,283.07320 128.62711,306.08347 C 126.41348,329.72842 133.78270,353.41631 146.99080,372.91988 C 151.18543,381.03473 142.68131,368.63228 142.02390,367.43454 z M 309.54381,375.51358 C 328.57066,348.06205 336.15711,311.59458 323.96707,279.80036 C 319.98257,267.06583 311.92533,256.34734 304.82989,245.30203 C 321.02132,262.07989 330.25122,284.62057 331.57684,307.83067 C 334.08891,316.93885 347.26817,311.82503 354.85049,313.31096 C 358.73728,313.46311 343.34970,313.58483 340.28190,313.88215 C 324.15610,314.76682 333.16581,339.65575 324.69008,349.93522 C 321.11243,358.66153 316.13036,370.06597 309.54381,375.51358 z M 148.33209,367.75434 C 126.36789,336.82626 126.20654,292.20166 147.49431,260.92145 C 151.41409,259.17800 139.45939,276.64664 139.13859,281.80716 C 129.56220,306.06051 131.59893,333.76510 143.73112,356.71038 C 145.24319,359.40469 158.17364,382.27864 148.33209,367.75434 z M 305.54381,372.47260 C 319.12346,349.47322 330.24346,322.08562 322.72391,295.10024 C 319.14751,278.01450 310.93781,262.34234 300.79760,248.33433 C 329.08843,277.52017 334.49492,325.86696 313.63563,360.86741 C 311.34379,364.12572 308.74267,371.67716 305.54381,372.47260 z M 150.54381,257.16634 C 154.05314,249.89063 154.69367,257.98618 150.54381,257.16634 z M 298.54381,254.42145 C 295.55675,247.76273 303.52072,258.56039 298.54381,254.42145 z M 154.54381,252.16634 C 158.05314,244.89063 158.69367,252.98618 154.54381,252.16634 z M 163.54381,248.42145 C 170.12241,242.69982 161.77132,253.90549 163.54381,248.42145 z M 292.54381,248.42145 C 291.23784,243.46923 298.34412,253.38524 292.54381,248.42145 z M 163.54381,242.42145 C 170.12241,236.69982 161.77132,247.90549 163.54381,242.42145 z M 170.54381,242.42145 C 177.12241,236.69982 168.77132,247.90549 170.54381,242.42145 z M 285.54381,242.42145 C 284.23784,237.46923 291.34412,247.38524 285.54381,242.42145 z M 291.54381,240.42145 C 290.23784,235.46923 297.34412,245.38524 291.54381,240.42145 z M 298.54381,240.42145 C 297.23784,235.46923 304.34412,245.38524 298.54381,240.42145 z M 160.54381,237.42145 C 167.12241,231.69982 158.77132,242.90549 160.54381,237.42145 z M 290.54381,233.42145 C 289.23784,228.46923 296.34412,238.38524 290.54381,233.42145 z M 206.04643,149.92570 C 217.60177,143.18991 210.18058,126.56925 211.57123,115.07325 C 215.78125,105.52299 198.29464,95.500568 215.08222,98.128818 C 225.18238,106.58244 231.03337,120.42689 239.28821,131.12544 C 248.25453,146.36022 244.83656,116.95796 245.42984,111.24008 C 249.32131,103.54529 232.08384,96.638525 247.32631,98.004147 C 257.07367,98.045944 241.62783,106.21452 246.57104,113.48504 C 245.13987,124.35601 249.88886,141.79627 244.49698,148.77413 C 234.37201,134.23962 225.07506,119.03354 214.57758,104.78491 C 212.33275,117.70555 210.80518,135.97942 217.07622,147.75426 C 224.69469,151.81741 207.25131,151.33238 206.04643,149.92570 z "
+     style="opacity:0.80000007;fill:none;stroke:#000002;stroke-width:0.80000001;stroke-miterlimit:3.5000000;stroke-opacity:1.0000000" />
+  <path
+     id="path1352"
+     d="M 215.54381,434.92145 C 219.72952,427.57501 217.59542,441.62460 215.54381,434.92145 z M 240.15080,435.33966 C 239.78292,427.49078 244.96420,440.52231 240.15080,435.33966 z M 228.62276,416.50479 C 229.41641,411.42984 229.58417,420.56726 228.62276,416.50479 z M 215.64073,415.53824 C 214.00288,408.18311 221.81450,420.23540 215.64073,415.53824 z M 240.54381,414.95282 C 243.93763,408.15849 242.51943,422.20731 240.54381,414.95282 z M 215.64073,410.53824 C 214.00288,403.18311 221.81450,415.23540 215.64073,410.53824 z M 240.54381,409.95282 C 243.93763,403.15849 242.51943,417.20731 240.54381,409.95282 z M 216.23766,405.28198 C 216.27515,397.98346 221.52953,408.09397 216.23766,405.28198 z M 239.54381,404.42145 C 242.52556,399.75782 241.57126,408.95845 239.54381,404.42145 z M 220.66416,314.56645 C 219.58533,306.04984 228.83606,317.19636 220.66416,314.56645 z M 227.66417,314.56645 C 226.58534,306.04985 235.83604,317.19634 227.66417,314.56645 z M 234.66417,314.56645 C 233.58534,306.04985 242.83604,317.19634 234.66417,314.56645 z M 125.23766,314.28197 C 125.27516,306.98344 130.52952,317.09400 125.23766,314.28197 z M 136.54381,313.42145 C 139.52557,308.75782 138.57125,317.95845 136.54381,313.42145 z M 319.23766,314.28197 C 319.27516,306.98344 324.52952,317.09400 319.23766,314.28197 z M 330.54381,313.42145 C 333.52557,308.75782 332.57125,317.95845 330.54381,313.42145 z M 225.12824,222.61504 C 224.56650,216.59183 226.44309,203.50658 226.93810,191.65556 C 226.95832,185.34215 228.78872,159.07647 230.30543,177.88829 C 230.25898,189.82974 233.26354,202.50709 231.85541,213.96242 C 236.16249,217.86751 231.20817,229.61165 229.42502,217.00430 C 226.14991,212.69488 228.89839,226.81956 225.12824,222.61504 z M 208.98494,148.38965 C 215.59394,144.04530 220.60476,152.98576 209.60631,149.81804 C 208.22755,150.87849 207.30270,148.42528 208.98494,148.38965 z M 244.21971,147.51922 C 244.83101,139.87447 248.49692,152.17950 244.21970,147.51922 L 244.21971,147.51922 z M 231.66371,128.28856 C 224.34627,121.11459 220.97187,101.98304 211.70577,102.96639 C 203.15203,94.120587 224.81541,100.45252 223.33588,108.70781 C 231.42749,118.35936 237.73386,137.48739 246.54381,140.26927 C 242.36690,149.33283 234.28476,130.99860 231.66371,128.28856 z M 243.40459,100.95472 C 236.53666,96.264157 257.09826,100.13722 245.02835,102.29505 L 243.40459,100.95472 L 243.40459,100.95472 z "
+     style="opacity:0.80000007;fill:none;stroke:#000002;stroke-width:0.80000001;stroke-miterlimit:3.5000000;stroke-opacity:1.0000000" />
+  <path
+     id="path1350"
+     d="M 215.54381,435.48047 C 218.06629,431.56450 218.29787,437.58259 215.54381,435.48047 z M 240.54381,434.92145 C 242.03675,431.76125 242.80064,438.35593 240.54381,434.92145 z M 226.91353,210.67145 C 229.25035,198.51773 224.72624,180.30511 229.81847,171.60199 C 229.41157,184.40205 233.52950,203.18833 229.04381,212.92145 C 227.01595,213.99431 226.26076,211.83916 226.91353,210.67145 z M 209.54381,148.98047 C 211.69477,145.35558 212.32790,151.19290 209.54381,148.98047 z M 210.21048,101.25478 C 208.42360,94.197997 219.29679,104.80946 210.21048,101.25478 z M 244.79381,101.20317 C 240.42903,97.116008 252.52948,100.95059 244.79381,101.20317 z "
+     style="opacity:0.80000007;fill:none;stroke:#000002;stroke-width:0.80000001;stroke-miterlimit:3.5000000;stroke-opacity:1.0000000" />
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/rosas_en.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/rosas_en.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/rosas_en.svg	(revision 590)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   sodipodi:docbase="D:\Download\datos\PRUEBAS\northimages"
+   sodipodi:docname="rosas_en.svg"
+   inkscape:version="0.40+cvs"
+   sodipodi:version="0.32"
+   id="svg2"
+   viewBox="0 0 450 500"
+   height="500"
+   width="450">
+  <metadata
+     id="metadata19">
+    <rdf:RDF
+       id="RDF4">
+      <cc:Work
+         id="Work6"
+         rdf:about="">
+        <dc:format
+           id="format8">image/svg+xml</dc:format>
+        <dc:type
+           id="type10"
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs17" />
+  <sodipodi:namedview
+     inkscape:current-layer="svg2"
+     inkscape:window-y="-4"
+     inkscape:window-x="-4"
+     inkscape:cy="-90.981528"
+     inkscape:cx="372.18750"
+     inkscape:zoom="0.35555853"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1024"
+     inkscape:window-height="719" />
+  <path
+     style="fill-rule:nonzero;stroke:none;stroke-miterlimit:4.0000000"
+     d="M -2.0567435,213.70043 L -2.0567435,210.68332 L 25.760450,210.68332 L 25.760450,213.70043 L 24.093173,213.70043 L 23.127908,213.79471 L 22.338145,213.98329 L 21.636134,214.36042 L 21.109625,214.83185 L 20.670868,215.39756 L 20.319863,216.15183 L 20.144360,217.00039 L 20.056608,218.03752 L 20.056608,218.98036 L 20.144360,219.92321 L 20.144360,220.67749 L 20.232111,221.33748 L 20.319863,221.90319 L 20.407614,222.37461 L 20.495366,222.65746 L 20.670868,222.84604 L 30.850031,255.84564 L 42.784221,225.95743 L 40.502685,218.60324 L 40.414933,217.18897 L 40.063928,216.05754 L 39.537420,215.02041 L 38.835409,214.36042 L 38.747657,214.36042 L 38.396652,214.26614 L 37.870143,214.17185 L 37.080380,214.07757 L 35.413104,213.79471 L 33.745827,213.70043 L 31.464291,213.70043 L 31.464291,210.68332 L 61.563025,210.68332 L 61.563025,213.70043 L 59.281487,213.70043 L 58.316223,213.79471 L 57.526454,213.88900 L 56.824447,214.17185 L 56.297935,214.45471 L 55.859183,214.92612 L 55.508172,215.39756 L 55.332670,216.05754 L 55.244923,216.81182 L 67.179111,253.95995 L 75.164490,223.50602 L 75.339991,223.22317 L 75.427746,222.94033 L 75.690996,222.46890 L 75.866496,221.80890 L 76.041998,221.05463 L 76.305254,220.20607 L 76.568512,219.16894 L 76.831767,218.03752 L 76.656258,217.00039 L 76.305254,216.15183 L 75.778750,215.39756 L 75.164490,214.83185 L 74.374729,214.36042 L 73.409456,213.98329 L 72.356447,213.79471 L 71.215673,213.70043 L 71.215673,210.68332 L 87.098675,210.68332 L 87.098675,213.70043 L 86.221165,213.79471 L 85.431399,214.17185 L 84.553890,214.64327 L 83.764128,215.39756 L 83.062114,216.34041 L 82.272352,217.47182 L 81.570337,218.88608 L 80.780576,220.39463 L 62.616035,280.17107 L 59.807992,280.17107 L 45.065761,233.21734 L 26.901218,280.17107 L 24.093173,280.17107 L 4.7878655,219.82893 L 4.4368605,218.79180 L 4.1736065,217.94324 L 3.9103515,217.09468 L 3.5593455,216.43468 L 3.2083405,215.77468 L 2.8573355,215.30327 L 2.5940815,214.92612 L 2.2430755,214.64327 L 1.3655605,214.26614 L 0.40029550,213.98329 L -0.74047250,213.79471 L -2.0567435,213.70043 L -2.0567435,213.70043 z M 91.047494,247.26574 L 208.54661,214.36042 L 238.64534,88.679075 L 271.02561,214.36042 L 386.24319,247.26574 L 271.02561,279.60535 L 238.64534,404.06102 L 208.54661,279.60535 L 91.047494,247.26574 L 91.047494,247.26574 z M 211.35466,218.03752 L 113.77511,245.47433 L 236.36380,245.47433 L 211.35466,218.03752 z M 238.03108,247.92573 L 211.96891,277.15396 L 238.03108,380.20701 L 238.03108,247.92573 z M 239.17185,113.09878 L 239.17185,244.81434 L 265.32177,217.37753 L 239.17185,113.09878 z M 368.07866,247.26574 L 239.78611,247.26574 L 266.46253,275.92826 L 368.07866,247.26574 z M 208.02010,77.082068 L 208.02010,74.630670 L 209.07312,74.536387 L 210.03839,74.253529 L 210.91590,74.064961 L 211.70566,73.782104 L 212.40767,73.404969 L 213.02193,73.027827 L 213.54844,72.650692 L 213.89945,72.179267 L 214.25045,71.707842 L 214.60146,71.047855 L 214.77696,70.387869 L 215.04021,69.445012 L 215.12797,68.502168 L 215.30347,67.465040 L 215.30347,66.239338 L 215.39122,64.919359 L 215.39122,17.305641 L 214.33820,16.457080 L 213.54844,15.514234 L 212.93418,14.571388 L 212.49542,13.628541 L 212.31991,13.251404 L 212.05667,12.779980 L 211.61792,12.308558 L 211.09140,11.837134 L 210.47714,11.365711 L 209.77513,10.894289 L 208.89762,10.422866 L 208.02010,10.045727 L 208.02010,6.9343355 L 226.71116,6.9343355 L 259.09142,50.870955 L 259.09142,18.531339 L 259.00366,17.399925 L 259.00366,16.268510 L 258.82816,15.325664 L 258.74041,14.477103 L 258.47716,13.628541 L 258.30166,12.968549 L 257.95064,12.308558 L 257.68740,11.837134 L 257.24864,11.459997 L 256.72213,11.082858 L 256.10787,10.705719 L 255.31811,10.517150 L 254.44059,10.234297 L 253.47533,10.140012 L 252.33456,10.045727 L 251.10604,10.045727 L 251.10604,6.9343355 L 272.69288,6.9343355 L 272.69288,10.045727 L 271.20111,10.045727 L 269.88484,10.140012 L 268.65632,10.234297 L 267.69105,10.422866 L 266.81354,10.611436 L 266.02378,10.894289 L 265.49727,11.177142 L 265.05851,11.554281 L 264.70750,12.025703 L 264.44424,12.591411 L 264.18100,13.251404 L 264.00549,14.099965 L 263.82999,14.948526 L 263.65449,16.079941 L 263.65449,17.211356 L 263.56674,18.531339 L 263.56674,78.307765 L 260.23218,78.307765 L 220.48080,22.774147 L 220.48080,64.919359 L 220.48080,66.239338 L 220.56855,67.465040 L 220.65630,68.502168 L 220.83180,69.445012 L 221.00731,70.387869 L 221.27056,71.047855 L 221.53381,71.707842 L 221.88482,72.179267 L 222.32358,72.650692 L 222.76234,73.027827 L 223.37660,73.404969 L 224.07861,73.782104 L 224.86837,74.064961 L 225.74589,74.253529 L 226.79890,74.536387 L 227.85192,74.630670 L 227.85192,77.082068 L 208.02010,77.082068 L 208.02010,77.082068 z M 217.67276,493.06566 L 217.67276,468.08025 L 221.00731,468.08025 L 221.70932,470.62593 L 222.41133,473.07733 L 223.20109,475.34016 L 224.07861,477.41442 L 224.95612,479.30011 L 225.92139,481.09152 L 226.88666,482.69435 L 228.02742,484.10863 L 229.08044,485.33433 L 230.30896,486.37146 L 231.53748,487.31430 L 232.85375,488.06857 L 234.17002,488.63429 L 235.66179,489.10571 L 237.06582,489.29428 L 238.64534,489.38856 L 240.04936,489.38856 L 241.45338,489.20000 L 242.68191,489.01142 L 243.82267,488.63429 L 244.96344,488.25715 L 245.92871,487.69144 L 246.80622,487.12573 L 247.59599,486.37146 L 248.29800,485.52290 L 248.91226,484.67433 L 249.35100,483.63720 L 249.78976,482.50578 L 250.14078,481.37437 L 250.40402,480.05439 L 250.49178,478.73441 L 250.57953,477.22585 L 250.40402,475.71730 L 250.05302,474.30303 L 249.43876,472.88876 L 248.56125,471.56878 L 247.42048,470.34308 L 246.10421,469.11738 L 244.43693,467.98596 L 242.59416,466.85454 L 233.55576,461.95176 L 231.80074,460.91462 L 230.22120,459.78320 L 228.72943,458.55750 L 227.32541,457.42608 L 226.00914,456.20039 L 224.86837,454.88040 L 223.81535,453.56042 L 222.85009,452.24043 L 222.06033,450.82616 L 221.35832,449.41189 L 220.74405,447.90335 L 220.21755,446.39479 L 219.86654,444.88624 L 219.51553,443.28340 L 219.42778,441.68056 L 219.34004,439.98344 L 219.42778,437.90918 L 219.60329,435.92920 L 220.04204,433.94923 L 220.56855,432.06354 L 221.18281,430.27212 L 222.06033,428.57501 L 223.02560,426.97216 L 224.16636,425.36933 L 225.39488,423.95506 L 226.79890,422.72936 L 228.20292,421.69223 L 229.78245,420.84367 L 231.44972,420.08939 L 233.11700,419.61797 L 234.95978,419.33511 L 236.89031,419.24084 L 237.24132,419.24084 L 237.68008,419.33511 L 238.20658,419.42940 L 238.82085,419.52368 L 239.43511,419.61797 L 240.22487,419.80654 L 241.10238,419.99511 L 242.06764,420.18367 L 244.17368,420.74938 L 246.45522,421.50367 L 249.00000,422.44650 L 251.72030,423.57793 L 252.24681,423.57793 L 253.03657,423.48364 L 253.73858,423.29506 L 254.35284,422.91793 L 254.79160,422.44650 L 255.14261,421.88080 L 255.40586,421.12652 L 255.58137,420.27797 L 255.66911,419.24084 L 259.09142,419.24084 L 259.09142,441.86913 L 256.19563,441.86913 L 255.40586,439.70058 L 254.61610,437.72060 L 253.73858,435.83492 L 252.77332,434.13780 L 251.80805,432.53495 L 250.84279,431.02641 L 249.78976,429.70642 L 248.73674,428.57501 L 247.59599,427.53788 L 246.45522,426.59503 L 245.22670,425.84075 L 243.99818,425.27504 L 242.68191,424.80362 L 241.36564,424.42649 L 240.04936,424.23791 L 238.64534,424.14363 L 236.36380,424.23791 L 234.43328,424.70933 L 232.76600,425.36933 L 231.36197,426.31217 L 230.30896,427.44359 L 229.60695,428.95215 L 229.16819,430.64927 L 228.99269,432.72353 L 228.99269,433.85494 L 229.08044,434.89207 L 229.16819,435.83492 L 229.34369,436.77776 L 229.51920,437.43776 L 229.78245,438.09775 L 230.04570,438.66345 L 230.39671,439.13488 L 230.83546,439.51202 L 231.27423,439.98344 L 231.88848,440.45486 L 232.59050,441.02057 L 233.38026,441.58628 L 234.25778,442.24627 L 235.31078,442.90626 L 236.36380,443.66054 L 247.15723,449.12904 L 248.73674,450.35474 L 250.22853,451.48616 L 251.54480,452.71186 L 252.86107,454.03184 L 254.00184,455.25754 L 255.14261,456.57752 L 256.10787,457.99179 L 256.89762,459.40606 L 257.68740,460.82034 L 258.38941,462.23460 L 258.91591,463.74315 L 259.35467,465.25171 L 259.70568,466.85454 L 259.96893,468.45738 L 260.14443,470.06022 L 260.23218,471.75734 L 260.14443,474.11446 L 259.88118,476.37729 L 259.44242,478.45155 L 258.74041,480.52581 L 257.95064,482.41150 L 256.98538,484.10863 L 255.84462,485.80574 L 254.52835,487.31430 L 253.03657,488.63429 L 251.36930,489.85998 L 249.52652,490.80283 L 247.59599,491.65139 L 245.40220,492.21710 L 243.12066,492.68852 L 240.66362,492.97138 L 238.03108,493.06566 L 235.83730,492.97138 L 233.55576,492.59424 L 231.27423,492.02853 L 228.99269,491.27425 L 227.93967,490.80283 L 226.97440,490.42569 L 226.09690,490.14283 L 225.39488,489.85998 L 224.86837,489.67142 L 224.42962,489.48285 L 224.07861,489.48285 L 223.90310,489.38856 L 223.20109,489.48285 L 222.67458,489.67142 L 222.14808,489.95427 L 221.70932,490.33141 L 221.44607,490.80283 L 221.18281,491.46283 L 221.09506,492.21710 L 221.00731,493.06566 L 217.67276,493.06566 L 217.67276,493.06566 z M 393.00005,280.17107 L 393.00005,277.15396 L 394.22857,277.15396 L 395.36934,277.05968 L 396.42235,276.87110 L 397.29987,276.68253 L 398.08963,276.49396 L 398.79165,276.11683 L 399.40591,275.73969 L 399.84466,275.36255 L 400.28341,274.79685 L 400.63443,274.23113 L 400.89767,273.47686 L 401.16093,272.62830 L 401.33643,271.59117 L 401.42419,270.55403 L 401.51194,269.32834 L 401.51194,268.00835 L 401.51194,222.84604 L 401.51194,221.24319 L 401.42419,219.82893 L 401.33643,218.60324 L 401.16093,217.47182 L 400.98543,216.52897 L 400.72218,215.77468 L 400.45892,215.11470 L 400.10792,214.64327 L 399.75691,214.26614 L 399.23039,213.98329 L 398.52840,213.70043 L 397.82638,213.51185 L 396.94887,213.32329 L 395.89585,213.22901 L 394.84283,213.13473 L 393.61431,213.13473 L 393.61431,210.68332 L 446.44065,210.68332 L 446.44065,230.76594 L 445.29988,230.76594 L 444.94888,228.31455 L 444.42238,226.05172 L 443.89587,223.97746 L 443.19386,222.18604 L 442.40409,220.58321 L 441.52658,219.16894 L 440.47356,218.03752 L 439.33279,217.09468 L 438.01652,216.34041 L 436.52474,215.58612 L 434.76972,215.02041 L 432.83918,214.54899 L 430.73315,214.17185 L 428.36387,213.98329 L 425.81908,213.79471 L 423.09878,213.70043 L 422.04576,213.70043 L 421.08050,213.79471 L 420.20299,213.88900 L 419.41322,213.98329 L 418.79896,214.07757 L 418.18470,214.26614 L 417.74595,214.45471 L 417.48270,214.64327 L 417.21944,214.92612 L 416.95618,215.39756 L 416.78068,215.86897 L 416.60518,216.52897 L 416.42968,217.37753 L 416.34192,218.22609 L 416.34192,219.26322 L 416.34192,220.39463 L 416.34192,242.36294 L 417.48270,242.36294 L 419.23772,242.36294 L 420.81725,242.17438 L 422.30902,241.89152 L 423.71304,241.51438 L 424.94156,241.04296 L 425.99458,240.47725 L 426.87209,239.81726 L 427.66186,239.06298 L 428.36387,238.12014 L 428.97812,236.98872 L 429.68013,235.66874 L 430.20664,234.25447 L 430.73315,232.55735 L 431.25966,230.76594 L 431.78617,228.69168 L 432.22493,226.52313 L 434.50646,226.52313 L 434.50646,261.31415 L 432.22493,261.31415 L 431.87392,259.14560 L 431.52292,257.07134 L 431.08416,255.27994 L 430.64540,253.58281 L 430.11889,252.16855 L 429.50464,250.84855 L 428.89038,249.71715 L 428.27612,248.77429 L 427.48636,248.02002 L 426.52109,247.36003 L 425.38032,246.79432 L 424.15180,246.32290 L 422.66002,245.94576 L 421.08050,245.66290 L 419.32547,245.47433 L 417.48270,245.47433 L 416.34192,245.47433 L 416.34192,269.23405 L 416.34192,270.27118 L 416.34192,271.11974 L 416.42968,271.96830 L 416.51743,272.62830 L 416.60518,273.28829 L 416.78068,273.75971 L 416.95618,274.13686 L 417.13169,274.41970 L 417.39494,274.60827 L 417.83370,274.79685 L 418.36021,274.98542 L 418.97447,275.07970 L 419.67648,275.17398 L 420.55400,275.26827 L 421.51926,275.26827 L 422.57227,275.36255 L 426.52109,275.36255 L 428.62712,275.26827 L 430.55766,275.07970 L 432.48818,274.70256 L 434.33097,274.23113 L 435.99824,273.66543 L 437.66552,272.91115 L 439.15729,272.06259 L 440.56131,271.02547 L 441.87759,269.89405 L 443.19386,268.66835 L 444.33462,267.25408 L 445.38764,265.74552 L 446.35291,264.04840 L 447.23042,262.25699 L 448.02018,260.27702 L 448.63444,258.20276 L 452.05674,258.20276 L 446.96716,280.17107 L 393.00005,280.17107 L 393.00005,280.17107 z "
+     id="path14" />
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/nordRosas.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/nordRosas.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/nordRosas.svg	(revision 590)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   sodipodi:docname="nordRosas.svg"
+   sodipodi:docbase="D:\Download\datos\PRUEBAS\northimages"
+   viewBox="0 0 450 500"
+   height="500"
+   width="450"
+   inkscape:version="0.40+cvs"
+   sodipodi:version="0.32"
+   id="svg2">
+  <metadata
+     id="metadata7">
+    <rdf:RDF
+       id="RDF4">
+      <cc:Work
+         id="Work6"
+         rdf:about="">
+        <dc:format
+           id="format8">image/svg+xml</dc:format>
+        <dc:type
+           id="type10"
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs5" />
+  <sodipodi:namedview
+     inkscape:document-units="cm"
+     inkscape:current-layer="Extras"
+     inkscape:window-y="110"
+     inkscape:window-x="110"
+     inkscape:cy="301.29578"
+     inkscape:cx="234.01902"
+     inkscape:zoom="0.78504222"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="769"
+     inkscape:window-height="544" />
+  <g
+     transform="matrix(1.135655,0,0,1.075187,44.53582,78.01662)"
+     id="Extras"
+     style="fill-rule:nonzero;stroke:#000000;stroke-miterlimit:4">
+    <path
+       style="stroke:none"
+       d="M 8.9172838,200.65588 L 135.55805,170.74063 L 160.94769,20.875289 L 186.82912,170.74063 L 313.90022,201.23396 L 186.82912,231.07696 L 160.94769,380.43648 L 135.55805,231.07696 L 8.9172838,200.65588 z M 160.94769,201.23396 L 20.228887,201.23396 L 137.40234,229.415 L 160.94769,201.23396 z M 160.94769,34.098699 L 137.40234,171.89677 L 160.94769,201.23396 L 160.94769,34.098699 z M 160.94769,201.23396 L 160.94769,366.63499 L 184.98484,229.415 L 160.94769,201.23396 L 160.94769,201.23396 z M 184.98484,171.89677 L 160.94769,201.23396 L 302.15829,201.23396 L 184.98484,171.89677 z M 133.22196,-60.994251 L 133.22196,-62.656211 L 145.88604,-62.656211 L 178.83724,-16.771691 L 178.83724,-52.684451 L 178.83724,-54.057371 L 178.71428,-55.285781 L 178.59133,-56.369661 L 178.4069,-57.381291 L 178.09952,-58.320661 L 177.79214,-58.970991 L 177.42327,-59.549071 L 176.99294,-59.910361 L 176.68557,-60.271651 L 176.31671,-60.632951 L 175.94786,-60.921991 L 175.45605,-61.138761 L 174.84128,-61.355541 L 174.22653,-61.427801 L 173.4888,-61.572321 L 172.75111,-61.572321 L 172.2593,-61.572321 L 172.2593,-62.656211 L 189.2267,-62.656211 L 189.2267,-61.572321 L 187.81275,-61.572321 L 186.8906,-61.500061 L 186.02994,-61.427801 L 185.29223,-61.283281 L 184.61599,-60.994251 L 184.00122,-60.705211 L 183.44793,-60.343921 L 183.0176,-59.838101 L 182.58726,-59.332291 L 182.58726,-2.8979511 L 181.17332,-2.8979511 L 146.86966,-49.360531 L 146.86966,-13.953581 L 146.86966,-12.291631 L 146.86966,-10.774181 L 146.93114,-9.5457811 L 146.93114,-8.4618911 L 147.05409,-7.5947811 L 147.11556,-6.9444511 L 147.17704,-6.5109011 L 147.3,-6.2218611 L 148.09917,-5.4992711 L 149.0828,-4.9934611 L 150.25084,-4.7044211 L 151.54183,-4.5599011 L 153.87794,-4.5599011 L 153.87794,-3.4760211 L 135.98838,-3.4760211 L 135.98838,-4.5599011 L 137.40234,-4.5599011 L 138.32448,-4.6321711 L 139.12367,-4.7766811 L 139.86138,-5.0657111 L 140.47615,-5.4270111 L 141.58271,-6.1496011 L 142.62781,-6.7999311 L 142.68928,-7.1612311 L 142.81224,-7.6670411 L 142.87371,-8.3173711 L 142.93519,-9.1122211 L 142.99666,-10.123851 L 143.05815,-11.280001 L 143.05815,-12.508411 L 143.05815,-13.953581 L 143.05815,-54.924491 L 142.68928,-54.996741 L 142.3819,-55.213521 L 142.19748,-55.430301 L 142.13599,-55.502551 L 141.09091,-56.514181 L 140.16877,-57.309031 L 139.554,-58.031621 L 139.06219,-58.537441 L 138.63186,-58.898731 L 137.95563,-59.260031 L 137.09496,-59.621321 L 135.98838,-59.910361 L 135.68102,-60.416171 L 135.06625,-60.705211 L 134.26706,-60.921991 L 133.22196,-60.994251 L 133.22196,-60.994251 z "
+       id="path1336" />
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha2.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha2.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/norte_flecha2.svg	(revision 590)
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   sodipodi:version="0.32"
+   inkscape:version="0.42.2"
+   sodipodi:docbase="E:\pruebas_gvSIG\nortes"
+   sodipodi:docname="norte_flecha2.svg"
+   id="svg2"
+   viewBox="0 0 450 500"
+   height="500"
+   width="450">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.6580000"
+     inkscape:cx="225.00000"
+     inkscape:cy="250.00000"
+     inkscape:document-units="px"
+     inkscape:current-layer="g8070"
+     inkscape:window-width="1280"
+     inkscape:window-height="998"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8070">
+      <g
+         id="g5117"
+         transform="matrix(1.430685,0.000000,0.000000,1.549690,-97.11041,-137.4204)">
+        <path
+           d="M 191.95198,344.97904 L 191.95198,344.97904 L 191.95198,344.97904 L 191.95198,344.97904"
+           class="fil0 str1"
+           id="_53765264"
+           style="fill:none;stroke:#000000;stroke-width:0.17079458;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <line
+           y2="359.63187"
+           x2="203.16617"
+           y1="359.63187"
+           x1="203.16617"
+           class="fil0 str1"
+           id="_56376032"
+           style="fill:none;stroke:#000000;stroke-width:0.17079458;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <line
+           y2="354.43011"
+           x2="269.43991"
+           y1="164.02354"
+           x1="224.30603"
+           class="fil0 str1"
+           id="line5099"
+           style="fill:none;stroke:#000000;stroke-width:0.78856510;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <path
+           d="M 221.95508,341.05655 L 221.95508,341.05655 L 221.95508,341.05655 L 221.95508,341.05655"
+           class="fil0 str1"
+           id="path5101"
+           style="fill:none;stroke:#000000;stroke-width:0.33584988;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <line
+           y2="354.43011"
+           x2="269.45593"
+           y1="340.59448"
+           x1="224.46889"
+           class="fil0 str1"
+           id="line5103"
+           style="fill:none;stroke:#000000;stroke-width:0.78856510;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <line
+           y2="354.43527"
+           x2="269.44662"
+           y1="354.43527"
+           x1="269.44662"
+           class="fil0 str1"
+           id="line5105"
+           style="fill:none;stroke:#000000;stroke-width:0.33584988;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000" />
+        <text
+           transform="scale(1.033833,0.967274)"
+           id="text5109"
+           y="164.85939"
+           x="206.71614"
+           style="font-size:27.209906px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.0080292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+           xml:space="preserve"><tspan
+             style="stroke:#000000;stroke-width:1.0080292;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+             y="164.85939"
+             x="206.71614"
+             id="tspan5111"
+             sodipodi:role="line">N</tspan></text>
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.16981237;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="path5864"
+           class="fil0 str1"
+           d="M 256.02783,344.98481 L 256.02783,344.98481 L 256.02783,344.98481 L 256.02783,344.98481" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:0.16981237;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line5866"
+           class="fil0 str1"
+           x1="244.94293"
+           y1="359.63849"
+           x2="244.94293"
+           y2="359.63849" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line5868"
+           class="fil0 str1"
+           x1="224.04669"
+           y1="164.01874"
+           x2="179.43306"
+           y2="354.43643" />
+        <path
+           style="fill:none;stroke:#000000;stroke-width:0.33391839;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="path5870"
+           class="fil0 str1"
+           d="M 226.37056,341.06210 L 226.37056,341.06210 L 226.37056,341.06210 L 226.37056,341.06210" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line5872"
+           class="fil0 str1"
+           x1="224.75529"
+           y1="340.60001"
+           x2="179.42043"
+           y2="354.43643" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:0.33391839;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line5874"
+           class="fil0 str1"
+           x1="179.42644"
+           y1="354.44159"
+           x2="179.42644"
+           y2="354.44159" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:2.0000000;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line8066"
+           class="fil0 str1"
+           x1="224.90660"
+           y1="164.30489"
+           x2="270.33414"
+           y2="355.54733" />
+        <line
+           style="fill:none;stroke:#000000;stroke-width:2.0000000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+           id="line8068"
+           class="fil0 str1"
+           x1="224.77315"
+           y1="341.16119"
+           x2="270.34756"
+           y2="355.26199" />
+      </g>
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_20.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_20.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_20.svg	(revision 590)
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <rect
+       width="2.1465743"
+       height="0"
+       x="-2192.2886"
+       y="679.51837"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.33699989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect10945" />
+    <g
+       transform="translate(11.428571,-31.428571)"
+       id="g2691">
+      <path
+         d="M 368.39001 537.05811 A 8.5231619 8.5231619 0 1 1  351.34369,537.05811 A 8.5231619 8.5231619 0 1 1  368.39001 537.05811 z"
+         transform="matrix(7.6127586,0,0,4.9447,-2569.3395,-2348.7304)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99897921;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 170.38701,266.10392 L 170.85897,307.35786 L 232.55538,307.0628 C 231.23495,287.06589 219.06732,268.96046 170.38701,266.10392 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.77328086;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1874" />
+      <path
+         d="M 232.17955,308.33172 L 170.4789,308.6562 L 170.92016,351.07171 C 200.82811,350.16397 227.90719,341.79882 232.17955,308.33172 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.79813766;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2762" />
+      <path
+         d="M 169.07523,351.21743 L 168.60008,307.86897 L 106.49085,308.17902 C 107.82008,329.19117 120.06914,348.21581 169.07523,351.21743 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82381284;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2764" />
+      <path
+         d="M 107.6676,306.89368 L 169.23133,306.58106 L 168.79106,265.71362 C 138.94945,266.58828 111.93049,274.64807 107.6676,306.89368 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.76305711;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2766" />
+      <path
+         d="M 369.27388 534.87994 A 0.91545075 0.91545075 0 1 1  367.44298,534.87994 A 0.91545075 0.91545075 0 1 1  369.27388 534.87994 z"
+         transform="matrix(9.0351562,0,0,7.0465837,-3158.5547,-3463.0081)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.30000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3653" />
+      <g
+         transform="matrix(-7.5816931,0,0,5.9450504,2913.1796,-2901.1405)"
+         id="g6328">
+        <path
+           d="M 360,527.36218 L 360,532.36218 L 362,532.36218 L 362,527.36218 L 360,527.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6330" />
+        <path
+           d="M 362.05536,527.34679 L 362.05536,532.34679 L 364.05536,532.34679 L 364.05536,527.34679 L 362.05536,527.34679 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6332" />
+      </g>
+      <g
+         transform="matrix(-7.5816931,0,0,8.0021747,2753.7327,-4118.7553)"
+         id="g7281">
+        <path
+           d="M 335.58543,544.35634 L 340.58543,539.35634 L 340.58543,543.79349 L 335.58543,544.35634 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7277" />
+        <path
+           d="M 345.85,544.38592 L 340.85,539.38592 L 340.85,543.77616 L 345.85,544.38592 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7279" />
+      </g>
+      <g
+         transform="matrix(0,4.9449326,-20.276994,0,11031,-1482.2875)"
+         id="g6384">
+        <path
+           d="M 360,527.36218 L 360,532.36218 L 362,532.36218 L 362,527.36218 L 360,527.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6386" />
+        <path
+           d="M 362.05536,527.34679 L 362.05536,532.34679 L 364.05536,532.34679 L 364.05536,527.34679 L 362.05536,527.34679 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6388" />
+      </g>
+      <g
+         transform="matrix(0,4.9449326,-8.7655457,0,5106.2826,-1378.7352)"
+         id="g7285">
+        <path
+           d="M 335.58543,544.35634 L 340.58543,539.35634 L 340.58543,543.79349 L 335.58543,544.35634 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7287" />
+        <path
+           d="M 345.85,544.38592 L 340.85,539.38592 L 340.85,543.77616 L 345.85,544.38592 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path7289" />
+      </g>
+      <g
+         transform="matrix(7.5816931,0,0,3.5607864,-2574.2398,-1531.313)"
+         id="g6324">
+        <path
+           d="M 360,527.36218 L 360,532.36218 L 362,532.36218 L 362,527.36218 L 360,527.36218 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path5435" />
+        <path
+           d="M 362.05536,527.34679 L 362.05536,532.34679 L 364.05536,532.34679 L 364.05536,527.34679 L 362.05536,527.34679 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path6322" />
+      </g>
+      <path
+         d="M 129.73354,362.40528 L 167.642,386.36978 L 167.642,365.10296 L 129.73354,362.40528 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.80843782;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path7293" />
+      <path
+         d="M 207.55636,362.26351 L 169.64789,386.22801 L 169.64789,365.18603 L 207.55636,362.26351 z "
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.80843782;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path7295" />
+      <g
+         transform="matrix(6.1470247,0,0,4.9449326,-2161.6542,-2305.1099)"
+         id="g7311">
+        <g
+           transform="matrix(0,-1,1.091992,0,-211.7912,890.2011)"
+           id="g6378">
+          <path
+             d="M 360,527.36218 L 360,532.36218 L 362,532.36218 L 362,527.36218 L 360,527.36218 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6380" />
+          <path
+             d="M 362.05536,527.34679 L 362.05536,532.34679 L 364.05536,532.34679 L 364.05536,527.34679 L 362.05536,527.34679 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path6382" />
+        </g>
+        <g
+           transform="matrix(0,-1,1.346023,0,-368.0639,868.7946)"
+           id="g7297">
+          <path
+             d="M 335.58543,544.35634 L 340.58543,539.35634 L 340.58543,543.79349 L 335.58543,544.35634 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7299" />
+          <path
+             d="M 345.85,544.38592 L 340.85,539.38592 L 340.85,543.77616 L 345.85,544.38592 z "
+             style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7301" />
+        </g>
+      </g>
+      <path
+         d="M 393.26214,295.13612 L 418.07515,295.13612 L 418.07515,299.809 L 402.54147,299.809 L 402.54147,303.28753 L 416.95101,303.28753 L 416.95101,307.7514 L 402.54147,307.7514 L 402.54147,312.06597 L 418.52481,312.06597 L 418.52481,317.0225 L 393.26214,317.0225 L 393.26214,295.13612 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 155.67772,169.28237 L 164.32345,169.28237 L 175.60581,181.39004 L 175.60581,169.28237 L 184.33328,169.28237 L 184.33328,191.16875 L 175.60581,191.16875 L 164.38476,179.15065 L 164.38476,191.16875 L 155.67772,191.16875 L 155.67772,169.28237 z "
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_21.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_21.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_21.svg	(revision 590)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-92.857142,-195.71428)"
+       id="g2364">
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(120.2025,165.8597)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-38.47829,7.819412)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 220.71428 511.11218 A 13.75 13.75 0 1 1  193.21428,511.11218 A 13.75 13.75 0 1 1  220.71428 511.11218 z"
+         transform="translate(101.7775,-47.67051)"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1938" />
+      <path
+         d="M 472.75139 523.5473 A 91.418808 91.418808 0 1 1  289.91377,523.5473 A 91.418808 91.418808 0 1 1  472.75139 523.5473 z"
+         transform="matrix(1.103132,0,0,1.104543,-111.8861,-117.992)"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:13.62841034;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1874" />
+      <path
+         d="M 308.94088,369.67111 L 308.29193,460.78352 L 220.68561,459.69885 C 223.97374,407.73276 254.12263,376.98009 308.94088,369.67111 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.95903033px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1878" />
+      <g
+         transform="matrix(0.748443,0,0,0.836937,592.2214,44.12846)"
+         id="g11445">
+        <path
+           d="M -379.17633,368.23588 L -368.03889,368.23588 L -368.03889,351.45051 L -379.17633,343.05783 L -379.17633,368.23588 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path9671" />
+        <path
+           d="M -380.00271,368.16549 L -391.14015,368.16549 L -391.14015,351.38012 L -380.00271,342.98744 L -380.00271,368.16549 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11443" />
+      </g>
+      <g
+         transform="matrix(0,-0.748443,-0.836937,0,723.9117,180.5106)"
+         id="g11455">
+        <path
+           d="M -379.17633,368.23588 L -368.03889,368.23588 L -368.03889,351.45051 L -379.17633,343.05783 L -379.17633,368.23588 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11457" />
+        <path
+           d="M -380.00271,368.16549 L -391.14015,368.16549 L -391.14015,351.38012 L -380.00271,342.98744 L -380.00271,368.16549 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11459" />
+      </g>
+      <g
+         transform="matrix(-0.748443,0,0,-0.836937,27.8102,872.4654)"
+         id="g11461">
+        <path
+           d="M -379.17633,368.23588 L -368.03889,368.23588 L -368.03889,351.45051 L -379.17633,343.05783 L -379.17633,368.23588 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11463" />
+        <path
+           d="M -380.00271,368.16549 L -391.14015,368.16549 L -391.14015,351.38012 L -380.00271,342.98744 L -380.00271,368.16549 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11465" />
+      </g>
+      <g
+         transform="matrix(0,0.748443,0.836937,0,-106.4708,741.7747)"
+         id="g11467">
+        <path
+           d="M -379.17633,368.23588 L -368.03889,368.23588 L -368.03889,351.45051 L -379.17633,343.05783 L -379.17633,368.23588 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11469" />
+        <path
+           d="M -380.00271,368.16549 L -391.14015,368.16549 L -391.14015,351.38012 L -380.00271,342.98744 L -380.00271,368.16549 z "
+           style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.03415477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11471" />
+      </g>
+      <path
+         d="M 398.45405,461.44366 L 311.60102,462.08755 L 312.63499,549.01098 C 362.43443,540.42613 393.65787,513.7814 398.45405,461.44366 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.93268889px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1876" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_40.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_40.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_40.svg	(revision 590)
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.8369185,0,0,0.8360407,-85.210991,-36.850036)"
+       id="g2624">
+      <g
+         transform="matrix(0.791217,0,0,0.784707,193.4718,-11.49344)"
+         id="g7487">
+        <g
+           transform="translate(-128.7692,0)"
+           id="g4677">
+          <g
+             transform="matrix(0.971457,0,0,0.854229,7.969158,79.25222)"
+             id="g2880">
+            <g
+               transform="matrix(1,0,0,1.094658,-7.576144,-116.9675)"
+               id="g2816">
+              <g
+                 transform="matrix(0,0.977376,-1.108433,0,946.5542,176.5779)"
+                 id="g2774">
+                <g
+                   id="g2764">
+                  <path
+                     d="M 361.26494,521.30569 L 361.26494,531.09724 L 372.73506,531.09724 C 372.17308,525.85757 370.20395,521.47039 361.26494,521.30569 z "
+                     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path1872" />
+                  <path
+                     d="M 361.08929,521.27289 L 361.08929,531.06444 L 349.61917,531.06444 C 350.18115,525.82477 352.15028,521.43759 361.08929,521.27289 z "
+                     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2762" />
+                </g>
+                <g
+                   transform="matrix(-1,0,0,-1,722.3542,1062.297)"
+                   id="g2768">
+                  <path
+                     d="M 361.26494,521.30569 L 361.26494,531.09724 L 372.73506,531.09724 C 372.17308,525.85757 370.20395,521.47039 361.26494,521.30569 z "
+                     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2770" />
+                  <path
+                     d="M 361.08929,521.27289 L 361.08929,531.06444 L 349.61917,531.06444 C 350.18115,525.82477 352.15028,521.43759 361.08929,521.27289 z "
+                     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2772" />
+                </g>
+              </g>
+              <g
+                 transform="matrix(2.103961,0,0,2.23862,-402.8135,-659.013)"
+                 id="g2788">
+                <g
+                   id="g2790">
+                  <path
+                     d="M 361.26494,521.30569 L 361.26494,531.09724 L 372.73506,531.09724 C 372.17308,525.85757 370.20395,521.47039 361.26494,521.30569 z "
+                     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2792" />
+                  <path
+                     d="M 361.08929,521.27289 L 361.08929,531.06444 L 349.61917,531.06444 C 350.18115,525.82477 352.15028,521.43759 361.08929,521.27289 z "
+                     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2794" />
+                </g>
+                <g
+                   transform="matrix(-1,0,0,-1,722.3542,1062.297)"
+                   id="g2796">
+                  <path
+                     d="M 361.26494,521.30569 L 361.26494,531.09724 L 372.73506,531.09724 C 372.17308,525.85757 370.20395,521.47039 361.26494,521.30569 z "
+                     style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2798" />
+                  <path
+                     d="M 361.08929,521.27289 L 361.08929,531.06444 L 349.61917,531.06444 C 350.18115,525.82477 352.15028,521.43759 361.08929,521.27289 z "
+                     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52988255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                     id="path2800" />
+                </g>
+              </g>
+            </g>
+            <g
+               transform="matrix(0,-7.547046,6.042845,0,-2725.338,3604.531)"
+               id="g2842">
+              <path
+                 d="M 427.36015,509.11223 L 416.50687,509.11223 L 416.50687,520.32285 C 422.3147,519.77359 427.17759,517.84901 427.36015,509.11223 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55152494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2806" />
+              <path
+                 d="M 427.27025,508.84857 L 416.41697,508.84857 L 416.41697,497.63795 C 422.22479,498.18721 427.08769,500.11179 427.27025,508.84857 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.55152494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2808" />
+            </g>
+            <g
+               transform="matrix(0,7.547046,-6.042845,0,3425.287,-2683.494)"
+               id="g2874">
+              <path
+                 d="M 427.36015,509.11223 L 416.50687,509.11223 L 416.50687,520.32285 C 422.3147,519.77359 427.17759,517.84901 427.36015,509.11223 z "
+                 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.55152494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2876" />
+              <path
+                 d="M 427.27025,508.84857 L 416.41697,508.84857 L 416.41697,497.63795 C 422.22479,498.18721 427.08769,500.11179 427.27025,508.84857 z "
+                 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.55152494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+                 id="path2878" />
+            </g>
+          </g>
+          <path
+             d="M 264.65997 434.6539 A 75.00383 84.34774 0 1 1  114.65231,434.6539 A 75.00383 84.34774 0 1 1  264.65997 434.6539 z"
+             transform="matrix(0.909272,0,0,0.889383,179.589,85.28945)"
+             style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:12.19096565;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2903" />
+        </g>
+        <path
+           d="M 321.73359 471.77701 A 98.742409 98.742409 0 1 1  124.24877,471.77701 A 98.742409 98.742409 0 1 1  321.73359 471.77701 z"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:10.9630003;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4675" />
+        <path
+           d="M 415.17269 425.81506 A 18.940361 18.940361 0 1 1  377.29197,425.81506 A 18.940361 18.940361 0 1 1  415.17269 425.81506 z"
+           transform="translate(-177.2818,48.9924)"
+           style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:10.9630003;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4702" />
+        <g
+           transform="matrix(0.773465,-0.806212,0.773465,0.806212,-489.2498,310.4752)"
+           id="g7363">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path4704" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path5591" />
+        </g>
+        <g
+           transform="matrix(0,-1,1.370927,0,-525.4876,834.2622)"
+           id="g7367">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7369" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7371" />
+        </g>
+        <g
+           transform="matrix(-1,0,0,-1,576.7521,1043.131)"
+           id="g7373">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7375" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7377" />
+        </g>
+        <g
+           transform="matrix(0,1,-1.320327,0,946.7844,109.6182)"
+           id="g7379">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7381" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7383" />
+        </g>
+        <g
+           transform="matrix(-6.349602,0,0,7.893866,2509.173,-3511.318)"
+           id="g7385">
+          <path
+             d="M 360.35808,491.65901 L 354.57049,492.29557 L 360.24559,477.11659 L 360.35808,491.65901 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7387" />
+          <path
+             d="M 360.35787,491.43225 L 365.67544,492.52265 L 360.24538,476.85781 L 360.35787,491.43225 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7389" />
+        </g>
+        <g
+           transform="matrix(0.806212,0.773465,-0.806212,0.773465,380.4122,-244.3374)"
+           id="g7391">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7393" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7395" />
+        </g>
+        <g
+           transform="matrix(-0.773465,0.806212,-0.773465,-0.806212,938.1283,630.2744)"
+           id="g7397">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7399" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7401" />
+        </g>
+        <g
+           transform="matrix(-0.806212,-0.773465,0.806212,-0.773465,61.40929,1183.452)"
+           id="g7403">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7405" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7407" />
+        </g>
+        <g
+           transform="translate(-138.8727,-100.1242)"
+           id="g7409">
+          <path
+             d="M 360.24559,497.35523 L 354.57049,492.29557 L 360.24559,477.11659 L 360.24559,497.35523 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7411" />
+          <path
+             d="M 360.24538,497.74427 L 365.67544,492.52265 L 360.24538,476.85781 L 360.24538,497.74427 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7413" />
+        </g>
+        <g
+           transform="matrix(6.349602,0,0,-7.893866,-2068.875,4452.955)"
+           id="g7415">
+          <path
+             d="M 360.35808,491.65901 L 354.57049,492.29557 L 360.24559,477.11659 L 360.35808,491.65901 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7417" />
+          <path
+             d="M 360.35787,491.43225 L 365.67544,492.52265 L 360.24538,476.85781 L 360.35787,491.43225 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7419" />
+        </g>
+        <g
+           transform="matrix(0,-6.349602,-7.893866,0,4204.025,2755.34)"
+           id="g7421">
+          <path
+             d="M 360.35808,491.65901 L 354.57049,492.29557 L 360.24559,477.11659 L 360.35808,491.65901 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7423" />
+          <path
+             d="M 360.35787,491.43225 L 365.67544,492.52265 L 360.24538,476.85781 L 360.35787,491.43225 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7425" />
+        </g>
+        <g
+           transform="matrix(0,6.349602,7.893866,0,-3760.225,-1814.241)"
+           id="g7427">
+          <path
+             d="M 360.35808,491.65901 L 354.57049,492.29557 L 360.24559,477.11659 L 360.35808,491.65901 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7429" />
+          <path
+             d="M 360.35787,491.43225 L 365.67544,492.52265 L 360.24538,476.85781 L 360.35787,491.43225 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.30639601;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7431" />
+        </g>
+        <g
+           transform="matrix(0,1,-1,0,697.4462,233.063)"
+           id="g7459">
+          <path
+             d="M 305.70361,545.14042 L 280.24237,567.55227 L 341.6215,582.21057 L 305.70361,545.14042 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.88635445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7447" />
+          <path
+             d="M 307.13089,545.75404 L 326.94823,520.3061 L 344.28179,583.86251 L 307.13089,545.75404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1.43641043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7449" />
+        </g>
+        <g
+           transform="matrix(-1,0,0,-1,460.0686,944.3811)"
+           id="g7469">
+          <path
+             d="M 305.70361,545.14042 L 280.24237,567.55227 L 341.6215,582.21057 L 305.70361,545.14042 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.88635445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7471" />
+          <path
+             d="M 307.13089,545.75404 L 326.94823,520.3061 L 344.28179,583.86251 L 307.13089,545.75404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1.43641043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7473" />
+        </g>
+        <g
+           transform="matrix(0,-1,1,0,-252.7986,704.8668)"
+           id="g7475">
+          <path
+             d="M 305.70361,545.14042 L 280.24237,567.55227 L 341.6215,582.21057 L 305.70361,545.14042 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.88635445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7477" />
+          <path
+             d="M 307.13089,545.75404 L 326.94823,520.3061 L 344.28179,583.86251 L 307.13089,545.75404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1.43641043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7479" />
+        </g>
+        <g
+           transform="translate(-12.50478,-4.722123)"
+           id="g7481">
+          <path
+             d="M 305.70361,545.14042 L 280.24237,567.55227 L 341.6215,582.21057 L 305.70361,545.14042 z "
+             style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.88635445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7483" />
+          <path
+             d="M 307.13089,545.75404 L 326.94823,520.3061 L 344.28179,583.86251 L 307.13089,545.75404 z "
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1.43641043;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path7485" />
+        </g>
+      </g>
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(24.02516,-131.2246)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(221.9285,59.65504)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_22.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_22.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_22.svg	(revision 590)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.7610147,0,0,0.7418529,-2.8013926,-128.06592)"
+       id="g2293">
+      <path
+         d="M 275.19412,366.68346 L 275.19412,336.68346 L 290.89409,326.68346 L 305.19412,336.68346 L 305.19412,366.68346 L 275.19412,366.68346 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2780" />
+      <path
+         d="M 155.58314,526.74089 L 125.58314,526.74089 L 115.58314,511.04092 L 125.58314,496.74089 L 155.58314,496.74089 L 155.58314,526.74089 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2782" />
+      <path
+         d="M 308.30616,644.35431 L 308.30616,674.35431 L 292.60619,684.35431 L 278.30616,674.35431 L 278.30616,644.35431 L 308.30616,644.35431 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2786" />
+      <path
+         d="M 432.89731,489.92235 L 462.89731,489.92235 L 472.89731,505.62232 L 462.89731,519.92235 L 432.89731,519.92235 L 432.89731,489.92235 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path2788" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(-54.80588,7.726692)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2790" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(153.0974,210.0349)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2798" />
+      <path
+         d="M 432.34531 496.77829 A 129.29953 129.29953 0 1 1  173.74625,496.77829 A 129.29953 129.29953 0 1 1  432.34531 496.77829 z"
+         transform="translate(-10,8.571429)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:22.97900009;stroke-linejoin:round;stroke-miterlimit:0.89999998;stroke-dasharray:none;stroke-opacity:1"
+         id="path2010" />
+      <rect
+         width="24.999969"
+         height="59.184189"
+         x="277.85718"
+         y="478.17795"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:1.29999995;stroke-dasharray:none;stroke-opacity:1"
+         id="rect3784" />
+      <rect
+         width="73.387772"
+         height="119.3559"
+         x="254.44786"
+         y="448.84995"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:11.91275311;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-opacity:1"
+         id="rect5556" />
+      <rect
+         width="145.98987"
+         height="183.63167"
+         x="219.05891"
+         y="417.39328"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:20.84075737;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-opacity:1"
+         id="rect6443" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_41.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_41.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_41.svg	(revision 590)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(1.082866,0,0,1.1213034,-202.9737,-324.75211)"
+       id="g2552">
+      <path
+         d="M 420.22346 526.07269 A 72.225906 72.225906 0 1 1  275.77165,526.07269 A 72.225906 72.225906 0 1 1  420.22346 526.07269 z"
+         transform="matrix(1.793901,0,0,1.759529,-226.3569,-421.2793)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 349.00772 525.31506 A 4.2931485 5.8083773 0 1 1  340.42142,525.31506 A 4.2931485 5.8083773 0 1 1  349.00772 525.31506 z"
+         transform="matrix(2.024842,0,0,1.476896,-305.6869,-268.054)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1874" />
+      <path
+         d="M 391.3786,491.58647 L 384.2245,481.4665 L 391.3786,451.10659 L 391.3786,491.58647 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1876" />
+      <path
+         d="M 391.07227,491.58647 L 398.22637,481.4665 L 391.07227,451.10659 L 391.07227,491.58647 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1878" />
+      <g
+         transform="matrix(0,1.57571,-3.576656,-1.556359e-4,2364.573,-90.43622)"
+         id="g1884">
+        <path
+           d="M 380,547.36218 L 375,542.36218 L 380,527.36218 L 380,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1886" />
+        <path
+           d="M 379.91071,547.36218 L 384.91071,542.36218 L 379.91071,527.36218 L 379.91071,547.36218 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1888" />
+      </g>
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="translate(156.2568,208.1376)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 323.37891,304.46995 L 335.16406,303.73167 C 335.41926,305.64575 335.93879,307.10408 336.72266,308.10667 C 337.99868,309.72908 339.8216,310.54027 342.19141,310.54026 C 343.95961,310.54027 345.32224,310.12556 346.2793,309.29612 C 347.2363,308.46671 347.71482,307.50512 347.71484,306.41136 C 347.71482,305.37231 347.25909,304.44262 346.34766,303.6223 C 345.43617,302.802 343.32159,302.02726 340.00391,301.29808 C 334.5716,300.07674 330.69791,298.45435 328.38281,296.43089 C 326.04947,294.40748 324.88281,291.82805 324.88281,288.69261 C 324.88281,286.63274 325.47981,284.68678 326.67383,282.85472 C 327.86783,281.02272 329.6634,279.58262 332.06055,278.53441 C 334.45767,277.48627 337.74347,276.96218 341.91797,276.96214 C 347.04034,276.96218 350.94593,277.91465 353.63477,279.81956 C 356.32353,281.72455 357.92314,284.75514 358.43359,288.91136 L 346.75781,289.59495 C 346.44789,287.79029 345.7962,286.4778 344.80273,285.65745 C 343.80922,284.83717 342.43748,284.42702 340.6875,284.42698 C 339.24738,284.42702 338.16274,284.73236 337.43359,285.343 C 336.70441,285.95371 336.33983,286.69655 336.33984,287.57151 C 336.33983,288.20957 336.64061,288.78378 337.24219,289.29417 C 337.8255,289.82284 339.21092,290.31503 341.39844,290.77073 C 346.81247,291.93743 350.69073,293.11776 353.0332,294.31175 C 355.37562,295.50578 357.08004,296.9869 358.14648,298.75511 C 359.21285,300.52336 359.74606,302.50122 359.74609,304.6887 C 359.74606,307.25903 359.03512,309.62881 357.61328,311.79808 C 356.19137,313.96735 354.20439,315.61253 351.65234,316.73362 C 349.10023,317.85472 345.88279,318.41526 342,318.41526 C 335.18228,318.41526 330.46093,317.10277 327.83594,314.47776 C 325.21093,311.85277 323.72526,308.51684 323.37891,304.46995 L 323.37891,304.46995 z "
+         transform="translate(53.67975,300.184)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2037" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="translate(48.7288,113.1833)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <path
+         d="M 323.98047,297.71605 C 323.98047,291.1718 325.80338,286.07675 329.44922,282.43089 C 333.09504,278.7851 338.17186,276.96218 344.67969,276.96214 C 351.35153,276.96218 356.49215,278.75319 360.10156,282.33519 C 363.7109,285.91725 365.51558,290.93482 365.51563,297.38792 C 365.51558,302.07283 364.72717,305.91463 363.15039,308.91331 C 361.57353,311.91202 359.29488,314.24535 356.31445,315.91331 C 353.33395,317.58128 349.61976,318.41526 345.17188,318.41526 C 340.65102,318.41526 336.90949,317.69521 333.94727,316.25511 C 330.98502,314.81501 328.58333,312.53636 326.74219,309.41917 C 324.90104,306.302 323.98047,302.40096 323.98047,297.71605 L 323.98047,297.71605 z M 336.36719,297.77073 C 336.36717,301.81762 337.11912,304.72517 338.62305,306.49339 C 340.12693,308.26163 342.17316,309.14574 344.76172,309.14573 C 347.42315,309.14574 349.48304,308.27986 350.94141,306.54808 C 352.39971,304.81632 353.12887,301.70825 353.12891,297.22386 C 353.12887,293.45045 352.36781,290.69329 350.8457,288.95237 C 349.32354,287.21152 347.25909,286.34108 344.65234,286.34105 C 342.15493,286.34108 340.14972,287.22519 338.63672,288.99339 C 337.12368,290.76165 336.36717,293.68742 336.36719,297.77073 L 336.36719,297.77073 z "
+         transform="translate(-40.88264,207.4234)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2053" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,0.235703,-0.502149,0.502149,671.0318,92.90989)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2584" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,0.235703,-0.502149,0.502149,633.139,62.37056)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2586" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,-0.235703,0.502149,0.502149,-48.48814,267.3679)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2588" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,-0.235703,0.502149,0.502149,-7.893392,233.3536)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2590" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,-0.235703,0.502149,0.502149,107.2289,416.8547)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2592" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,-0.235703,0.502149,0.502149,146.5118,377.1568)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2594" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(-0.235703,-0.235703,0.502149,-0.502149,152.5393,940.9112)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2596" />
+      <path
+         d="M 356.25001 526.20148 A 6.1607141 6.1607141 0 1 1  343.92858,526.20148 A 6.1607141 6.1607141 0 1 1  356.25001 526.20148 z"
+         transform="matrix(0.235703,0.235703,-0.502149,0.502149,484.9749,217.1093)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke-width:9.39999962;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2598" />
+    </g>
+  </g>
+</svg>
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_23.svg
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_23.svg	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages/gvsig_23.svg	(revision 590)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!-- Copyright © 2008 by Silvio Grosso, under the terms of the GNU GPL version 2. -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   viewBox="0 0 450 500"
+   width="450"
+   height="500"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <g
+     id="layer1">
+    <g
+       transform="matrix(0.8532494,0,0,0.761749,-99.778453,-68.522937)"
+       id="g2351">
+      <path
+         d="M -28.571419 510.93362 A 127.14286 127.14286 0 1 1  -282.85714,510.93362 A 127.14286 127.14286 0 1 1  -28.571419 510.93362 z"
+         transform="matrix(0.8185667,0,0,0.8477863,506.79762,-8.5147898)"
+         style="opacity:0.97000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:6.91922426;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2259" />
+      <g
+         transform="matrix(0,-0.758562,0.763105,0,6.8490004,23.428044)"
+         id="g3314">
+        <path
+           d="M -472.14286,541.6479 L -432.85714,533.07647 L -428.57143,604.50504 L -472.14286,541.6479 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3308" />
+        <path
+           d="M -428.57142,605.93362 L -494.28571,575.21933 L -471.42857,540.93361 L -428.57142,605.93362 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3312" />
+      </g>
+      <g
+         transform="matrix(0,0.758562,-0.763105,0,751.15132,828.76865)"
+         id="g3321">
+        <path
+           d="M -472.14286,541.6479 L -432.85714,533.07647 L -428.57143,604.50504 L -472.14286,541.6479 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3323" />
+        <path
+           d="M -428.57142,605.93362 L -494.28571,575.21933 L -471.42857,540.93361 L -428.57142,605.93362 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3325" />
+      </g>
+      <g
+         transform="matrix(0.763105,0,0,0.758562,789.70201,45.208672)"
+         id="g3327">
+        <path
+           d="M -472.14286,541.6479 L -432.85714,533.07647 L -428.57143,604.50504 L -472.14286,541.6479 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3329" />
+        <path
+           d="M -428.57142,605.93362 L -494.28571,575.21933 L -471.42857,540.93361 L -428.57142,605.93362 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3331" />
+      </g>
+      <g
+         transform="matrix(-0.763105,0,0,-0.758562,-30.163195,805.00654)"
+         id="g3333">
+        <path
+           d="M -472.14286,541.6479 L -432.85714,533.07647 L -428.57143,604.50504 L -472.14286,541.6479 z "
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3335" />
+        <path
+           d="M -428.57142,605.93362 L -494.28571,575.21933 L -471.42857,540.93361 L -428.57142,605.93362 z "
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path3337" />
+      </g>
+      <path
+         d="M 338.63805,386.97205 L 379.69891,268.42909 L 420.75975,386.97205 L 543.94237,426.48637 L 420.75975,466.0007 L 379.69891,584.54365 L 338.63805,466.0007 L 215.45549,426.48637 L 338.63805,386.97205 z "
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.05603409px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1872" />
+      <path
+         d="M 418.12436,383.16019 L 383.47915,422.84897 L 383.47915,279.96937 L 418.12436,383.16019 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.4162693px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1892" />
+      <path
+         d="M 421.1571,460.61889 L 378.46158,428.38341 L 532.16537,428.38341 L 421.1571,460.61889 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.41973352px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1894" />
+      <path
+         d="M 335.88577,390.55616 L 377.15359,422.90219 L 228.5895,422.90219 L 335.88577,390.55616 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.30712128px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1896" />
+      <path
+         d="M 341.95835,480.83114 L 379.05515,441.08949 L 379.05515,584.15943 L 341.95835,480.83114 z "
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.67929459px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path1898" />
+      <path
+         d="M 325.51172,277.64573 L 358.70703,277.64573 L 358.70703,286.20433 L 337.92578,286.20433 L 337.92578,292.57542 L 357.20313,292.57542 L 357.20313,300.7512 L 337.92578,300.7512 L 337.92578,308.65355 L 359.30859,308.65355 L 359.30859,317.73167 L 325.51172,317.73167 L 325.51172,277.64573 z "
+         transform="matrix(1.2766808,0,0,1.2303519,151.83018,56.391499)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2029" />
+      <path
+         d="M 325.62109,277.64573 L 337.1875,277.64573 L 352.28125,299.82151 L 352.28125,277.64573 L 363.95703,277.64573 L 363.95703,317.73167 L 352.28125,317.73167 L 337.26953,295.71995 L 337.26953,317.73167 L 325.62109,317.73167 L 325.62109,277.64573 z "
+         transform="matrix(1.2766808,0,0,1.2303519,-61.418448,-143.70626)"
+         style="font-size:56px;font-family:Arial Black"
+         id="flowRoot2045" />
+      <path
+         d="M 79.802052 680.62604 A 24.748737 26.263966 0 1 1  30.304577,680.62604 A 24.748737 26.263966 0 1 1  79.802052 680.62604 z"
+         transform="matrix(0.763105,0,0,0.758562,340.01378,-89.163903)"
+         style="opacity:0.97000002;fill:#000000;fill-opacity:1;stroke:none;stroke-width:20.46800041;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path10789" />
+    </g>
+  </g>
+</svg>

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/northimages
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-ungroup.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-ungroup.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-pan.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-pan.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-view.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-view.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-undo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-undo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-position.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-position.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-pan.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-pan.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-image.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-image.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-back.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-line.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-line.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-point.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-point.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-north.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-north.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-polyline.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-polyline.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-export-to-pdf.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-export-to-pdf.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-all.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-all.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-redo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-redo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-real.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-real.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-in-center.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-in-center.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-locator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-locator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-rectangle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-rectangle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-group.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-group.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-all.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-all.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-delete.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-delete.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-layout-template-open.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-layout-template-open.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-edit-vertex.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-edit-vertex.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-tag.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-tag.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-scalebar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-scalebar.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-add-border.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-add-border.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-in-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-in-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-out-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-out-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-page-setup.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-page-setup.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-print.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-print.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-bring-to-front.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-bring-to-front.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/selection-by-rectangle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/selection-by-rectangle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-text.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-text.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-in-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-in-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-show-tags.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-show-tags.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-out-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-view-navigation-zoom-out-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-polygon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-polygon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-box.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-box.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-export-to-postscript.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-export-to-postscript.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-legend.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-legend.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-send-back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-graphic-send-back.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-undo-redo-actions.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/edit-undo-redo-actions.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-circle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-insert-circle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-out-center.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-out-center.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-selected.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/layout-navigation-zoom-selected.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-layout-template-save.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action/application-layout-template-save.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/action
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-view-navigation-zoom-in-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-view-navigation-zoom-in-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-view-navigation-zoom-out-topoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-view-navigation-zoom-out-topoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-polygon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-polygon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-graphic-edit-vertex.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-graphic-edit-vertex.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-point.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-point.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-polyline.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-polyline.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-complex.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-complex.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-navigation-zoom-in-topoint.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-navigation-zoom-in-topoint.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-navigation-zoom-out-topoint.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-navigation-zoom-out-topoint.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-simple.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-simple.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-circle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-circle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-by-rectangle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-selection-by-rectangle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-rectangle.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor/cursor-layout-insert-rectangle.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/cursor
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/nresize-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/graphic-move-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/graphic-move-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-space-down-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-space-down-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/layout-pan-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-down-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-down-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distcenterh-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distcenterh-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-right-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-right-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distleft-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distleft-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/eresize-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-up-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-up-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-width-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-width-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/barra2-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/right-rotation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/right-rotation-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-other-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-other-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distcenterv-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distcenterv-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distdown-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distdown-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/sereresize-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distright-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distright-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/neresize-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

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

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-inlayout-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-inlayout-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/left-rotation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/left-rotation-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-center-h-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-center-h-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-space-right-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-space-right-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distup-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-distup-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/symboltag-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-height-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-size-height-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-center-v-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-center-v-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/numero-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/barra1-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/barra3-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-left-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout/text-left-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/layout
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


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

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

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

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/document/document-map-icon-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images/document
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/images
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text.properties
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 590)
@@ -0,0 +1,56 @@
+Encuadre_Vista=Encuadre sobre la vista
+Zoom_Completo_Vista=Zoom completo sobre la vista
+Zoom_Mas_Vista=Zoom m\u00e1s sobre la vista
+Zoom_Menos_Vista=Zoom menos sobre la vista
+seleccionar_por_rectangulo=Seleccionar por rect\u00e1ngulo
+pila_de_comandos=Pila de comandos
+Imprimir=Imprimir
+tamano_posicion=Tama\u00f1o/posici\u00f3n
+insertar_localizador=Insertar localizador
+_Undo_redo_history=Pila de comandos
+_Error_while_showing_print_dialog=Error al mostrar di�logo de impresi�n
+_Some_views_excluded_from_list_because_have_editing_layers=Algunas vistas se han exclu�do de la lista por tener capas en edici�n
+_Cannot_draw_view_if_layers_in_editing_mode=No es posible dibujar vista con capas en edici�n
+_Layout_template=Plantilla de mapa
+_Cant_load_layout_template=No se ha podido abrir plantilla de mapa
+_Bad_format_in_layout_template=Formato inv�lido en plantilla de mapa
+Mapa=Mapa
+High_600_dpi=Alta: 600 puntos por pulgada
+Normal_300_dpi=Normal: 300 puntos por pulgada
+Low_72_dpi=Baja: 72 puntos por pulgada
+Create_new_view=Crear nueva Vista
+Insert_view=Insertar vista
+Configure_view=Configurar vista
+Grid_and_ruler=Malla y regla
+Show_page_config_dialog_when_layout_document_is_created=Mostrar el di�logo de configuraci�n de p�gina cuando se crea un documento Mapa
+User_interface=Interfaz de usuario
+Show_table_of_contents_TOC_for_Layout_views=Mostrar tabla de contenidos (TOC) para las vistas del Layout
+Synchronize_layers=Sincronizar capas
+Synchronize_extents=Sincronizar extensi�n del mapa
+Warning_Enabling_layer_synchronization_will_discard_any_change_not_present_in_associated_view=��Cuidado!! Al activar la sincronizaci�n de capas se perder� cualquier cambio que no est� presente en la vista asociada
+Warning_Layer_sync=Aviso: sincronizaci�n de capas
+Top_extent_lbl=Superior
+Bottom_extent_lbl=Inferior
+Left_extent_lbl=Izquierda
+Right_extent_lbl=Derecha
+Synchronization_of_the_view_and_the_frame_view=Sincronizaci�n de la vista y el marco de la vista
+Fixed_scale_and_extent=Escala y extensi�n fijos
+Non_fixed=No fija
+Fixed_scale=Escala fija
+Fixed_extent=Extensi�n fija
+1__=1:
+Extent_cant_be_synchronized_when_using_fixed_scale_or_fixed_extent=La extensi�n no se puede sincronizar en modo escala fija o extensi�n fija
+Number_format=Formato de n�mero
+Interval=Intervalo
+Number_of_horizontal_divisions=N�mero de divisiones horizontales
+Number_of_vertical_divisions=N�mero de divisiones verticales
+Label=Etiqueta
+Horizontal_label_rotation=Rotaci�n horizontal
+Vertical_label_rotation=Rotaci�n vertical
+Font_type=Tipo de letra
+Decimal_separator=Separador decimal
+Thousands_separator=Separador de miles
+Decimal_digits=D�gitos decimales
+Anchor=Anclaje
+Corner=Lateral
+Center=Centro
\ No newline at end of file
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 590)
@@ -0,0 +1,56 @@
+Encuadre_Vista=View frame pan
+Zoom_Completo_Vista=Full zoom on view
+Zoom_Mas_Vista=Zoom in on view
+Zoom_Menos_Vista=Zoom out on view
+seleccionar_por_rectangulo=Select by rectangle
+pila_de_comandos=Command stack
+Imprimir=Print
+tamano_posicion=Size/location
+insertar_localizador=Insert locator
+_Undo_redo_history=Command stack
+_Error_while_showing_print_dialog=Error while showing print dialog
+_Some_views_excluded_from_list_because_have_editing_layers=Some views where excluded from the list because they have layers in editing mode
+_Cannot_draw_view_if_layers_in_editing_mode=Cannot draw view containing layers in editing mode
+_Layout_template=Layout template
+_Cant_load_layout_template=Unable to open layout template
+_Bad_format_in_layout_template=Bad format in layout template
+Mapa=Map
+High_600_dpi=High: 600 dots per inch
+Normal_300_dpi=Normal: 300 dots per inch
+Low_72_dpi=Low: 72 dots per inch
+Create_new_view=Create new View
+Insert_view=Insert view
+Configure_view=Configure view
+Grid_and_ruler=Grid and ruler
+Show_page_config_dialog_when_layout_document_is_created=Show the page config dialog when layout document is created
+User_interface=User interface
+Show_table_of_contents_TOC_for_Layout_views=Show table of contents (TOC) for Layout views
+Synchronize_layers=Synchronize layers
+Synchronize_extents=Synchronize map extent
+Warning_Enabling_layer_synchronization_will_discard_any_change_not_present_in_associated_view=Warning!! Enabling layer synchronization will discard any change not present in the associated view
+Warning_Layer_sync=Warning: Layer synchronization
+Top_extent_lbl=Top
+Bottom_extent_lbl=Bottom
+Left_extent_lbl=Left
+Right_extent_lbl=Right
+Synchronization_of_the_view_and_the_frame_view=Synchronization of the view and the frame view
+Fixed_scale_and_extent=Fixed scale and extent
+Non_fixed=Non fixed
+Fixed_scale=Fixed scale
+Fixed_extent=Fixed extent
+1__=1:
+Extent_cant_be_synchronized_when_using_fixed_scale_or_fixed_extent=Extent can\'t be synchronized when using fixed scale or fixed extent
+Number_format=Number format
+Interval=Interval
+Number_of_horizontal_divisions=Number of horizontal divisions
+Number_of_vertical_divisions=Number of vertical divisions
+Label=Label
+Horizontal_label_rotation=Horizontal label rotation
+Vertical_label_rotation=Vertical label rotation
+Font_type=Font type
+Decimal_separator=Decimal separator
+Thousands_separator=Thousands separator
+Decimal_digits=Decimal digits
+Anchor=Anchor
+Corner=Corner
+Center=Center
\ No newline at end of file

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/main
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/site
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/README.txt
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/README.txt	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/README.txt	(revision 590)
@@ -0,0 +1,8 @@
+Put into this folder the resources needed by your test classes.
+
+This folder is added to the Tests classpath, so you can load any resources 
+through the ClassLoader.
+
+By default, in this folder you can find an example of log4j configuration,
+prepared to log messages through the console, so logging works when you
+run your tests classes.
\ No newline at end of file
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/log4j.xml
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/log4j.xml	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources/log4j.xml	(revision 590)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- 
+Log4J configuration file for unit tests execution.
+ -->
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+	<!-- Appender configuration to show logging messages through the console -->
+	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+		<layout class="org.apache.log4j.PatternLayout">
+			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
+		</layout>
+	</appender>
+
+	<!-- 
+	Activate logging messages of DEBUG level of higher only for the
+	org.gvsig.tools packages.
+	You can put full classes names or packages instead, to configure
+	logging for all the classes and subpackages of the package.
+	-->
+	<category name="org.gvsig.tools">
+		<priority value="DEBUG" />
+	</category>
+	<category name="org.gvsig.app.document.layout">
+		<priority value="DEBUG" />
+	</category>
+
+	<!-- 
+	By default, show only logging messages of INFO level or higher, 
+	through the previously configured CONSOLE appender. 
+	-->
+	<root>
+		<priority value="INFO" />
+		<appender-ref ref="CONSOLE" />
+	</root>
+</log4j:configuration>
\ No newline at end of file

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/resources
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig/app/document/layout/app/extension
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig/app/document/layout/app
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig/app/document/layout
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig/app/document
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig/app
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org/gvsig
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java/org
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test/java
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src/test
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/src
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/pom.xml
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/pom.xml	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/pom.xml	(revision 590)
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<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>
+    <packaging>jar</packaging>
+    <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
+    <name>${project.artifactId}</name>
+
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.app.document.layout2.app</artifactId>
+        <version>2.0.86</version>
+    </parent>
+    
+    <dependencies>
+
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.app.mainplugin</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.andami</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.control</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.tools.swing.api</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.fmap.mapcontext.operation</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.geometry.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.utils</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.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.compat.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.projection.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.symbology.lib.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.symbology.swing.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.lowagie</groupId>
+            <artifactId>itext</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-gvt</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-script</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        
+        <!--
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>batik-ext-gvsig-custom</artifactId>
+        </dependency>
+        -->
+        
+        <dependency>
+            <groupId>com.sun</groupId>
+            <artifactId>jimi</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.i18n</artifactId>
+            <scope>compile</scope>
+        </dependency>
+
+    </dependencies>
+
+    <properties>
+	<gvsig.package.info.name>Document: Layout document plugin, version 2</gvsig.package.info.name>
+        <gvsig.package.info.dependencies>conflict: org.gvsig.app.document.layout1.app.mainplugin -ge 1, required: org.gvsig.app.mainplugin -ge 2.1.0</gvsig.package.info.dependencies>
+        <gvsig.package.info.categories>Layout</gvsig.package.info.categories>
+	<gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-app-document-layout/pool</gvsig.package.info.poolURL>
+	<gvsig.package.info.sourcesURL>http://devel.gvsig.org/svn/gvsig-app-document-layout/trunk/org.gvsig.app.document.layout2.app</gvsig.package.info.sourcesURL>
+	<gvsig.package.info.state>final</gvsig.package.info.state>
+        <gvsig.package.info.official>true</gvsig.package.info.official>
+        <gvsig.package.info.codealias>org.gvsig.app.document.layout.app.mainplugin</gvsig.package.info.codealias>
+
+    </properties>
+
+</project>
+
Index: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/buildNumber.properties
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/buildNumber.properties	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin/buildNumber.properties	(revision 590)
@@ -0,0 +1,2 @@
+#Sun Aug 21 22:22:38 CEST 2016
+buildNumber=105

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/org.gvsig.app.document.layout2.app.mainplugin
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath
target



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src/main/config
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src/main/resources
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src/main/assembly
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src/main
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src/site
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath



Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86/src
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


Index: tags/org.gvsig.app.document.layout2.app-2.0.86/pom.xml
===================================================================
--- tags/org.gvsig.app.document.layout2.app-2.0.86/pom.xml	(revision 0)
+++ tags/org.gvsig.app.document.layout2.app-2.0.86/pom.xml	(revision 590)
@@ -0,0 +1,72 @@
+<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/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.gvsig.app.document.layout2.app</artifactId>
+    <packaging>pom</packaging>
+    <version>2.0.86</version>
+
+    <name>${project.artifactId}</name>
+    <description>This plugin adds creation/management of layout (map) documents.</description>
+
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.desktop</artifactId>
+        <version>2.0.148</version>
+    </parent>
+
+	<url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout</url>
+
+    <scm>
+        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-app-document-layout/tags/org.gvsig.app.document.layout2.app-2.0.86</connection>
+        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-app-document-layout/tags/org.gvsig.app.document.layout2.app-2.0.86</developerConnection>
+        <url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout/repository/show/tags/org.gvsig.app.document.layout2.app-2.0.86</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>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-release-plugin</artifactId>
+				<configuration>
+					<tagBase>https://devel.gvsig.org/svn/gvsig-app-document-layout/tags</tagBase>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+    <dependencyManagement>
+         <dependencies>
+            <!--
+            Versions of child projects
+            -->
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.app.document.layout2.app.mainplugin</artifactId>
+                <version>2.0.86</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+	<modules>
+		<module>org.gvsig.app.document.layout2.app.mainplugin</module>
+	</modules>
+
+</project>

Property changes on: tags/org.gvsig.app.document.layout2.app-2.0.86
___________________________________________________________________
Added: svn:ignore
   + .project
.settings
.classpath


