Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/distribution/distribution.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/distribution/distribution.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/distribution/distribution.xml	(revision 38357)
@@ -0,0 +1,2 @@
+<assembly>
+</assembly>
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/distribution/distribution.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/buildNumber.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/buildNumber.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/buildNumber.properties	(revision 38357)
@@ -0,0 +1,3 @@
+#maven.buildNumber.plugin properties file
+#Tue May 29 16:41:39 CEST 2012
+buildNumber=2055
Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/buildNumber.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/buildNumber.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/buildNumber.properties	(revision 38357)
@@ -0,0 +1,3 @@
+#maven.buildNumber.plugin properties file
+#Tue May 29 16:41:40 CEST 2012
+buildNumber=2047
Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/README.txt
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/README.txt	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/README.txt	(revision 38357)
@@ -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

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/README.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/log4j.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/log4j.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/log4j.xml	(revision 38357)
@@ -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.hyperlink">
+		<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/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/log4j.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ru.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ru.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ru.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [ru]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=\u041e\u041a
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=\u041f\u043e\u043b\u0435
+Cancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
+Capa=\u0421\u043b\u043e\u0439
+de=\u0438\u0437
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ru.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_de.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_de.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_de.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [de]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=10 Seiten vor
+Aceptar=OK
+Action=Verbindung
+Actions=Eigenschaften
+Add_action=Link hinzuf\u00fcgen
+Advanced_Hyperlink=Erweiterung Hyperlink
+Campo=Feld
+Cancel=Abbrechen
+Capa=Layer
+de=von
+diez_paginas_atras=
+Enable_hyperlink=Hyperlink an
+Error\ reading\ layer\ fields=
+Extension=Erweiterung
+HTML_and_text_formats=Link zu Text und html
+Hyperlink=Hyperlink
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Einstellungen Hyperlink
+Image_format=Link zu Bildern
+imprimir=
+Load_Raster_Layer=Raster-Layer
+Load_Vector_Layer=Vektor-Layer
+Loads_raster_layers_in_gvSIG=Raster-Layer werden in der aktiven Ansicht geladen
+Loads_vector_layers_in_gvSIG=Vektor-Layer werden in der aktiven Ansicht geladen
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Link zu pdf
+pdf_viewer=
+primera_pagina=
+Remove_action=Link entfernen
+Shows_HTML_or_text_files_in_gvSIG=Zeigt HTML- oder Text-Dateien in gvSIG an
+Shows_image_files_in_gvSIG=Bild-Dateien in gvSIG anzeigen
+Shows_PDF_files_in_gvSIG=PDF- Dateien in gvSIG anzeigen
+Shows_SVG_files_in_gvSIG=SVG-Dateien in gvSIG anzeigen
+SVG_format=Link zu svg
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_de.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sw.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sw.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sw.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [sw]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Idhinisha
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=Safu/Eneo lililowazi
+Cancel=Futa
+Capa=Safu/Tabata
+de=ya
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sw.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_el.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_el.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_el.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [el]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=\u03a0\u03b5\u03b4\u03af\u03bf
+Cancel=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
+Capa=\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03bf
+de=\u03c4\u03bf\u03c5
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_el.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en.properties	(revision 38357)
@@ -0,0 +1,44 @@
+#Translations for language [en]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Accept
+Action=Action
+Actions=Actions
+Add_action=Add action
+Advanced_Hyperlink=Advanced Hyperlink
+Campo=Field
+Cancel=Cancel
+Capa=Layer
+de=of
+diez_paginas_atras=
+Enable_hyperlink=Enable hyperlink
+Error\ reading\ layer\ fields=
+Extension=Extension
+HTML_and_text_formats=Link to text and HTML files
+Hyperlink=Hyperlink
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_settings=Hyperlink settings
+Hyperlink_Settings=Hyperlink Settings
+Image_format=Link to image files
+imprimir=
+Load_Raster_Layer=Load raster layer
+Load_Vector_Layer=Load Vector Layer
+Loads_raster_layers_in_gvSIG=Loads raster layers in active view
+Loads_vector_layers_in_gvSIG=Loads vector layers in active view
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Link to PDF files
+pdf_viewer=
+primera_pagina=
+Remove_action=Remove action
+Shows_HTML_or_text_files_in_gvSIG=Use internal viewer for HTML and text files
+Shows_HTML_or_text_files_inside_gvSIG=Shows HTML or text files in gvSIG
+Shows_image_files_in_gvSIG=Shows image files in gvSIG
+Shows_PDF_files_in_gvSIG=Shows PDF files in gvSIG
+Shows_SVG_files_in_gvSIG=Shows SVG files in gvSIG
+SVG_format=Link to SVG files
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_gl.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_gl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_gl.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [gl]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Aceptar
+Action=Acci\u00f3n
+Actions=Acci\u00f3ns
+Add_action=Engadir acci\u00f3n
+Advanced_Hyperlink=Hiperenlace avanzado
+Campo=Campo
+Cancel=Cancelar
+Capa=Capa
+de=de
+diez_paginas_atras=
+Enable_hyperlink=Activar hiperenlace
+Error\ reading\ layer\ fields=
+Extension=Extensi\u00f3n
+HTML_and_text_formats=Enlazar con arquivos de texto e HTML
+Hyperlink=Hiperenlace
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Configurar Hiperenlace
+Image_format=Enlazar con arquivos de imaxe
+imprimir=
+Load_Raster_Layer=Cargar capa r\u00e1ster
+Load_Vector_Layer=Cargar capa vectorial
+Loads_raster_layers_in_gvSIG=Carga capas raster na vista activa
+Loads_vector_layers_in_gvSIG=Carga capas vectoriais na vista activa
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Enlazar con arquivos PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Eliminar acci\u00f3n
+Shows_HTML_or_text_files_in_gvSIG=Amosa arquivos HTML ou de texto en gvSIG
+Shows_image_files_in_gvSIG=Amosa imaxes en gvSIG
+Shows_PDF_files_in_gvSIG=Amosa arquivos PDF en gvSIG
+Shows_SVG_files_in_gvSIG=Amosa arquivos SVG en gvSIG
+SVG_format=Enlazar cos arquivos SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_gl.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/config.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/config.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/config.xml	(revision 38357)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<plugin-config>
+	<depends plugin-name="org.gvsig.app" />
+	<resourceBundle name="text"/>
+	<libraries library-dir="lib"/>
+	<extensions>
+		<extension class-name="org.gvsig.hyperlink.app.extension.HyperlinkExtension"
+			description=""
+			active="true"
+			priority="20">
+			<menu text="Capa/Advanced_Hyperlink" action-command="HYPERLINK" icon="images/Link.png" position="5040"/>
+			<tool-bar name="View_Tools_Query" position="5">
+				<selectable-tool icon="view-query-link" action-command="HYPERLINK"  tooltip="Advanced_Hyperlink" position="7"/>
+			</tool-bar>
+		</extension>		
+	</extensions>
+</plugin-config>

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/config.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_cs.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_cs.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_cs.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [cs]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Budi\u017e
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=Pole
+Cancel=Zru\u0161it
+Capa=Vrstva
+de=of
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_cs.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt_BR.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt_BR.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt_BR.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [pt_BR]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=10 p\u00e1ginas adiante
+Aceptar=Aceitar
+Action=A\u00e7\u00e3o
+Actions=A\u00e7\u00f5es
+Add_action=Adicionar a\u00e7\u00e3o
+Advanced_Hyperlink=Hiperlink avan\u00e7ado
+Campo=Campo
+Cancel=Cancelar
+Capa=Plano de Informa\u00e7\u00e3o
+de=de
+diez_paginas_atras=
+Enable_hyperlink=Ativar hiperlink
+Error\ reading\ layer\ fields=
+Extension=Extens\u00e3o
+HTML_and_text_formats=Linkar com arquivo de texto e HTML
+Hyperlink=Hiperlink
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Configurar hiperlink
+Image_format=Link com arquivo de imagem
+imprimir=
+Load_Raster_Layer=Carregar plano de informa\u00e7\u00e3o de imagem
+Load_Vector_Layer=Carregar Plano de Informa\u00e7\u00e3o Vetorial
+Loads_raster_layers_in_gvSIG=Carregar plano de informa\u00e7\u00e3o de imagem no bloco ativo.
+Loads_vector_layers_in_gvSIG=Carregar plano de informa\u00e7\u00e3o vetorial no Bloco ativo
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Conectar com arquivo PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Remover edi\u00e7\u00e3o
+Shows_HTML_or_text_files_in_gvSIG=Mostrar arquivos HTML ou de texto no gvSIG
+Shows_image_files_in_gvSIG=Mostrar imagem no gvSIG
+Shows_PDF_files_in_gvSIG=Mostrar arquivo PDF no gvSIG
+Shows_SVG_files_in_gvSIG=Mostrar arquivo SVG no gvSIG
+SVG_format=Linkar ao arquivo SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt_BR.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/back.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/back.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/forward.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/forward.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/end.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/end.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/fback.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/fback.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/fforward.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/fforward.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/LinkCursor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/LinkCursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/Link.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/Link.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/print.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/print.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/start.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/images/start.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_fr.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_fr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_fr.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [fr]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Accepter
+Action=Op\u00e9ration
+Actions=Op\u00e9rations
+Add_action=Ajouter op\u00e9ration
+Advanced_Hyperlink=Hyperlien avanc\u00e9
+Campo=Champ
+Cancel=Annuler
+Capa=Couche
+de=de
+diez_paginas_atras=
+Enable_hyperlink=Activer hyperlien
+Error\ reading\ layer\ fields=
+Extension=Extension
+HTML_and_text_formats=Lier \u00e0 des fichiers texte ou HTML
+Hyperlink=Hyperlien
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Configuration hyperlien
+Image_format=Lier \u00e0 des fichiers image
+imprimir=
+Load_Raster_Layer=Charger une couche Raster
+Load_Vector_Layer=Charger couche vecteur
+Loads_raster_layers_in_gvSIG=Charger des couches Raster dans la vue active
+Loads_vector_layers_in_gvSIG=Charger des couches vecteurs dans la vue active
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Lier \u00e0 des fichiers PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Supprimer op\u00e9ration
+Shows_HTML_or_text_files_in_gvSIG=Affiche les fichiers HTML ou texte dans gvSIG
+Shows_image_files_in_gvSIG=Affiche les fichiers images dans gvSIG
+Shows_PDF_files_in_gvSIG=Affiche les fichiers PDF dans gvSIG
+Shows_SVG_files_in_gvSIG=Affiche les fichiers SVG dans gvSIG
+SVG_format=Lier \u00e0 des fichiers SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_fr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en_US.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en_US.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en_US.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [en_US]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Ok
+Action=Action
+Actions=Actions
+Add_action=Add action
+Advanced_Hyperlink=Advanced hyperlink
+Campo=Field
+Cancel=Cancel
+Capa=Layer
+de=of
+diez_paginas_atras=
+Enable_hyperlink=Enable hyperlinks
+Error\ reading\ layer\ fields=
+Extension=Extension
+HTML_and_text_formats=Link to text and HTML files
+Hyperlink=Hyperlink
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Hyperlink settings
+Image_format=Link to image files
+imprimir=
+Load_Raster_Layer=Load raster layer
+Load_Vector_Layer=Load vector layer
+Loads_raster_layers_in_gvSIG=Loads raster layers into active view
+Loads_vector_layers_in_gvSIG=Loads vector layers into active view
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Link to PDF files
+pdf_viewer=
+primera_pagina=
+Remove_action=Remove action
+Shows_HTML_or_text_files_in_gvSIG=Use internal viewer for HTML and text files
+Shows_image_files_in_gvSIG=Use internal viewer for image files
+Shows_PDF_files_in_gvSIG=Use internal viewer for PDF files
+Shows_SVG_files_in_gvSIG=Use internal viewer for SVG files
+SVG_format=Link to SVG files
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_en_US.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_eu.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_eu.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_eu.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [eu]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Ados
+Action=Ekintza
+Actions=Ekintzak
+Add_action=Gehitu ekintza
+Advanced_Hyperlink=Hiperesteka aurreratua
+Campo=Eremua
+Cancel=Utzi
+Capa=Geruza
+de=hemendik
+diez_paginas_atras=
+Enable_hyperlink=Aktibatu hiperesteka
+Error\ reading\ layer\ fields=
+Extension=Luzapena
+HTML_and_text_formats=Estekatu testu-fitxategietara eta HTML-ra
+Hyperlink=Hiperesteka
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Konfiguratu hiperestekak
+Image_format=Estekatu irudi-fitxaregietara
+imprimir=
+Load_Raster_Layer=Kargatu raster geruza
+Load_Vector_Layer=Kargatu geruza bektoriala
+Loads_raster_layers_in_gvSIG=Geruza rasterrak kargatzen ditu bistan
+Loads_vector_layers_in_gvSIG=Geruza bektorialak kargatzen ditu bistan
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Estekatu PDF fitxategiei
+pdf_viewer=
+primera_pagina=
+Remove_action=Kendu ekintza
+Shows_HTML_or_text_files_in_gvSIG=HTML fitxategiak edo testu-fitxategiak  erakusten ditu gvSIGen
+Shows_image_files_in_gvSIG=Irudiak erakusten ditu gvSIGen
+Shows_PDF_files_in_gvSIG=PDF fitxategiak erakusten ditu gvSIGen
+Shows_SVG_files_in_gvSIG=SVG fitxategiak erakusten ditu gvSIGen
+SVG_format=SVG fitxategietara estekatu
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_eu.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_nl.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_nl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_nl.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [nl]
+#Tue Aug 11 10:49:14 CEST 2009
+10_paginas_delante=
+Aceptar=OK
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=
+Cancel=
+Capa=Laag
+de=
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_nl.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pl.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pl.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [pl]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Akceptuj
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=
+Cancel=
+Capa=Warstwa
+de=
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pl.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_it.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_it.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_it.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [it]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Accetta
+Action=Azione
+Actions=Azioni
+Add_action=Aggiungi azione
+Advanced_Hyperlink=Hyperlink avanzato
+Campo=Campo
+Cancel=Cancella
+Capa=Layer
+de=di
+diez_paginas_atras=
+Enable_hyperlink=Abilita hyperlink
+Error\ reading\ layer\ fields=
+Extension=Estensione
+HTML_and_text_formats=Collega a file di testo e HTML
+Hyperlink=Collegamento
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Impostazioni Collegamento
+Image_format=Collegamento a file immagine
+imprimir=
+Load_Raster_Layer=Carica Livello raster
+Load_Vector_Layer=Carica Livello vettoriale
+Loads_raster_layers_in_gvSIG=Carica i Livelli raster nella vista attiva
+Loads_vector_layers_in_gvSIG=Carica i Livelli vettoriali nella vista attiva
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Collega a file PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Annulla azione
+Shows_HTML_or_text_files_in_gvSIG=Mostra file HTLM o di testo in gvSIG
+Shows_image_files_in_gvSIG=Mostra file immagine in gvSIG
+Shows_PDF_files_in_gvSIG=Mostra file PDF in gvSIG
+Shows_SVG_files_in_gvSIG=Mostra file SVG in gvSIG
+SVG_format=Collega a file SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_it.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ro.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ro.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ro.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [ro]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Accept\u0103
+Action=Ac\u0163iune
+Actions=Ac\u0163iuni
+Add_action=Adaug\u0103 ac\u0163iune
+Advanced_Hyperlink=Hyperlink avansat
+Campo=C\u00e2mp
+Cancel=Anulez
+Capa=Strat
+de=0\=de 0
+diez_paginas_atras=
+Enable_hyperlink=Activa\u021bi hiperleg\u0103tur\u0103
+Error\ reading\ layer\ fields=
+Extension=Extensie
+HTML_and_text_formats=Leg\u0103tur\u0103 c\u0103tre fi\u0219iere text \u0219i .html
+Hyperlink=Hiperleg\u0103tur\u0103
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Set\u0103ri hiperleg\u0103tur\u0103
+Image_format=Leg\u0103tur\u0103 c\u0103tre imagine
+imprimir=
+Load_Raster_Layer=\u00cenc\u0103rcare rastru
+Load_Vector_Layer=\u00cenc\u0103rcare vector
+Loads_raster_layers_in_gvSIG=\u00cencarc\u0103 strate rastru \u00een vederea curent\u0103
+Loads_vector_layers_in_gvSIG=\u00cencarc\u0103 strate vector \u00een vederea curent\u0103
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Leg\u0103tur\u0103 la fi\u0219iere .pdf
+pdf_viewer=
+primera_pagina=
+Remove_action=Elimin\u0103 ac\u021biune
+Shows_HTML_or_text_files_in_gvSIG=Arat\u0103 fi\u0219iere .html sau text \u00een gvSIG
+Shows_image_files_in_gvSIG=Arat\u0103 fi\u0219iere imagini \u00een gvSIG
+Shows_PDF_files_in_gvSIG=Arat\u0103 fi\u0219iere .pdf \u00een gvSIG
+Shows_SVG_files_in_gvSIG=Arat\u0103 fi\u0219iere .svg \u00een gvSIG
+SVG_format=Leg\u0103tur\u0103 la fi\u0219iere .svg
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ro.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text.properties	(revision 38357)
@@ -0,0 +1,43 @@
+#Translations for language [es]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Aceptar
+Action=Acci\u00f3n
+Actions=Acciones
+Add_action=A\u00f1adir acci\u00f3n
+Advanced_Hyperlink=Hiperenlace avanzado
+Campo=Campo
+Cancel=Cancelar
+Capa=Capa
+de=de
+diez_paginas_atras=
+Enable_hyperlink=Activar hiperenlace
+Error\ reading\ layer\ fields=
+Extension=Extensi\u00f3n
+HTML_and_text_formats=Enlazar con ficheros de texto y HTML
+Hyperlink=Hiperenlace
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_settings=Configurar hiperenlace
+Hyperlink_Settings=Configurar Hiperenlace
+Image_format=Enlazar con ficheros de imagen
+imprimir=
+Load_Raster_Layer=Cargar capa r\u00e1ster
+Load_Vector_Layer=Cargar capa vectorial
+Loads_raster_layers_in_gvSIG=Carga capas r\u00e1ster en la vista activa
+Loads_vector_layers_in_gvSIG=Carga capas vectoriales en la vista activa
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Enlazar con ficheros PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Eliminar acci\u00f3n
+Shows_HTML_or_text_files_in_gvSIG=Muestra ficheros HTML o de texto en gvSIG
+Shows_image_files_in_gvSIG=Muestra im\u00e1genes en gvSIG
+Shows_PDF_files_in_gvSIG=Muestra ficheros PDF en gvSIG
+Shows_SVG_files_in_gvSIG=Muestra ficheros SVG en gvSIG
+SVG_format=Enlazar con ficheros SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_zh.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_zh.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_zh.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [zh]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=\u786e\u5b9a
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=\u5b57\u6bb5
+Cancel=\u53d6\u6d88
+Capa=\u56fe\u5c42
+de=
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_zh.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [pt]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Aceitar
+Action=
+Actions=
+Add_action=
+Advanced_Hyperlink=
+Campo=Campo
+Cancel=Cancelar
+Capa=Capa
+de=of
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=
+HTML_and_text_formats=
+Hyperlink=
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=
+Image_format=
+imprimir=
+Load_Raster_Layer=
+Load_Vector_Layer=
+Loads_raster_layers_in_gvSIG=
+Loads_vector_layers_in_gvSIG=
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=
+pdf_viewer=
+primera_pagina=
+Remove_action=
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=
+Shows_PDF_files_in_gvSIG=
+Shows_SVG_files_in_gvSIG=
+SVG_format=
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_pt.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ca.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ca.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ca.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [ca]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Acceptar
+Action=Acci\u00f3
+Actions=Accions
+Add_action=Afegir acci\u00f3
+Advanced_Hyperlink=Hiperenlla\u00e7 avan\u00e7at
+Campo=Camp
+Cancel=Cancel\u00b7lar
+Capa=Capa
+de=de
+diez_paginas_atras=
+Enable_hyperlink=Activar hiperenlla\u00e7
+Error\ reading\ layer\ fields=
+Extension=Extensi\u00f3
+HTML_and_text_formats=Enlla\u00e7ar amb fitxers de text i HTML
+Hyperlink=Hiperenlla\u00e7
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Configurar hiperenlla\u00e7
+Image_format=Enlla\u00e7ar amb fitxers d'imatge
+imprimir=
+Load_Raster_Layer=Carregar capa r\u00e0ster
+Load_Vector_Layer=Carregar capa vectorial
+Loads_raster_layers_in_gvSIG=Carrega capes r\u00e0ster en la vista activa
+Loads_vector_layers_in_gvSIG=Carrega capes vectorials en la vista activa
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Enlla\u00e7ar amb fitxers PDF
+pdf_viewer=
+primera_pagina=
+Remove_action=Eliminar acci\u00f3
+Shows_HTML_or_text_files_in_gvSIG=Mostra fitxers HTML o de text en gvSIG
+Shows_image_files_in_gvSIG=Mostra imatges en gvSIG
+Shows_PDF_files_in_gvSIG=Mostra fitxers PDF en gvSIG
+Shows_SVG_files_in_gvSIG=Mostra fitxers SVG en gvSI
+SVG_format=Enlla\u00e7ar amb fitxers SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_ca.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sr.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sr.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [sr]
+#Mon Nov 02 08:36:02 CET 2009
+10_paginas_delante=
+Aceptar=Prihvati
+Action=Aktivnost
+Actions=Aktivnosti
+Add_action=Dodaj aktivnost
+Advanced_Hyperlink=Napredni Hyperlink
+Campo=Polje
+Cancel=Odustani
+Capa=Lejer
+de=od
+diez_paginas_atras=
+Enable_hyperlink=Aktivirati hyperlink
+Error\ reading\ layer\ fields=
+Extension=Ekstenzija
+HTML_and_text_formats=Pove\u017ei sa datotekama teksta i HTML
+Hyperlink=Hyperlink
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Konfiguracija hyperlink-a
+Image_format=Pove\u017ei sa datotekama slika
+imprimir=
+Load_Raster_Layer=U\u010ditaj raster lejer
+Load_Vector_Layer=U\u010ditaj vektorski lejer
+Loads_raster_layers_in_gvSIG=U\u010ditavanje raster lejera u aktivnom prikazu
+Loads_vector_layers_in_gvSIG=U\u010ditavanje vektorskih lejera u aktivnom prikazu
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=Povezivanje sa PDF datotekama 
+pdf_viewer=
+primera_pagina=
+Remove_action=Ukloni akciju
+Shows_HTML_or_text_files_in_gvSIG=Prika\u017ei HTML datoteke ili tekstualne datoteke u gvSIG
+Shows_image_files_in_gvSIG=Prikazuje slike u gvSIG-u
+Shows_PDF_files_in_gvSIG=Prikazuje PDF datoteke u gvSIG-u
+Shows_SVG_files_in_gvSIG=Prikazuje SVG datoteke u gvSIG-u
+SVG_format=Pove\u017ei sa datotekama SVG
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_sr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_tr.properties
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_tr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_tr.properties	(revision 38357)
@@ -0,0 +1,42 @@
+#Translations for language [tr]
+#Mon Sep 21 10:02:06 CEST 2009
+10_paginas_delante=
+Aceptar=Kabul et
+Action=Eylem
+Actions=Eylemler
+Add_action=Eylem ekle
+Advanced_Hyperlink=Geli\u015fmi\u015f Ba\u011f
+Campo=Alan
+Cancel=\u0130ptal
+Capa=Katman
+de=
+diez_paginas_atras=
+Enable_hyperlink=
+Error\ reading\ layer\ fields=
+Extension=Eklenti
+HTML_and_text_formats=
+Hyperlink=Ba\u011f
+Hyperlink__field_value_is_not_valid_file=
+Hyperlink_linked_field_doesnot_exist=
+Hyperlink_Settings=Ba\u011f ayarlar\u0131
+Image_format=G\u00f6r\u00fcnt\u00fc dosyalar\u0131na ba\u011f
+imprimir=
+Load_Raster_Layer=Raster katman\u0131 y\u00fckle
+Load_Vector_Layer=Vekt\u00f6r katman\u0131 y\u00fckle
+Loads_raster_layers_in_gvSIG=Aktif penceredeki raster katmanlar\u0131 y\u00fckler
+Loads_vector_layers_in_gvSIG=Aktif penceredeki vekt\u00f6r katmanlar\u0131 y\u00fckler
+Pagina=
+pagina_atras=
+pagina_delante=
+PDF_format=PDf dosyalar\u0131na ba\u011f
+pdf_viewer=
+primera_pagina=
+Remove_action=Eylemi kald\u0131r
+Shows_HTML_or_text_files_in_gvSIG=
+Shows_image_files_in_gvSIG=gvSIG de g\u00f6r\u00fcnt\u00fc dosyalar\u0131n\u0131 g\u00f6sterir
+Shows_PDF_files_in_gvSIG=gvSIG de PDF dosyalar\u0131n\u0131 g\u00f6sterir
+Shows_SVG_files_in_gvSIG=gvSIG de SVG dosyalar\u0131n\u0131 g\u00f6sterir
+SVG_format=SVG dosyalar\u0131na ba\u011f
+ultima_pagina=
+valor_incorrecto=
+View_Tools_Query=

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/resources/text_tr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractActionManager.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractActionManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractActionManager.java	(revision 38357)
@@ -0,0 +1,45 @@
+/* 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.hyperlink.app.extension;
+
+import java.util.Map;
+
+public abstract class AbstractActionManager implements ILinkActionManager {
+
+    public boolean hasPanel() {
+        return false;
+    }
+
+    public Object create() {
+        return this;
+    }
+
+    public Object create(Object[] args) {
+        return this;
+    }
+
+    public Object create(Map args) {
+        return this;
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractActionManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ILinkActionManager.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ILinkActionManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ILinkActionManager.java	(revision 38357)
@@ -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.hyperlink.app.extension;
+
+import java.net.URI;
+
+import org.gvsig.tools.extensionpoint.ExtensionBuilder;
+
+/**
+ * TODO document this interface
+ * This interface must be implemented by format managers for the
+ * hyperlink tool. A manager is able to load an specific file, either
+ * by loading it in an AbstractHyperLinkPanel or by opening the proper
+ * program to do the task.
+ * 
+ * Format managers must be registered in the ExtensionPoint named
+ * "HyperLinkAction" in order to be available in the HyperLink tool.
+ * 
+ * @author cesar
+ * 
+ */
+public interface ILinkActionManager extends ExtensionBuilder {
+
+    public void showDocument(URI doc) throws UnsupportedOperationException;
+
+    public boolean hasPanel();
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException;
+
+    public String getActionCode();
+
+    public String getName();
+
+    public String getDescription();
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ILinkActionManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/IncompatibleLayerException.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/IncompatibleLayerException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/IncompatibleLayerException.java	(revision 38357)
@@ -0,0 +1,31 @@
+/* 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.hyperlink.app.extension.layers;
+
+public class IncompatibleLayerException extends Exception {
+
+    public IncompatibleLayerException(Throwable ex) {
+        super(ex);
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/IncompatibleLayerException.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ManagerRegistry.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ManagerRegistry.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ManagerRegistry.java	(revision 38357)
@@ -0,0 +1,143 @@
+/* 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.hyperlink.app.extension.layers;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+
+public class ManagerRegistry {
+
+    public static final String EXTENSIONPOINTNAME = "hyperlink.layer.manager";
+    private ExtensionPoint extensionPoint;
+    /**
+     * We will cache the proper manager for each class, so that we don't
+     * calculate the right one everytime.
+     * This assumes that no manager will be added after extensions' initialize()
+     * method, otherwise the
+     * cached values will be incorrect.
+     */
+    private HashMap<Class, String> cachedManagers;
+    /**
+     * We will also cache the unmanaged layers (layers without managers).
+     */
+    private HashSet<Class> cachedUnmanagedLayers;
+
+    public ManagerRegistry() {
+        ExtensionPointManager epm = ToolsLocator.getExtensionPointManager();
+        extensionPoint =
+            epm.add(EXTENSIONPOINTNAME,
+                "Registers ILinkToolManagers that are able to manage specific layer types.");
+        cachedManagers = new HashMap<Class, String>();
+        cachedUnmanagedLayers = new HashSet<Class>();
+    }
+
+    public void put(Class layerType, Class manager) {
+        if (layerType.isInterface()) {
+            throw new RuntimeException("Interfaces are not supported");
+        }
+        if (!ILinkLayerManager.class.isAssignableFrom(manager)) {
+            throw new RuntimeException("Managers must be of type ILinkLayerManager");
+        }
+        extensionPoint.append(layerType.getName(), "", manager);
+    }
+
+    public ILinkLayerManager get(FLayer layer) throws ClassNotFoundException,
+        InstantiationException,
+        IllegalAccessException,
+        IncompatibleLayerException {
+        if (cachedManagers.containsKey(layer.getClass())) {
+            String layerType = cachedManagers.get(layer.getClass());
+            ILinkLayerManager manager =
+                (ILinkLayerManager) extensionPoint.create(layerType);
+            manager.setLayer(layer);
+            return manager;
+        } else
+            if (cachedUnmanagedLayers.contains(layer.getClass())) {
+                return null;
+            }
+        // search for proper manager for this class
+        Iterator it = extensionPoint.getNames().iterator();
+        TreeSet<Class> classList = new TreeSet<Class>(new ClassComparator());
+        while (it.hasNext()) {
+            String layerType = it.next().toString();
+            Class layerClass = Class.forName(layerType);
+            if (layerClass.isInstance(layer)) {
+                classList.add(layerClass);
+            }
+        }
+
+        if (!classList.isEmpty()) {
+            ILinkLayerManager manager =
+                (ILinkLayerManager) extensionPoint.create(classList.first()
+                    .getName());
+            cachedManagers.put(layer.getClass(), classList.first().getName());
+            manager.setLayer(layer);
+            return manager;
+        } else {
+            cachedUnmanagedLayers.add(layer.getClass());
+            return null;
+        }
+    }
+
+    public boolean hasManager(FLayer layer) {
+        if (cachedManagers.containsKey(layer.getClass())) {
+            return true;
+        } else
+            if (cachedUnmanagedLayers.contains(layer.getClass())) {
+                return false;
+            }
+
+        Iterator it = extensionPoint.iterator();
+        while (it.hasNext()) {
+            Class layerClass = ((Extension) it.next()).getExtension();
+            if (layerClass.isInstance(layer)) {
+                return true;
+            }
+        }
+
+//        cachedUnmanagedLayers.add(layer.getClass());
+        return false;
+    }
+
+    private class ClassComparator implements Comparator<Class> {
+
+        public int compare(Class class1, Class class2) {
+            if (class1.equals(class2))
+                return 0;
+            if (class1.isAssignableFrom(class2)) {
+                return 1;
+            } else {
+                return -1;
+            }
+        }
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ManagerRegistry.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/VectLayerManager.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/VectLayerManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/VectLayerManager.java	(revision 38357)
@@ -0,0 +1,228 @@
+/* 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.hyperlink.app.extension.layers;
+
+import java.awt.geom.Point2D;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.tools.dataTypes.DataTypes;
+import org.gvsig.tools.dispose.DisposableIterator;
+
+public class VectLayerManager implements ILinkLayerManager {
+
+    private FLyrVect _layer = null;
+
+    public URI[] getLink(Point2D point,
+        double tolerance,
+        String fieldName,
+        String fileExtension) {
+        FLyrVect lyrVect = (FLyrVect) _layer;
+        ArrayList<URI> uriList = new ArrayList();
+        FeatureSet features;
+        FeatureType featureType;
+
+        try {
+            // FIXME: Habr� que ver como lo hacemos con las capas multigeometr�a
+            featureType = _layer.getFeatureStore().getDefaultFeatureType();
+            features = lyrVect.queryByPoint(point, tolerance, featureType);
+        } catch (Exception e) {
+            return null;
+        }
+
+        // Si el conjunto creado no est� vac�o creamos el vector de URLS
+        // correspondientes
+        // a la consulta que hemos hecho.
+
+        if (features != null) {
+            try {
+                DisposableIterator it;
+                it = features.iterator();
+                while (it.hasNext()) {
+                    Feature feature = (Feature) it.next();
+                    String fieldValue = feature.get(fieldName).toString();
+                    if (!fieldValue.equals("")) {
+                        try {
+                            uriList.add(getURI(fieldValue, fileExtension));
+                        } catch (URISyntaxException e) {
+                            NotificationManager.addWarning(PluginServices.getText(this,
+                                "Hyperlink__field_value_is_not_valid_file"),
+                                e);
+                        }
+                    }
+
+                }
+                it.dispose();
+                return (URI[]) uriList.toArray(new URI[0]);
+            } catch (DataException e1) {
+                PluginServices.getLogger()
+                    .error("Hyperlink__cant_get_the_iterator", e1);
+            }
+        }
+        return new URI[0];
+    }
+
+    protected URI getURI(String baseURI, String extension) throws URISyntaxException {
+        String stringURI;
+        if (extension.equals("")) {
+            stringURI = baseURI;
+        } else
+            if (extension.startsWith(".")) {
+                stringURI = baseURI + extension;
+            } else {
+                stringURI = baseURI + "." + extension;
+            }
+        File file = new File(stringURI);
+        if (file.exists()) {
+            return file.toURI();
+        } else {
+            return new URI(stringURI);
+        }
+    }
+
+    public FLayer getLayer() {
+        return _layer;
+    }
+
+    public void setLayer(FLayer layer) throws IncompatibleLayerException {
+        try {
+            _layer = (FLyrVect) layer;
+        } catch (ClassCastException ex) {
+            throw new IncompatibleLayerException(ex);
+        }
+    }
+
+    public Object create() {
+        return this;
+    }
+
+    public Object create(Object[] args) {
+        return this;
+    }
+
+    public Object create(Map args) {
+        return this;
+    }
+
+    public URI[][] getLink(Point2D point,
+        double tolerance,
+        String[] fieldName,
+        String fileExtension) {
+        FLyrVect lyrVect = (FLyrVect) _layer;
+        FeatureSet features;
+        FeatureType featureType;
+        URI uri[][] = null;
+
+        try {
+            // FIXME: Habr� que ver como lo hacemos con las capas multigeometr�a
+            featureType = _layer.getFeatureStore().getDefaultFeatureType();
+            features = lyrVect.queryByPoint(point, tolerance, featureType);
+        } catch (Exception e) {
+            return null;
+        }
+
+        // Si el conjunto creado no est� vac�o creamos el vector de URLS
+        // correspondientes
+        // a la consulta que hemos hecho.
+
+        if (features != null) {
+            try {
+                // Creo el vector de URL�s con la misma longitud que features
+                uri = new URI[(int) features.getSize()][fieldName.length];
+
+                // Recorremos las features siguiendo el ejemplo de la clase que
+                // se
+                // proporciona en la API
+                int count = 0;
+                DisposableIterator it = features.iterator();
+                while (it.hasNext()) {
+                    Feature feat = (Feature) it.next();
+                    for (int fieldCount = 0; fieldCount < fieldName.length; fieldCount++) {
+                        // get the field ID using the field name
+                        String auxField =
+                            feat.get(fieldName[fieldCount]).toString();
+                        if (auxField != null) {
+                            if (auxField.startsWith("http:/")) {
+                                try {
+                                    uri[count][fieldCount] = new URI(auxField);
+                                } catch (URISyntaxException e) {
+                                    PluginServices.getLogger().error("", e);
+                                }
+                            } else {
+                                File file = new File(auxField);
+                                uri[count][fieldCount] = file.toURI();
+                            }
+                        } else {
+                            PluginServices.getLogger()
+                                .error("Hyperlink error. Field "
+                                    + fieldName[fieldCount] + "doesn't exist!!");
+                            uri[count][fieldCount] = null;
+                        }
+                    }
+                    count++;
+                }
+                it.dispose();
+
+                return uri;
+            } catch (DataException e) {
+                PluginServices.getLogger().error("", e);
+            }
+        }
+        return new URI[0][0];
+    }
+
+    public String[] getFieldCandidates() {
+        try {
+            FeatureType featureType =
+                _layer.getFeatureStore().getDefaultFeatureType();
+            ArrayList<String> fields = new ArrayList<String>();
+            FeatureAttributeDescriptor[] descriptors =
+                featureType.getAttributeDescriptors();
+            for (int i = 0; i < descriptors.length; i++) {
+                FeatureAttributeDescriptor descriptor = descriptors[i];
+                if (descriptor.getDataType().isNumeric()
+                    || descriptor.getDataType().getType() == DataTypes.STRING) {
+                    fields.add(descriptor.getName());
+                }
+            }
+            return (String[]) fields.toArray(new String[0]);
+        } catch (DataException e) {
+            NotificationManager.addError(PluginServices.getText(this,
+                "Error reading layer fields"), e);
+        }
+        return new String[0];
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/VectLayerManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ILinkLayerManager.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ILinkLayerManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ILinkLayerManager.java	(revision 38357)
@@ -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.hyperlink.app.extension.layers;
+
+import java.awt.geom.Point2D;
+import java.net.URI;
+
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+
+public interface ILinkLayerManager {
+
+    public void setLayer(FLayer layer) throws IncompatibleLayerException;
+
+    public FLayer getLayer();
+
+    public URI[] getLink(Point2D point,
+        double tolerance,
+        String fieldName,
+        String fileExtension);
+
+    public URI[][] getLink(Point2D point,
+        double tolerance,
+        String[] fieldName,
+        String fileExtension);
+
+    public String[] getFieldCandidates();
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ILinkLayerManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkConfigExtension.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkConfigExtension.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkConfigExtension.java	(revision 38357)
@@ -0,0 +1,137 @@
+/* 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.hyperlink.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.view.ViewDocument;
+import org.gvsig.app.project.documents.view.gui.IView;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.hyperlink.app.extension.config.gui.ConfigTab;
+import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Extensi�n para gestionar los hiperlinks.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class LinkConfigExtension extends Extension {
+
+    private static final Logger logger =
+        LoggerFactory.getLogger(LinkConfigExtension.class);
+    ManagerRegistry layerManager;
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        logger.debug("Command : " + s);
+
+        if (s.compareTo("LINK_SETTINGS") == 0) {
+            IView view =
+                (IView) PluginServices.getMDIManager().getActiveWindow();
+            HyperlinkExtension ext =
+                (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
+            // init tool and load legacy config in case it has been not done
+            ext.initTool(view);
+            FLayer[] activas =
+                view.getMapControl().getMapContext().getLayers().getActives();
+            for (int i = 0; i < activas.length; i++) {
+                if (!activas[i].isAvailable()) {
+                    return;
+                }
+
+                if (layerManager.hasManager(activas[i])) {
+                    ConfigTab configWindow = new ConfigTab();
+                    configWindow.setModel(activas[i]);
+                    PluginServices.getMDIManager()
+                        .addCentredWindow(configWindow);
+                }
+            }
+
+        }
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow window = PluginServices.getMDIManager().getActiveWindow();
+
+        if (window == null) {
+            return false;
+        }
+
+        if (window instanceof IView) {
+
+            MapContext mapa =
+                ((IView) window).getViewDocument().getMapContext();
+
+            return mapa.getLayers().getLayersCount() > 0;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        // it will be enabled when there is only ONE active layer, and this
+        // layer
+        // is available and has a valid ILayerLinkManager
+        IWindow window = PluginServices.getMDIManager().getActiveWindow();
+
+        if (window == null) {
+            return false;
+        }
+
+        if (window instanceof IView) {
+            IView view = (IView) window;
+            ViewDocument model = view.getViewDocument();
+            FLayer[] activas = model.getMapContext().getLayers().getActives();
+            if (activas.length == 1) {
+                if (activas[0].isAvailable()
+                    && layerManager.hasManager(activas[0])) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    public void postInitialize() {
+        HyperlinkExtension ext =
+            (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
+        layerManager = ext.getLayerManager();
+    }
+
+    public void initialize() {
+        //Do nothing
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkConfigExtension.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ShowPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ShowPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ShowPanel.java	(revision 38357)
@@ -0,0 +1,181 @@
+/* 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.hyperlink.app.extension;
+
+import java.awt.BorderLayout;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.io.File;
+import java.net.MalformedURLException;
+
+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.WindowInfo;
+
+/**
+ * This class extends JPanel. This class implements a Panel to show the content
+ * of the URI
+ * that the constructor of the class receives. This panel invokes a new one with
+ * the content
+ * of the URI. The type of the supported URI should be added like extension
+ * point in the
+ * initialization of the extension.
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Eustaquio Vercher
+ * 
+ */
+public class ShowPanel extends JPanel implements IWindow, ComponentListener {
+
+    private JScrollPane jScrollPane = null;
+    private WindowInfo m_ViewInfo = null;
+    private AbstractHyperLinkPanel contents = null;
+    private static int xpos = 0;
+    private static int ypos = 0;
+
+    public ShowPanel(AbstractHyperLinkPanel contents) {
+        super();
+        this.contents = contents;
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     */
+    private void initialize() {
+        this.setLayout(new BorderLayout());
+        this.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
+        getJScrollPane().setViewportView(contents);
+    }
+
+    /**
+     * Returns a Scroll Pane with the content of the HyperLink
+     * 
+     * @return jScrollPane
+     */
+    private JScrollPane getJScrollPane() {
+        if (jScrollPane == null) {
+            jScrollPane = new JScrollPane();
+            // jScrollPane.setPreferredSize(new java.awt.Dimension(300, 400));
+        }
+        return jScrollPane;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
+     */
+    public WindowInfo getWindowInfo() {
+        if (m_ViewInfo == null) {
+            m_ViewInfo =
+                new WindowInfo(WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE
+                    | WindowInfo.ICONIFIABLE | WindowInfo.PALETTE);
+            if (contents.getURI().toString().startsWith("file:")
+                && contents.getURI().isAbsolute()) {
+                try {
+                    File file = new File(contents.getURI().toURL().getFile());
+                    m_ViewInfo.setTitle(PluginServices.getText(this,
+                        "Hyperlink") + " - " + file.getName());
+                } catch (MalformedURLException e) {
+                    m_ViewInfo.setTitle(PluginServices.getText(this,
+                        "Hyperlink") + " - " + contents.getURI().toString());
+                } catch (NullPointerException e) {
+                    m_ViewInfo.setTitle(PluginServices.getText(this,
+                        "Hyperlink") + " - " + contents.getURI().toString());
+                }
+            } else {
+                m_ViewInfo.setTitle(PluginServices.getText(this, "Hyperlink")
+                    + " - " + contents.getURI().toString());
+            }
+            int height = (int) contents.getPreferredSize().getHeight() + 15;
+            if (height > 650)
+                height = 650;
+            else
+                if (height < 450)
+                    height = 450;
+            int width = (int) contents.getPreferredSize().getWidth() + 20;
+            if (width > 800)
+                width = 800;
+            else
+                if (width < 450)
+                    width = 450;
+            m_ViewInfo.setWidth(width);
+            m_ViewInfo.setHeight(height);
+            m_ViewInfo.setX(xpos);
+            xpos = (xpos + 20) % 270;
+            m_ViewInfo.setY(ypos);
+            ypos = (ypos + 15) % 150;
+        }
+        return m_ViewInfo;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.
+     * ComponentEvent)
+     */
+    public void componentResized(ComponentEvent e) {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent
+     * )
+     */
+    public void componentMoved(ComponentEvent e) {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent
+     * )
+     */
+    public void componentShown(ComponentEvent e) {
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.
+     * ComponentEvent)
+     */
+    public void componentHidden(ComponentEvent e) {
+
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.EDITOR_PROFILE;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ShowPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgFormat.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgFormat.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgFormat.java	(revision 38357)
@@ -0,0 +1,59 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+public class SvgFormat extends AbstractActionManager implements Serializable {
+
+    public static final String actionCode = "SVG_format";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        return new SvgPanel(doc);
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return true;
+    }
+
+    public void showDocument(URI doc) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Shows_SVG_files_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "SVG_format");
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgFormat.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtFormat.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtFormat.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtFormat.java	(revision 38357)
@@ -0,0 +1,60 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+public class TxtFormat extends AbstractActionManager implements Serializable {
+
+    public static final String actionCode = "Txt_format";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        return new TxtPanel(doc);
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return true;
+    }
+
+    public void showDocument(URI doc) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Shows_HTML_or_text_files_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "HTML_and_text_formats");
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtFormat.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgPanel.java	(revision 38357)
@@ -0,0 +1,119 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.net.MalformedURLException;
+import java.net.URI;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+import com.sun.jimi.core.Jimi;
+
+/**
+ * This class extends AbstractHyperLink, and provides suppot to open images of
+ * many formats.
+ * The common supported formats are JPG, ICO, BMP, TIFF, GIF and PNG. Implements
+ * methods from
+ * IExtensionBuilder to make it extending.
+ * 
+ * @author Eustaquio Vercher (IVER)
+ * @author Cesar Martinez Izquierdo (IVER)
+ */
+public class ImgPanel extends AbstractHyperLinkPanel {
+
+    private static final long serialVersionUID = -5200841105188251551L;
+
+    /**
+     * Default constructor.
+     */
+    public ImgPanel(URI doc) {
+        super(doc);
+        initialize();
+    }
+
+    /**
+     * Initializes this panel.
+     */
+    void initialize() {
+        this.setLayout(new BorderLayout());
+        showDocument();
+        // this.setSize(600, 400);
+    }
+
+    /**
+     * Implements the necessary code to open images in this panel.
+     */
+    protected void showDocument() {
+        if (!checkAndNormalizeURI()) {
+            return;
+        }
+        ImageIcon image = null;
+        String iString = document.toString();
+        iString = iString.toLowerCase();
+
+        if (iString.endsWith("jpg") || iString.endsWith("jpeg")
+            || iString.endsWith("gif") || iString.endsWith("jp2")) {
+            // note: it seems jimi si not able to load .jp2 (jpeg2000)
+            try {
+                image = new ImageIcon(Jimi.getImage(document.toURL()));
+            } catch (MalformedURLException e) {
+                NotificationManager.addWarning(PluginServices.getText(this,
+                    "Hyperlink_linked_field_doesnot_exist"), e);
+            }
+        } else
+            if (iString.endsWith("png") || iString.endsWith("tiff")
+                || iString.endsWith("tif") || iString.endsWith("jpg")
+                || iString.endsWith("ico") || iString.endsWith("xpm")
+                || iString.endsWith("bmp")) {
+                // note: it seems jimi si not able to load .tiff images
+                try {
+                    image = new ImageIcon(Jimi.getImage(document.toURL()));
+                } catch (MalformedURLException e) {
+                    NotificationManager.addWarning(PluginServices.getText(this,
+                        "Hyperlink_linked_field_doesnot_exist"), e);
+                }
+            } else {
+                try {
+                    image = new ImageIcon(document.toURL());
+                } catch (MalformedURLException e) {
+                    NotificationManager.addWarning(PluginServices.getText(this,
+                        "Hyperlink_linked_field_doesnot_exist"), e);
+                }
+            }
+        if (image == null)
+            ; // Incluir error
+        this.setPreferredSize(new Dimension(image.getIconWidth(),
+            image.getIconHeight()));
+        this.setSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
+        JLabel label = new JLabel(image);
+        this.add(label);
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadRasterLayer.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadRasterLayer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadRasterLayer.java	(revision 38357)
@@ -0,0 +1,132 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.MalformedURLException;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.view.gui.IView;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataStoreParameters;
+import org.gvsig.fmap.dal.exception.InitializeException;
+import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+import org.gvsig.tools.locator.LocatorException;
+
+public class LoadRasterLayer extends AbstractActionManager implements
+    Serializable {
+
+    public static final String actionCode = "Load_Raster_Layer";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return false;
+    }
+
+    public void showDocument(URI doc) {
+        IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
+        if (activeWindow instanceof IView) {
+            IView view = (IView) activeWindow;
+            String fileName = null;
+            if (doc.isAbsolute()) {
+                try {
+                    fileName = new File(doc).getCanonicalPath();
+                } catch (MalformedURLException e) {
+                    PluginServices.getLogger()
+                        .warn("Hyperlink - Malformed URL", e);
+                } catch (IOException e) {
+                    PluginServices.getLogger()
+                        .warn("Hyperlink - Malformed URL", e);
+                }
+            }
+            if (fileName == null || fileName.equals("")) {
+                return;
+            }
+            String viewName =
+                PluginServices.getMDIManager()
+                    .getWindowInfo(activeWindow)
+                    .getTitle();
+            try {
+                // assume that Raster projection has same projection as view,
+                // because the user has no opportunity to choose the projection
+                // FLayer newLayer = LayerFactory.createLayer(fileName,
+                // "gvSIG Image Driver",
+                // new File(fileName), view.getProjection());
+                DataStoreParameters parameters =
+                    DALLocator.getDataManager()
+                        .createStoreParameters("RasterStore");
+                parameters.setDynValue("filename", fileName);
+                parameters.setDynValue("srs", view.getViewDocument()
+                    .getMapContext()
+                    .getProjection()); // ???????
+                FLayer newLayer =
+                    MapContextLocator.getMapContextManager()
+                        .createLayer(fileName, parameters);
+                // FLayer newLayer = FLyrRasterSE.createLayer(fileName,
+                // fileName,
+                // view.getProjection());
+                view.getMapControl()
+                    .getMapContext()
+                    .getLayers()
+                    .addLayer(newLayer);
+                newLayer.dispose();
+            } catch (LoadLayerException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading raster layer", e);
+            } catch (InitializeException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading raster layer", e);
+            } catch (ProviderNotRegisteredException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading raster layer", e);
+            } catch (LocatorException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading raster layer", e);
+            }
+        }
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Loads_raster_layers_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "Load_Raster_Layer");
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadRasterLayer.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadVectorLayer.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadVectorLayer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadVectorLayer.java	(revision 38357)
@@ -0,0 +1,193 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.MalformedURLException;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.view.gui.IView;
+import org.gvsig.dwg.fmap.dal.store.dwg.DWGStoreProvider;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataStoreParameters;
+import org.gvsig.fmap.dal.exception.InitializeException;
+import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
+import org.gvsig.fmap.dal.store.dgn.DGNStoreProvider;
+import org.gvsig.fmap.dal.store.dxf.DXFStoreProvider;
+import org.gvsig.fmap.dal.store.shp.SHPStoreProvider;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+import org.gvsig.tools.locator.LocatorException;
+
+public class LoadVectorLayer extends AbstractActionManager implements
+    Serializable {
+
+    private static final long serialVersionUID = 1L;
+    public static final String actionCode = "Load_Vector_Layer";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return false;
+    }
+
+    public void showDocument(URI doc) {
+        IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
+        if (activeWindow instanceof IView) {
+            IView view = (IView) activeWindow;
+            String fileName = null;
+            if (doc.isAbsolute()) {
+                try {
+                    fileName = new File(doc).getCanonicalPath();
+                } catch (MalformedURLException e) {
+                    PluginServices.getLogger()
+                        .warn("Hyperlink - Malformed URL", e);
+                } catch (IOException e) {
+                    PluginServices.getLogger()
+                        .warn("Hyperlink - Malformed URL", e);
+                }
+            }
+            if (fileName == null || fileName.equals("")) {
+                return;
+            }
+            String viewName =
+                PluginServices.getMDIManager()
+                    .getWindowInfo(activeWindow)
+                    .getTitle();
+            try {
+                // assume that layer has same projection as view, because the
+                // user has no opportunity to choose the projection
+                FLayer newLayer = null;
+                DataStoreParameters parameters = null;
+                if (fileName.toLowerCase().endsWith(".shp")) {
+                    // newLayer = LayerFactory.createLayer(fileName,
+                    // "gvSIG shp driver",
+                    // new File(fileName), view.getProjection());
+                    parameters =
+                        DALLocator.getDataManager()
+                            .createStoreParameters(SHPStoreProvider.NAME);
+                    parameters.setDynValue("shpfile", fileName);
+                    // parameters.setDynValue("shxfile", fileName);
+                    parameters.setDynValue("CRS", view.getViewDocument()
+                        .getMapContext()
+                        .getProjection()); // ???????
+                } else
+                    if (fileName.toLowerCase().endsWith(".dgn")) {
+                        // newLayer = LayerFactory.createLayer(fileName,
+                        // "gvSIG DGN Memory Driver",
+                        // new File(fileName), view.getProjection());
+                        parameters =
+                            DALLocator.getDataManager()
+                                .createStoreParameters(DGNStoreProvider.NAME);
+                        parameters.setDynValue("file", fileName);
+                        parameters.setDynValue("CRS", view.getViewDocument()
+                            .getMapContext()
+                            .getProjection()); // ???????
+                    } else
+                        if (fileName.toLowerCase().endsWith(".dwg")) {
+                            // newLayer = LayerFactory.createLayer(fileName,
+                            // "gvSIG DWG Memory Driver",
+                            // new File(fileName), view.getProjection());
+                            parameters =
+                                DALLocator.getDataManager()
+                                    .createStoreParameters(DWGStoreProvider.NAME);
+                            parameters.setDynValue("file", fileName);
+                            parameters.setDynValue("CRS",
+                                view.getViewDocument()
+                                    .getMapContext()
+                                    .getProjection()); // ???????
+                        } else
+                            if (fileName.toLowerCase().endsWith(".dxf")) {
+                                // newLayer = LayerFactory.createLayer(fileName,
+                                // "gvSIG DXF Memory Driver",
+                                // new File(fileName), view.getProjection());
+                                parameters =
+                                    DALLocator.getDataManager()
+                                        .createStoreParameters(DXFStoreProvider.NAME);
+                                parameters.setDynValue("File", fileName);
+                                parameters.setDynValue("CRS",
+                                    view.getViewDocument()
+                                        .getMapContext()
+                                        .getProjection()); // ???????
+                            }
+                // TODO:
+                // else if (fileName.toLowerCase().endsWith(".gml")) {
+                // // newLayer = LayerFactory.createLayer(fileName,
+                // "gvSIG GML Memory Driver",
+                // // new File(fileName), view.getProjection());
+                // }
+                // else if (fileName.toLowerCase().endsWith(".kml")) {
+                // // newLayer = LayerFactory.createLayer(fileName,
+                // "gvSIG KML Memory Driver",
+                // // new File(fileName), view.getProjection());
+                // }
+                if (parameters != null) {
+                    newLayer =
+                        MapContextLocator.getMapContextManager()
+                            .createLayer(fileName, parameters);
+                }
+
+                if (newLayer != null) {
+                    view.getMapControl()
+                        .getMapContext()
+                        .getLayers()
+                        .addLayer(newLayer);
+                    newLayer.dispose();
+                }
+            } catch (InitializeException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading vector layer", e);
+            } catch (ProviderNotRegisteredException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading vector layer", e);
+            } catch (LocatorException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading vector layer", e);
+            } catch (LoadLayerException e) {
+                PluginServices.getLogger()
+                    .warn("Hyperlink - Error loading vector layer", e);
+            }
+        }
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Loads_vector_layers_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "Load_Vector_Layer");
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/LoadVectorLayer.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfHyperlinkPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfHyperlinkPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfHyperlinkPanel.java	(revision 38357)
@@ -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.hyperlink.app.extension.actions;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.print.PageFormat;
+import java.awt.print.Paper;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.net.URI;
+import java.net.URL;
+
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.SetOfIntegerSyntax;
+import javax.print.attribute.standard.PageRanges;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+
+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.hyperlink.app.extension.AbstractHyperLinkPanel;
+import org.jpedal.Display;
+import org.jpedal.PdfDecoder;
+import org.jpedal.exception.PdfException;
+import org.jpedal.objects.PrinterOptions;
+
+public class PdfHyperlinkPanel extends AbstractHyperLinkPanel implements
+    PropertyChangeListener, IWindow {
+
+    private static final long serialVersionUID = 1L;
+    private WindowInfo m_viewInfo;
+    private PdfDecoder pf = null;
+
+    private int currentPage = 1;
+    private final JLabel pageCounter1 = new JLabel(" "
+        + PluginServices.getText(this, "Pagina") + " ");
+    private JTextField pageCounter2 = new JTextField(4);
+    private JLabel pageCounter3 =
+        new JLabel(PluginServices.getText(this, "de"));
+
+    public PdfHyperlinkPanel(URI doc) {
+        super(doc);
+        initialize();
+    }
+
+    private void initialize() {
+
+        pf = new PdfDecoder();
+
+        try {
+            if (document != null && document.isAbsolute()) {
+                String urlString = document.toURL().toString();
+                // avoid the openPdfFileFromURL method in first term, to avoid
+                // the download dialog
+                if (urlString.startsWith("file:")) {
+                    urlString = urlString.replaceFirst("file:/*", "/"); // keep
+                                                                        // just
+                                                                        // one
+                                                                        // slash
+                                                                        // at
+                                                                        // the
+                                                                        // beginning
+                    urlString = urlString.replaceAll("%20", " "); // PdfDecoder
+                                                                  // doesn't
+                                                                  // correctly
+                                                                  // digest %20
+                                                                  // spaces
+                    pf.openPdfFile(urlString);
+                } else {
+                    pf.openPdfFileFromURL(urlString, true);
+                }
+            } else {
+                PluginServices.getLogger().warn(PluginServices.getText(this,
+                    "Hyperlink_linked_field_doesnot_exist"));
+                return;
+            }
+
+            // these 2 lines opens page 1 at 100% scaling
+            pf.decodePage(currentPage);
+            float scaling = (float) 1.5;
+            pf.setPageParameters(scaling, 1); // values scaling (1=100%). page
+                                              // number
+            pf.setDisplayView(Display.SINGLE_PAGE, Display.DISPLAY_CENTERED);
+        } catch (Exception e) {
+            NotificationManager.addWarning(PluginServices.getText(this,
+                "Hyperlink_linked_field_doesnot_exist"), e);
+            return;
+        }
+
+        // setup our GUI display
+        initializeViewer();
+
+        // set page number display
+        pageCounter2.setText(currentPage + "");
+        pageCounter3.setText(PluginServices.getText(this, "de") + " "
+            + pf.getPageCount() + " ");
+    }
+
+    public void setCurrentURL(URI currentURL) {
+        document = currentURL;
+    }
+
+    private void initializeViewer() {
+
+        Container cPane = this;
+        cPane.setLayout(new BorderLayout());
+
+        // JButton open = initOpenBut();//setup open button
+        Component[] itemsToAdd = initChangerPanel();// setup page display and
+                                                    // changer
+
+        JPanel topBar = new JPanel();
+        topBar.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+        // topBar.add(pageChanger);
+        for (int i = 0; i < itemsToAdd.length; i++) {
+            topBar.add(itemsToAdd[i]);
+        }
+
+        cPane.add(topBar, BorderLayout.NORTH);
+
+        JScrollPane display = getJPaneViewer();// setup scrollpane with pdf
+                                               // display inside
+        cPane.add(display, BorderLayout.CENTER);
+
+        // pack();
+
+        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+        setSize(screen.width / 2, screen.height / 2);
+        // <start-13>
+        // setLocationRelativeTo(null);//centre on screen
+        // <end-13>
+        setVisible(true);
+    }
+
+    private Component[] initChangerPanel() {
+
+        Component[] list = new Component[12];
+
+        /** back to page 1 */
+        JButton start = new JButton();
+        start.setBorderPainted(false);
+        URL startImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/start.gif");
+        start.setIcon(new ImageIcon(startImage));
+        start.setToolTipText(PluginServices.getText(this, "primera_pagina"));
+        // currentBar1.add(start);
+        list[0] = start;
+        start.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage != 1) {
+                    currentPage = 1;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("back to page 1");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        /** back 10 icon */
+        JButton fback = new JButton();
+        fback.setBorderPainted(false);
+        URL fbackImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/fback.gif");
+        fback.setIcon(new ImageIcon(fbackImage));
+        fback.setToolTipText(PluginServices.getText(this, "diez_paginas_atras"));
+        // currentBar1.add(fback);
+        list[1] = fback;
+        fback.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage > 10) {
+                    currentPage -= 10;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("back 10 pages");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        /** back icon */
+        JButton back = new JButton();
+        back.setBorderPainted(false);
+        URL backImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/back.gif");
+        back.setIcon(new ImageIcon(backImage));
+        back.setToolTipText(PluginServices.getText(this, "pagina_atras"));
+        // currentBar1.add(back);
+        list[2] = back;
+        back.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage > 1) {
+                    currentPage -= 1;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("back 1 page");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        pageCounter2.setEditable(true);
+        pageCounter2.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent a) {
+
+                String value = pageCounter2.getText().trim();
+                int newPage;
+
+                // allow for bum values
+                try {
+                    newPage = Integer.parseInt(value);
+
+                    if ((newPage > pf.getPageCount()) | (newPage < 1)) {
+                        return;
+                    }
+
+                    currentPage = newPage;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e) {
+                        System.err.println("page number entered");
+                        e.printStackTrace();
+                    }
+
+                } catch (Exception e) {
+                    JOptionPane.showMessageDialog(null,
+                        ">" + value + "< "
+                            + PluginServices.getText(this, "valor_incorrecto")
+                            + pf.getPageCount());
+                }
+
+            }
+
+        });
+
+        /** put page count in middle of forward and back */
+        // currentBar1.add(pageCounter1);
+        // currentBar1.add(new JPanel());//add gap
+        // currentBar1.add(pageCounter2);
+        // currentBar1.add(new JPanel());//add gap
+        // currentBar1.add(pageCounter3);
+        list[3] = pageCounter1;
+        list[4] = new JPanel();
+        list[5] = pageCounter2;
+        list[6] = new JPanel();
+        list[7] = pageCounter3;
+
+        /** forward icon */
+        JButton forward = new JButton();
+        forward.setBorderPainted(false);
+        URL fowardImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/forward.gif");
+        forward.setIcon(new ImageIcon(fowardImage));
+        forward.setToolTipText(PluginServices.getText(this, "pagina_delante"));
+        // currentBar1.add(forward);
+        list[8] = forward;
+        forward.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage < pf.getPageCount()) {
+                    currentPage += 1;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("forward 1 page");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        /** fast forward icon */
+        JButton fforward = new JButton();
+        fforward.setBorderPainted(false);
+        URL ffowardImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/fforward.gif");
+        fforward.setIcon(new ImageIcon(ffowardImage));
+        fforward.setToolTipText(PluginServices.getText(this,
+            "10_paginas_delante"));
+        // currentBar1.add(fforward);
+        list[9] = fforward;
+        fforward.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage < pf.getPageCount() - 9) {
+                    currentPage += 10;
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("forward 10 pages");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        /** goto last page */
+        JButton end = new JButton();
+        end.setBorderPainted(false);
+        URL endImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/end.gif");
+        end.setIcon(new ImageIcon(endImage));
+        end.setToolTipText(PluginServices.getText(this, "ultima_pagina"));
+        // currentBar1.add(end);
+        list[10] = end;
+        end.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                if (pf != null && currentPage < pf.getPageCount()) {
+                    currentPage = pf.getPageCount();
+                    try {
+                        pf.decodePage(currentPage);
+                        pf.invalidate();
+                        repaint();
+                    } catch (Exception e1) {
+                        System.err.println("forward to last page");
+                        e1.printStackTrace();
+                    }
+
+                    // set page number display
+                    pageCounter2.setText(currentPage + "");
+                }
+            }
+        });
+
+        /** Print */
+        JButton print = new JButton();
+        print.setBorderPainted(false);
+        URL printImage = PluginServices.getPluginServices(this).getClassLoader().getResource("images/print.gif");
+        print.setIcon(new ImageIcon(printImage));
+        print.setToolTipText(PluginServices.getText(this, "imprimir"));
+        // currentBar1.add(end);
+        list[11] = print;
+        print.addActionListener(new ActionListener() {
+
+            public void actionPerformed(ActionEvent e) {
+                printPDF();
+            }
+        });
+        return list;
+    }
+
+    public void printPDF() {
+        PrinterJob printJob = PrinterJob.getPrinterJob();
+
+        printJob.setPageable(pf);
+        // decode_pdf.setPageFormat(pf);
+
+        /**
+         * this additional functionality is available under printable interface
+         */
+        // setup default values to add into JPS
+        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+        aset.add(new PageRanges(1, pf.getPageCount()));
+
+        boolean printFile = printJob.printDialog(aset);
+
+        // set page range
+        PageRanges r = (PageRanges) aset.get(PageRanges.class);
+        if (r != null)
+            try {
+                PageFormat pformat = printJob.defaultPage();
+
+                Paper paper = new Paper();
+                paper.setSize(595, 842); // default A4
+                paper.setImageableArea(43, 43, 545, 792); // actual print 'zone'
+
+                pformat.setPaper(paper);
+
+                // pageable provides a method getPageFormat(int p) - this method
+                // allows it to be set by JPedal
+                pf.setPageFormat(pformat);
+                pf.setPagePrintRange((SetOfIntegerSyntax) r);
+            } catch (PdfException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        /**
+         * generic call to both Pageable and printable
+         */
+        if (printFile)
+            try {
+                pf.setPrintPageScalingMode(PrinterOptions.PAGE_SCALING_FIT_TO_PRINTER_MARGINS);
+                printJob.print();
+            } catch (PrinterException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+    }
+
+    private JScrollPane getJPaneViewer() {
+        JScrollPane currentScroll = new JScrollPane();
+        currentScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+        currentScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+
+        currentScroll.setViewportView(pf);
+        return currentScroll;
+    }
+
+    /**
+     * This is not used by hyperlink, but it's kept as it may be
+     * useful to get a quick PDF window in gvSIG.
+     */
+    public WindowInfo getWindowInfo() {
+        if (m_viewInfo == null) {
+            m_viewInfo = new WindowInfo(WindowInfo.PALETTE);
+            m_viewInfo.setMaximizable(true);
+            m_viewInfo.setWidth(this.getWidth());
+            m_viewInfo.setHeight(this.getHeight());
+            m_viewInfo.setTitle(PluginServices.getText(this, "pdf_viewer"));
+        }
+        return m_viewInfo;
+    }
+
+    public void propertyChange(PropertyChangeEvent arg0) {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.EDITOR_PROFILE;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfHyperlinkPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgPanel.java	(revision 38357)
@@ -0,0 +1,209 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.awt.BorderLayout;
+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.net.URI;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+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.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+/**
+ * This class extends AbstractHyperLink, and provides suppot to open images of
+ * many formats.
+ * The common supported formats are JPG, ICO, BMP, TIFF, GIF and PNG. Implements
+ * methods from
+ * IExtensionBuilder to make it extending.
+ * 
+ * @author Eustaquio Vercher (IVER)
+ * @author Cesar Martinez Izquierdo (IVER)
+ */
+public class SvgPanel extends AbstractHyperLinkPanel {
+
+    private static final long serialVersionUID = -5200841105188251551L;
+    private GVTBuilder gvtBuilder = new GVTBuilder();
+    private GraphicsNode gvtRoot = null;
+    private BridgeContext ctx = null;
+    private StaticRenderer renderer = new StaticRenderer();
+    private Element elt;
+    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);
+    }
+
+    /**
+     * Default constructor.
+     */
+    public SvgPanel(URI doc) {
+        super(doc);
+        initialize();
+    }
+
+    /**
+     * Initializes this panel.
+     */
+    void initialize() {
+        this.setLayout(new BorderLayout());
+        showDocument();
+        // this.setSize(600, 400);
+    }
+
+    /**
+     * Implements the necessary code to open images in this panel.
+     */
+    protected void showDocument() {
+        if (!checkAndNormalizeURI()) {
+            return;
+        }
+
+        ImageIcon image;
+        // try {
+        image = new ImageIcon(getSvgAsImage(document.toString()));
+
+        if (image == null)
+            ; // Incluir error
+        this.setPreferredSize(new Dimension(image.getIconWidth(),
+            image.getIconHeight()));
+        this.setSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
+        JLabel label = new JLabel(image);
+        this.add(label);
+
+        // } catch (MalformedURLException e) {
+        //
+        // }
+    }
+
+    /**
+     * Allows paint SVG images in the panel.
+     * 
+     * @param file
+     *            , this file has been extracted from the URI
+     */
+    private Image getSvgAsImage(String uri) {
+        BufferedImage img =
+            new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D g = img.createGraphics();
+        Rectangle2D rect = new Rectangle2D.Double();
+        rect.setFrame(0, 0, 400, 400);
+        obtainStaticRenderer(uri);
+        drawSVG(g, rect, null);
+        return img;
+    }
+
+    /**
+     * Render the image to add to the panel.
+     * 
+     * @param file
+     *            , this file has been extracted from the URI
+     */
+    private void obtainStaticRenderer(String uri) {
+        try {
+            UserAgentAdapter userAgent = new UserAgentAdapter();
+            DocumentLoader loader = new DocumentLoader(userAgent);
+            ctx = new BridgeContext(userAgent, loader);
+            // Document svgDoc = loader.loadDocument(file.toURI().toString());
+            Document svgDoc = loader.loadDocument(uri);
+            gvtRoot = gvtBuilder.build(ctx, svgDoc);
+            renderer.setTree(gvtRoot);
+            elt = ((SVGDocument) svgDoc).getRootElement();
+        } catch (Exception ex) {
+            NotificationManager.addWarning(PluginServices.getText(this,
+                "Hyperlink_linked_field_doesnot_exist"), ex);
+        }
+    }
+
+    /**
+     * Draw SVG in the Graphics that receives like parameter.
+     * 
+     * @param g
+     *            Graphics
+     * @param rect
+     *            Rectangle that fills the Graphic.
+     * @param rv
+     *            Rectangle. This forms the visible part in the 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);
+        }
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtPanel.java	(revision 38357)
@@ -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.hyperlink.app.extension.actions;
+
+import java.awt.BorderLayout;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+
+import javax.swing.JTextPane;
+import javax.swing.event.HyperlinkEvent;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.messages.NotificationManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+import org.gvsig.utils.BrowserControl;
+
+/**
+ * This class extends AbstractHyperLinkPanel. And provides support to open txt
+ * files and
+ * WWW. Implements methods from IExtensionBuilder to make it extending.
+ * 
+ */
+public class TxtPanel extends AbstractHyperLinkPanel {
+
+    private static final long serialVersionUID = 1408583183372898110L;
+    private JTextPane textPane;
+
+    /**
+     * Default constructor.
+     */
+    public TxtPanel(URI doc) {
+        super(doc);
+        initialize();
+    }
+
+    /**
+     * Initializes this panel.
+     */
+    void initialize() {
+        this.setLayout(new BorderLayout());
+        showDocument();
+    }
+
+    /**
+     * Implements the necessary code to show the content of the URI in this
+     * panel. The
+     * content of the URI is a TXT or a WWW.
+     * 
+     * @param URI
+     */
+    protected void showDocument() {
+        textPane = new JTextPane();
+        textPane.setEditable(false);
+
+        if (!checkAndNormalizeURI()) {
+            return;
+        }
+
+        URL url = null;
+        try {
+            url = document.normalize().toURL();
+        } catch (MalformedURLException e1) {
+            NotificationManager.addWarning(PluginServices.getText(this,
+                "Hyperlink_linked_field_doesnot_exist"), e1);
+            return;
+        }
+        try {
+            textPane.setPage(url);
+            textPane.addHyperlinkListener(new javax.swing.event.HyperlinkListener() {
+
+                public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent e) {
+                    if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+                        System.out.println("hyperlinkUpdate()");
+                        BrowserControl.displayURL(e.getURL().toString());
+                    }
+                }
+            });
+        } catch (IOException e) {
+            NotificationManager.addWarning(PluginServices.getText(this,
+                "Hyperlink_linked_field_doesnot_exist"), e);
+            return;
+        }
+        this.add(textPane, BorderLayout.CENTER);
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfFormat.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfFormat.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfFormat.java	(revision 38357)
@@ -0,0 +1,59 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+public class PdfFormat extends AbstractActionManager implements Serializable {
+
+    public static final String actionCode = "PDF_format";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        return new PdfHyperlinkPanel(doc);
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return true;
+    }
+
+    public void showDocument(URI doc) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Shows_PDF_files_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "PDF_format");
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfFormat.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgFormat.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgFormat.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgFormat.java	(revision 38357)
@@ -0,0 +1,59 @@
+/* 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.hyperlink.app.extension.actions;
+
+import java.io.Serializable;
+import java.net.URI;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
+
+public class ImgFormat extends AbstractActionManager implements Serializable {
+
+    public static final String actionCode = "Image_format";
+
+    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
+        return new ImgPanel(doc);
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public boolean hasPanel() {
+        return true;
+    }
+
+    public void showDocument(URI doc) {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getDescription() {
+        return PluginServices.getText(this, "Shows_image_files_in_gvSIG");
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "Image_format");
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgFormat.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/HyperlinkExtension.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/HyperlinkExtension.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/HyperlinkExtension.java	(revision 38357)
@@ -0,0 +1,277 @@
+/* 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.hyperlink.app.extension;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.gui.IView;
+import org.gvsig.app.project.documents.view.legend.gui.ThemeManagerWindow;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.LayersIterator;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontrol.MapControl;
+import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior;
+import org.gvsig.hyperlink.app.extension.actions.ImgFormat;
+import org.gvsig.hyperlink.app.extension.actions.LoadRasterLayer;
+import org.gvsig.hyperlink.app.extension.actions.LoadVectorLayer;
+import org.gvsig.hyperlink.app.extension.actions.PdfFormat;
+import org.gvsig.hyperlink.app.extension.actions.SvgFormat;
+import org.gvsig.hyperlink.app.extension.actions.TxtFormat;
+import org.gvsig.hyperlink.app.extension.config.LayerLinkConfig;
+import org.gvsig.hyperlink.app.extension.config.LinkConfig;
+import org.gvsig.hyperlink.app.extension.config.gui.ConfigTab;
+import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
+import org.gvsig.hyperlink.app.extension.layers.VectLayerManager;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.tools.util.Caller;
+import org.gvsig.tools.util.impl.DefaultCaller;
+
+/**
+ * Andami extension to show Hyperlink in the application.
+ * 
+ * @author gvSIG Team
+ * @version $Id$
+ */
+public class HyperlinkExtension extends Extension {
+
+    private static final Logger LOG = LoggerFactory
+        .getLogger(HyperlinkExtension.class);
+    ManagerRegistry layerManager;
+    public static final String LAYERPROPERTYNAME = "org.gvsig.hyperlink.config";
+    public static final String TOOLNAME = "org.gvsig.hyperlink.tool";
+    public static final String ACTIONSEXTENSIONPOINT = "HyperLinkAction";
+
+    private static final int LEGACY_IMAGE_TYPE = 0;
+    private static final int LEGACY_HTML_TYPE = 1;
+    private static final int LEGACY_PDF_TYPE = 2;
+    private static final int LEGACY_SVG_TYPE = 3;
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String s) {
+        IView view = (IView) PluginServices.getMDIManager().getActiveWindow();
+        MapControl mapCtrl = view.getMapControl();
+        LOG.debug("Comand : " + s);
+
+        if (s.compareTo("HYPERLINK") == 0) {
+            initTool(view);
+            mapCtrl.setTool(TOOLNAME);
+        }
+    }
+
+    /**
+     * Inits the tool for the provided view.
+     * 
+     * @param view
+     */
+    public void initTool(IView view) {
+        MapControl mapCtrl = view.getMapControl();
+        if (view.getMapControl().getNamesMapTools().get(TOOLNAME) == null) {
+            mapCtrl.addBehavior(TOOLNAME,
+                new PointBehavior(new LinkListener(mapCtrl, layerManager)));
+            loadLegacyConfig(view);
+        }
+    }
+
+    public void loadLegacyConfig(IView view) {
+        LayersIterator iterator =
+            new LayersIterator(view.getMapControl().getMapContext().getLayers());
+        while (iterator.hasNext()) {
+            FLayer layer = iterator.nextLayer();
+            loadLegacyConfig(layer);
+        }
+    }
+
+    /**
+     * Returns a LayerLinkConfig object if an old-style or new-style hyperlink
+     * was found and configured,
+     * or null otherwise.
+     * 
+     * @param layer
+     */
+    public LayerLinkConfig loadLegacyConfig(FLayer layer) {
+        LayerLinkConfig layerConfig =
+            (LayerLinkConfig) layer.getProperty(LAYERPROPERTYNAME);
+        if (layerConfig != null) { // don't apply compatibility if the layer
+                                   // already has new 1.9.0 configuration
+            return layerConfig;
+        }
+        Object fName = layer.getProperty("legacy.hyperlink.selectedField");
+        if (fName != null && fName instanceof String) {
+            Map properties = layer.getExtendedProperties();
+            properties.remove("legacy.hyperlink.selectedField");
+            // remove it from layer to don't keep legacy properties for ever
+            // in the project
+
+            String fieldName = (String) fName;
+            Object extObj = layer.getProperty("legacy.hyperlink.extension");
+            String extension = null;
+            if (extObj != null && extObj instanceof String) {
+                properties.remove("legacy.hyperlink.extension");
+                // remove it from layer to don't keep legacy properties for ever
+                // in the project
+                extension = (String) extObj;
+            }
+            Object typeObj = layer.getProperty("legacy.hyperlink.type");
+            int type = -1;
+            if (typeObj != null && typeObj instanceof Integer) {
+                properties.remove("legacy.hyperlink.type"); 
+                // remove it from layer to don't keep legacy properties for ever
+                // in the project
+                type = ((Integer) typeObj).intValue();
+            }
+            LayerLinkConfig config = new LayerLinkConfig();
+            config.setEnabled(true);
+            config.addLink(getLegacyActionCode(type), fieldName, extension);
+            layer.setProperty(LAYERPROPERTYNAME, config);
+            return config;
+        }
+        return null;
+    }
+
+    private String getLegacyActionCode(int type) {
+        switch (type) {
+        case LEGACY_IMAGE_TYPE:
+            return ImgFormat.actionCode;
+        case LEGACY_PDF_TYPE:
+            return PdfFormat.actionCode;
+        case LEGACY_SVG_TYPE:
+            return SvgFormat.actionCode;
+        case LEGACY_HTML_TYPE:
+        default:
+            return TxtFormat.actionCode;
+        }
+    }
+
+    /**
+     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+        if (f == null) {
+            return false;
+        }
+
+        if (f instanceof IView) {
+
+            MapContext mapa = ((IView) f).getViewDocument().getMapContext();
+
+            return mapa.getLayers().getLayersCount() > 0;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        IWindow window = PluginServices.getMDIManager().getActiveWindow();
+
+        if (window == null) {
+            return false;
+        }
+
+        if (window instanceof IView) {
+            IView view = (IView) window;
+            ViewDocument viewDocument = view.getViewDocument();
+
+            if (viewDocument != null
+                && viewDocument.getMapContext() != null
+                && viewDocument.getMapContext().getLayers().getVisibles().length > 0)
+                return true;
+            else
+                return false;
+
+        }
+        return true;
+    }
+
+    public void postInitialize() {
+        Caller caller = new DefaultCaller();
+
+        caller.add(new LinkConfig.RegisterPersistence());
+        caller.add(new LayerLinkConfig.RegisterPersistence());
+        if( !caller.call() ) {
+            throw new LibraryException(HyperlinkExtension.class, caller.getExceptions());
+        }
+
+        registerLayers();
+        registerActions();
+        registerConfigPanel();
+    }
+
+    private void registerLayers() {
+        layerManager = new ManagerRegistry();
+        layerManager.put(FLyrVect.class, VectLayerManager.class);
+    }
+
+    public ManagerRegistry getLayerManager() {
+        return layerManager;
+    }
+
+    private void registerActions() {
+        ExtensionPointManager epm = ToolsLocator.getExtensionPointManager();
+        ExtensionPoint ep =
+            epm.add(ACTIONSEXTENSIONPOINT,
+                "Registers Actions that are able to manage specific format types.");
+
+        ep.append(TxtFormat.actionCode, "", TxtFormat.class);
+        ep.append(ImgFormat.actionCode, "", ImgFormat.class);
+        ep.append(PdfFormat.actionCode, "", PdfFormat.class);
+        ep.append(LoadVectorLayer.actionCode, "", LoadVectorLayer.class);
+        ep.append(SvgFormat.actionCode, "", SvgFormat.class);
+        try {
+            ep.append(LoadRasterLayer.actionCode, "", LoadRasterLayer.class);
+        } catch (Throwable e) {
+            LOG.error("Could not load raster layer hyperlink support", e);
+        }
+    }
+
+    private void registerConfigPanel() {
+        // pages
+        ThemeManagerWindow.addPage(ConfigTab.class);
+
+        ThemeManagerWindow.setTabEnabledForLayer(ConfigTab.class,
+            FLyrVect.class,
+            true);
+    }
+
+    public void initialize() {
+        // Do nothing
+        
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/HyperlinkExtension.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkListener.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkListener.java	(revision 38357)
@@ -0,0 +1,224 @@
+/* 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.hyperlink.app.extension;
+
+import java.awt.Cursor;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Toolkit;
+import java.awt.geom.Point2D;
+import java.net.URI;
+import java.net.URL;
+
+import javax.swing.ImageIcon;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.app.project.documents.view.toolListeners.InfoListener;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontrol.MapControl;
+import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
+import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
+import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener;
+import org.gvsig.hyperlink.app.extension.config.LayerLinkConfig;
+import org.gvsig.hyperlink.app.extension.config.LinkConfig;
+import org.gvsig.hyperlink.app.extension.layers.ILinkLayerManager;
+import org.gvsig.hyperlink.app.extension.layers.IncompatibleLayerException;
+import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Listener that implements PointListener to show the information of the
+ * HyperLink of the layer,
+ * if the actual layer allows it. When the user selects the tool and make one
+ * clic with
+ * the mouse throws an event to create Panels with the information of the
+ * associated HyperLink
+ * to the layer. Creates one panel for URI provided, to load the information.
+ * 
+ * @author Vicente Caballero Navarro
+ * @author Cesar Martinez Izqueirdo
+ * 
+ */
+public class LinkListener implements PointListener {
+
+    private static Logger logger = LoggerFactory.getLogger(InfoListener.class);
+    private Cursor cur = null;
+    private MapControl mapCtrl;
+    private ManagerRegistry registry;
+    private Image imageCursor = null;
+    public static final int TYPELINKIMAGE = 0;
+    public static final int TYPELINKTEXT = 1;
+    public ExtensionPoint formatManagers;
+
+    /**
+     * Creates a new LinkListener
+     * 
+     * @param mc
+     *            mapControl
+     */
+    public LinkListener(MapControl mc, ManagerRegistry registry) {
+        this.mapCtrl = mc;
+        this.registry = registry;
+        formatManagers =
+            ToolsLocator.getExtensionPointManager()
+                .get(HyperlinkExtension.ACTIONSEXTENSIONPOINT);
+        initialize();
+    }
+
+    private void initialize() {
+        URL url =
+            PluginServices.getPluginServices(this)
+                .getClassLoader()
+                .getResource("images/LinkCursor.gif");
+        if (url != null) {
+            ImageIcon img = new ImageIcon(url);
+            imageCursor = img.getImage();
+            cur =
+                Toolkit.getDefaultToolkit().createCustomCursor(imageCursor,
+                    new Point(16, 16),
+                    "Hyperlink");
+        } else {
+            PluginServices.getLogger()
+                .error("Icon not found: images/LinkCursor.gif");
+        }
+    }
+
+    /**
+     * Creates one LinkPanel for URI provided. Gets the active layers and
+     * invokes getLink
+     * with the catched point and the allowed tolerance if these layers allows
+     * HyperLinks.
+     * getLink provides an array of URIs, this method is invoked for all active
+     * layers.
+     * 
+     * @param event
+     *            PointEvent
+     * @throws BehaviorException
+     * 
+     * @see com.iver.cit.gvsig.fmap.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.Events.PointEvent)
+     */
+    public void point(PointEvent event) throws BehaviorException {
+        Point2D pReal =
+            mapCtrl.getMapContext().getViewPort().toMapPoint(event.getPoint());
+        FLayer[] sel = mapCtrl.getMapContext().getLayers().getVisibles();
+
+        URI[] links = null;
+        LinkConfig linkConfig;
+        ILinkLayerManager layerManager;
+        ILinkActionManager actionManager;
+
+        for (int layerCount = 0; layerCount < sel.length; layerCount++) {
+            FLayer theLayer = sel[layerCount];
+            if (!registry.hasManager(theLayer)) {
+                continue;
+            }
+            try {
+                layerManager = registry.get(theLayer);
+                if (theLayer.getProperty(HyperlinkExtension.LAYERPROPERTYNAME) != null
+                    && theLayer.getProperty(HyperlinkExtension.LAYERPROPERTYNAME) instanceof LayerLinkConfig) {
+                    LayerLinkConfig layerLink =
+                        (LayerLinkConfig) theLayer.getProperty(HyperlinkExtension.LAYERPROPERTYNAME);
+                    if (layerLink.isEnabled() && layerLink.linkCount() > 0) { 
+                        // there is
+                                                                              // some
+                                                                              // link
+                                                                              // configured
+                                                                              // for
+                                                                              // this
+                                                                              // layer
+
+                        double tol = mapCtrl.getViewPort().toMapDistance(3);
+                        for (int actionCount = 0; actionCount < layerLink.linkCount(); actionCount++) {
+                            linkConfig = layerLink.getLink(actionCount);
+                            links =
+                                layerManager.getLink(pReal,
+                                    tol,
+                                    linkConfig.getFieldName(),
+                                    linkConfig.getExtension());
+                            for (int i = 0; i < links.length; i++) {
+                                if (links[i] != null) {
+
+                                    actionManager =
+                                        (ILinkActionManager) formatManagers.get(linkConfig.getActionCode())
+                                            .getExtension()
+                                            .newInstance();
+                                    if (actionManager == null) {
+                                        logger.warn("Hyperlink error -- invalid action code: "
+                                            + linkConfig.getActionCode());
+                                        continue;
+                                    }
+                                    if (actionManager.hasPanel()) {
+                                        ShowPanel lpanel =
+                                            new ShowPanel(actionManager.createPanel(links[i]));
+                                        // show the panel
+                                        PluginServices.getMDIManager()
+                                            .addWindow(lpanel);
+                                    } else { // delegate in the format manager
+                                             // to show the file
+                                        actionManager.showDocument(links[i]);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            } catch (ClassNotFoundException e) {
+                throw new BehaviorException("Hyperlink: There is no manager for this layer type",
+                    e);
+            } catch (InstantiationException e) {
+                logger.error("Hyperlink error: " + e.getMessage(), e);
+            } catch (IllegalAccessException e) {
+                logger.error("Hyperlink error: " + e.getMessage(), e);
+            } catch (IncompatibleLayerException e) {
+                throw new BehaviorException("Hyperlink: There is no manager for this layer type",
+                    e);
+            }
+        }
+    }
+
+    /**
+     * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
+     */
+    public Cursor getCursor() {
+        return cur;
+    }
+
+    /**
+     * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#cancelDrawing()
+     */
+    public boolean cancelDrawing() {
+        return false;
+    }
+
+    public void pointDoubleClick(PointEvent event) throws BehaviorException {
+        // TODO Auto-generated method stub
+
+    }
+
+    public Image getImageCursor() {
+        return imageCursor;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkListener.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LayerLinkConfig.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LayerLinkConfig.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LayerLinkConfig.java	(revision 38357)
@@ -0,0 +1,123 @@
+/* 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.hyperlink.app.extension.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.tools.util.Callable;
+
+public class LayerLinkConfig implements Persistent {
+
+    protected List<LinkConfig> linkList;
+    protected boolean enabled;
+    public static final String LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME = "LayerLinkConfig";
+
+    public LayerLinkConfig() {
+        linkList = new ArrayList<LinkConfig>();
+    }
+
+    public void addLink(LinkConfig config) {
+        linkList.add(config);
+    }
+
+    public void addLink(int position, LinkConfig config) {
+        linkList.add(position, config);
+    }
+
+    public void addLink(String actionCode, String fieldName) {
+        linkList.add(new LinkConfig(actionCode, fieldName));
+    }
+
+    public void addLink(String actionCode, String fieldName, String extension) {
+        linkList.add(new LinkConfig(actionCode, fieldName, extension));
+    }
+
+    public LinkConfig removeLink(int linkIndex) {
+        try {
+            return linkList.remove(linkIndex);
+        } catch (IndexOutOfBoundsException ex) {
+            return null;
+        }
+    }
+
+    public LinkConfig getLink(int index) {
+        return linkList.get(index);
+    }
+
+    public int linkCount() {
+        return linkList.size();
+    }
+
+    public String getClassName() {
+        return this.getClass().getName();
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set("enabled", this.enabled);
+        state.set("linkList", this.linkList);
+    }
+
+    @SuppressWarnings("unchecked")
+    public void loadFromState(PersistentState state) throws PersistenceException {
+        this.enabled = state.getBoolean("enabled");
+        this.linkList = new ArrayList<LinkConfig>();
+        this.linkList.addAll(state.getList("linkList"));
+    }
+    
+    public static class RegisterPersistence implements Callable {
+
+        public Object call() throws Exception {
+            PersistenceManager manager = ToolsLocator.getPersistenceManager();
+            if( manager.getDefinition(LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME)==null ) {
+                DynStruct definition = manager.addDefinition(
+                        LayerLinkConfig.class,
+                        LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME,
+                        LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME+" Persistence definition",
+                        null, 
+                        null
+                );
+
+                definition.addDynFieldBoolean("enabled").setMandatory(true);
+                definition.addDynFieldList("linkList").setMandatory(false).setClassOfItems(LinkConfig.class);
+            }
+            return Boolean.TRUE;
+        }
+        
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LayerLinkConfig.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LinkConfig.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LinkConfig.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LinkConfig.java	(revision 38357)
@@ -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.hyperlink.app.extension.config;
+
+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.tools.util.Callable;
+
+public class LinkConfig implements Persistent {
+
+    private String fieldName;
+    private String extension = "";
+    private String actionCode;
+    public static final String LINKCONFIG_PERSISTENCE_DEFINITION_NAME = "LinkConfig";
+
+    public LinkConfig() {
+    }
+
+    public LinkConfig(String actionCode, String fieldName) {
+        this.actionCode = actionCode;
+        this.fieldName = fieldName;
+    }
+
+    public LinkConfig(String actionCode, String fieldName, String extension) {
+        this.actionCode = actionCode;
+        this.fieldName = fieldName;
+        this.extension = extension;
+    }
+
+    public String getFieldName() {
+        return fieldName;
+    }
+
+    public String getActionCode() {
+        return actionCode;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public void setActionCode(String actionCode) {
+        this.actionCode = actionCode;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public String getClassName() {
+        return this.getClass().getName();
+    }
+
+    public void saveToState(PersistentState state) throws PersistenceException {
+        state.set("fieldName", this.fieldName);
+        state.set("extension", this.extension);
+        state.set("actionCode", this.actionCode);
+    }
+
+    public void loadFromState(PersistentState state) throws PersistenceException {
+        this.fieldName = state.getString("fieldName");
+        this.extension = state.getString("extension");
+        this.actionCode = state.getString("actionCode");
+    }
+    
+    public static class RegisterPersistence implements Callable {
+
+        public Object call() throws Exception {
+            PersistenceManager manager = ToolsLocator.getPersistenceManager();
+            if( manager.getDefinition(LINKCONFIG_PERSISTENCE_DEFINITION_NAME)==null ) {
+                DynStruct definition = manager.addDefinition(
+                        LinkConfig.class,
+                        LINKCONFIG_PERSISTENCE_DEFINITION_NAME,
+                        LINKCONFIG_PERSISTENCE_DEFINITION_NAME+" Persistence definition",
+                        null, 
+                        null
+                );
+
+                definition.addDynFieldString("fieldName").setMandatory(true);
+                definition.addDynFieldString("extension").setMandatory(false);
+                definition.addDynFieldString("actionCode").setMandatory(true);
+            }
+            return Boolean.TRUE;
+        }
+        
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LinkConfig.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/ConfigTab.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/ConfigTab.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/ConfigTab.java	(revision 38357)
@@ -0,0 +1,483 @@
+/* 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.hyperlink.app.extension.config.gui;
+
+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.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.ArrayList;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.border.EtchedBorder;
+import javax.swing.border.TitledBorder;
+
+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.view.legend.gui.AbstractThemeManagerPage;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.hyperlink.app.extension.AbstractActionManager;
+import org.gvsig.hyperlink.app.extension.HyperlinkExtension;
+import org.gvsig.hyperlink.app.extension.config.LayerLinkConfig;
+import org.gvsig.hyperlink.app.extension.config.LinkConfig;
+import org.gvsig.hyperlink.app.extension.layers.ILinkLayerManager;
+import org.gvsig.hyperlink.app.extension.layers.IncompatibleLayerException;
+import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+
+public class ConfigTab extends AbstractThemeManagerPage implements IWindow,
+    ActionListener, ItemListener {
+
+    FLayer layer;
+    ArrayList rows = new ArrayList();
+    JPanel rowList = null;
+    GridBagLayout listLayout = null;
+    private String[] actionCodes = null;
+    private String[] actionNames = null;
+    WindowInfo _windowInfo = null;
+    JButton jbt_accept = null, jbt_cancel = null;
+    JPanel emptyRow;
+    JCheckBox jcb_enabled = null;
+    JPanel borderPanel = null;
+    JButton jbt_addAction = null, jbt_removeAction = null;
+
+    public ConfigTab() {
+        super();
+        initialize();
+    }
+
+    private void initialize() {
+        this.setLayout(new GridBagLayout());
+
+        Insets insets = new Insets(8, 8, 8, 8);
+        GridBagConstraints constraints = new GridBagConstraints();
+        constraints.gridx = 0;
+        constraints.gridy = 0;
+        constraints.weightx = 1.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.NORTHWEST;
+        this.add(getEnabledCheckBox(), constraints);
+
+        borderPanel = new JPanel(new GridBagLayout());
+        borderPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
+            PluginServices.getText(this, "Actions"),
+            TitledBorder.DEFAULT_JUSTIFICATION,
+            TitledBorder.DEFAULT_POSITION,
+            null,
+            null));
+
+        insets = new Insets(8, 8, 8, 8);
+        constraints = new GridBagConstraints();
+        constraints.gridx = 0;
+        constraints.gridy = 0;
+        constraints.weightx = 1.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.NORTHWEST;
+        borderPanel.add(getAddRemoveActionsPanel(), constraints);
+
+        listLayout = new GridBagLayout();
+        rowList = new JPanel(listLayout);
+
+        constraints.gridx = 0;
+        constraints.gridy = 0;
+        constraints.weightx = 1.0;
+        constraints.weighty = 1.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.SOUTH;
+        emptyRow = new JPanel();
+        rowList.add(emptyRow, constraints);
+
+        JScrollPane scrolledList = new JScrollPane();
+        scrolledList.setBorder(null);
+        scrolledList.setViewportView(rowList);
+
+        constraints.gridx = 0;
+        constraints.gridy = 1;
+        constraints.weightx = 1.0;
+        constraints.weighty = 1.0;
+        constraints.fill = GridBagConstraints.BOTH;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.CENTER;
+        borderPanel.add(scrolledList, constraints);
+
+        constraints.gridx = 0;
+        constraints.gridy = 1;
+        constraints.weightx = 1.0;
+        constraints.weighty = 1.0;
+        constraints.fill = GridBagConstraints.BOTH;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.NORTHWEST;
+        this.add(borderPanel, constraints);
+
+        // initAcceptCancelButtons(); uncomment this if you want to use this
+        // window outside the ThemeManager
+    }
+
+    private void initAcceptCancelButtons() {
+        JPanel acceptCancelButtons = new JPanel(new GridBagLayout());
+        Insets insets = new Insets(14, 4, 8, 8);
+        GridBagConstraints constraints = new GridBagConstraints();
+        constraints.gridx = 0;
+        constraints.gridy = 0;
+        constraints.weightx = 1.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.EAST;
+        acceptCancelButtons.add(getAcceptButton(), constraints);
+
+        constraints.gridx = 1;
+        constraints.gridy = 0;
+        constraints.weightx = 0.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.EAST;
+        acceptCancelButtons.add(getCancelButton(), constraints);
+
+        constraints.gridx = 0;
+        constraints.gridy = 2;
+        constraints.weightx = 0.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.insets = insets;
+        constraints.anchor = GridBagConstraints.SOUTHEAST;
+        this.add(acceptCancelButtons, constraints);
+    }
+
+    private String[] getActionNames() {
+        if (actionNames == null) {
+            ExtensionPoint actions =
+                ToolsLocator.getExtensionPointManager()
+                    .get(HyperlinkExtension.ACTIONSEXTENSIONPOINT);
+
+            String[] actionArray = new String[actions.getCount()];
+            String[] codes = getActionCodes();
+            for (int i = 0; i < codes.length; i++) {
+                try {
+                    AbstractActionManager aam =
+                        (AbstractActionManager) actions.get(codes[i])
+                            .getExtension()
+                            .newInstance();
+                    actionArray[i] = aam.getName();
+                } catch (InstantiationException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                } catch (IllegalAccessException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+            actionNames = actionArray;
+        }
+        return actionNames;
+    }
+
+    private String[] getActionCodes() {
+        if (actionCodes == null) {
+            ExtensionPoint actions =
+                ToolsLocator.getExtensionPointManager()
+                    .get(HyperlinkExtension.ACTIONSEXTENSIONPOINT);
+            String[] actionArray = new String[actions.getCount()];
+            actionArray = (String[]) actions.getNames().toArray(actionArray);
+            actionCodes = actionArray;
+        }
+        return actionCodes;
+    }
+
+    private String[] getCandidateFields() {
+        HyperlinkExtension ext =
+            (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
+        ManagerRegistry registry = ext.getLayerManager();
+        try {
+            ILinkLayerManager manager;
+            manager = registry.get(layer);
+            manager.setLayer(layer);
+            return manager.getFieldCandidates();
+        } catch (InstantiationException e) {
+            PluginServices.getLogger()
+                .warn("Hyperlink: error getting candidate fields", e);
+        } catch (IllegalAccessException e) {
+            PluginServices.getLogger()
+                .warn("Hyperlink: error getting candidate fields", e);
+        } catch (ClassNotFoundException e) {
+            PluginServices.getLogger()
+                .warn("Hyperlink: error getting candidate fields", e);
+        } catch (IncompatibleLayerException e) {
+            PluginServices.getLogger()
+                .warn("Hyperlink: error getting candidate fields", e);
+        } catch (NullPointerException e) {
+            PluginServices.getLogger().warn("Hyperlink: error getting manager", e);
+        }
+        return new String[0];
+    }
+
+    public void acceptAction() {
+        applyAction();
+    }
+
+    public void applyAction() {
+        LayerLinkConfig config = new LayerLinkConfig();
+        for (int i = 0; i < rows.size(); i++) {
+            LinkRow row = (LinkRow) rows.get(i);
+            config.addLink(getActionCodes()[row.getSelectedAction()],
+                row.getSelectedField(),
+                row.getExtension());
+        }
+        config.setEnabled(getEnabledCheckBox().isSelected());
+        layer.setProperty(HyperlinkExtension.LAYERPROPERTYNAME, config);
+    }
+
+    public void cancelAction() {
+    }
+
+    public String getName() {
+        return PluginServices.getText(this, "Hyperlink");
+    }
+
+    public void setModel(FLayer layer) {
+        this.layer = layer;
+        synchronized (rows) {
+            HyperlinkExtension ext =
+                (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
+            LayerLinkConfig layerConfig = ext.loadLegacyConfig(layer);
+            for (int i = rows.size() - 1; i >= 0; i--) { // clean rows
+                LinkRow row = (LinkRow) rows.remove(i);
+                rowList.remove(row);
+            }
+
+            if (layerConfig != null) {
+                for (int i = 0; i < layerConfig.linkCount(); i++) {
+                    LinkRow row = addRow();
+                    LinkConfig config = layerConfig.getLink(i);
+                    String selectedAction = config.getActionCode();
+                    String[] actions = getActionCodes();
+                    for (int j = 0; j < actions.length; j++) {
+                        if (actions[j].equals(selectedAction)) {
+                            row.setSelectedAction(j);
+                        }
+                    }
+                    row.setSelectedField(config.getFieldName());
+                    row.setExtension(config.getExtension());
+                }
+                if (layerConfig.linkCount() < 1) {
+                    addRow(); // just one row by default
+                }
+                setLinkEnabled(layerConfig.isEnabled());
+            } else {
+                addRow(); // just one row by default
+                setLinkEnabled(false);
+            }
+        }
+    }
+
+    protected JPanel getAddRemoveActionsPanel() {
+        JPanel container = new JPanel();
+        container.add(getAddActionButton());
+        container.add(getRemoveActionButton());
+        return container;
+    }
+
+    protected LinkRow addRow() {
+        LinkRow row = new LinkRow();
+        row.setFields(getCandidateFields());
+        row.setActions(getActionNames());
+        synchronized (rows) {
+            rows.add(row);
+
+            GridBagConstraints constraints = new GridBagConstraints();
+            constraints.gridx = 0;
+            constraints.gridy = rows.size() - 1;
+            constraints.weightx = 1.0;
+            constraints.weighty = 0.0;
+            constraints.fill = GridBagConstraints.HORIZONTAL;
+            constraints.insets = new Insets(2, 4, 2, 4);
+            constraints.anchor = GridBagConstraints.NORTH;
+            rowList.add(row, constraints);
+
+            constraints = new GridBagConstraints();
+            constraints.gridx = 0;
+            constraints.gridy = rows.size();
+            constraints.weightx = 1.0;
+            constraints.weighty = 1.0;
+            constraints.fill = GridBagConstraints.NONE;
+            constraints.anchor = GridBagConstraints.CENTER;
+            listLayout.setConstraints(emptyRow, constraints);
+        }
+        validate();
+        return row;
+    }
+
+    protected boolean removeBottomRow() {
+        LinkRow row;
+        synchronized (rows) {
+            if (rows.size() <= 1)
+                return false;
+            row = (LinkRow) rows.get(rows.size() - 1);
+            rows.remove(rows.size() - 1);
+        }
+        rowList.remove(row);
+        GridBagConstraints constraints = new GridBagConstraints();
+        constraints.gridx = 0;
+        constraints.gridy = rows.size();
+        constraints.weightx = 1.0;
+        constraints.weighty = 1.0;
+        constraints.fill = GridBagConstraints.NONE;
+        constraints.anchor = GridBagConstraints.CENTER;
+        listLayout.setConstraints(emptyRow, constraints);
+
+        validate();
+        repaint();
+        return true;
+    }
+
+    protected JButton getAddActionButton() {
+        if (jbt_addAction == null) {
+            jbt_addAction =
+                new JButton(PluginServices.getText(this, "Add_action"));
+            jbt_addAction.setSize(150, 70);
+            jbt_addAction.setActionCommand("addButton");
+            jbt_addAction.addActionListener(new ActionListener() {
+
+                public void actionPerformed(ActionEvent e) {
+                    if (e.getActionCommand().equals("addButton")) {
+                        addRow();
+                    }
+                }
+            });
+        }
+        return jbt_addAction;
+    }
+
+    protected JButton getRemoveActionButton() {
+        if (jbt_removeAction == null) {
+            jbt_removeAction =
+                new JButton(PluginServices.getText(this, "Remove_action"));
+            jbt_removeAction.setActionCommand("removeButton");
+            jbt_removeAction.addActionListener(new ActionListener() {
+
+                public void actionPerformed(ActionEvent e) {
+                    if (e.getActionCommand().equals("removeButton")) {
+                        removeBottomRow();
+                    }
+                }
+            });
+            return jbt_removeAction;
+        }
+        return jbt_removeAction;
+    }
+
+    public WindowInfo getWindowInfo() {
+        if (_windowInfo == null) {
+            _windowInfo =
+                new WindowInfo(WindowInfo.ICONIFIABLE | WindowInfo.MAXIMIZABLE
+                    | WindowInfo.RESIZABLE);
+            _windowInfo.setWidth(680);
+            _windowInfo.setHeight(500);
+            _windowInfo.setTitle(PluginServices.getText(this,
+                "Hyperlink_Settings"));
+        }
+        return _windowInfo;
+    }
+
+    protected JButton getAcceptButton() {
+        if (jbt_accept == null) {
+            jbt_accept =
+                new org.gvsig.gui.beans.swing.JButton(PluginServices.getText(this,
+                    "Aceptar"));
+            jbt_accept.addActionListener(this);
+        }
+        return jbt_accept;
+    }
+
+    protected JButton getCancelButton() {
+        if (jbt_cancel == null) {
+            jbt_cancel =
+                new org.gvsig.gui.beans.swing.JButton(PluginServices.getText(this,
+                    "Cancel"));
+            jbt_cancel.addActionListener(this);
+        }
+        return jbt_cancel;
+    }
+
+    protected JCheckBox getEnabledCheckBox() {
+        if (jcb_enabled == null) {
+            jcb_enabled =
+                new JCheckBox(PluginServices.getText(this, "Enable_hyperlink"),
+                    true);
+            jcb_enabled.addItemListener(this);
+        }
+        return jcb_enabled;
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        if (e.getSource() == getAcceptButton()) {
+            acceptAction();
+            PluginServices.getMDIManager().closeWindow(this);
+
+        } else
+            if (e.getSource() == getCancelButton()) {
+                cancelAction();
+                PluginServices.getMDIManager().closeWindow(this);
+            }
+    }
+
+    protected void setListEnabled(boolean enabled) {
+        getAddActionButton().setEnabled(enabled);
+        getRemoveActionButton().setEnabled(enabled);
+        synchronized (rows) {
+            for (int i = 0; i < rows.size(); i++) {
+                LinkRow row = (LinkRow) rows.get(i);
+                row.setEnabled(enabled);
+            }
+        }
+    }
+
+    protected void setLinkEnabled(boolean enabled) {
+        getEnabledCheckBox().setSelected(enabled);
+        setListEnabled(enabled);
+    }
+
+    public void itemStateChanged(ItemEvent e) {
+        if (e.getSource() == getEnabledCheckBox()) {
+            if (e.getStateChange() == ItemEvent.DESELECTED) {
+                setListEnabled(false);
+            } else {
+                setListEnabled(true);
+            }
+        }
+    }
+
+    public Object getWindowProfile() {
+        return WindowInfo.DIALOG_PROFILE;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/ConfigTab.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/LinkRow.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/LinkRow.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/LinkRow.java	(revision 38357)
@@ -0,0 +1,188 @@
+/* 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.hyperlink.app.extension.config.gui;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+
+import javax.swing.BorderFactory;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.border.BevelBorder;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+
+public class LinkRow extends JPanel {
+
+    JPanel pnlFieldAndExtension = null;
+    JPanel pnlHyperLinkAction = null;
+    JLabel lblLinkExtension = null;
+    JLabel lblLinkField = null;
+    JLabel lblDefaultAction = null;
+    JTextField txtLinkExtension = null;
+    JComboBox cmbLinkField = null;
+    JComboBox cmbLinkType = null;
+
+    public LinkRow() {
+        super();
+        initialize();
+    }
+
+    private void initialize() {
+        GridBagLayoutPanel aux = new GridBagLayoutPanel();
+        aux.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
+        aux.addComponent(getPnlFieldAndExtension(), getPnlHyperLinkAction());
+        this.setLayout(new BorderLayout());
+        this.add(aux, BorderLayout.CENTER);
+    }
+
+    public String getSelectedField() {
+        return (String) getCmbLinkField().getSelectedItem();
+    }
+
+    public void setFields(String[] fields) {
+        for (int i = 0; i < fields.length; i++) {
+            getCmbLinkField().addItem(fields[i]);
+        }
+    }
+
+    public void setSelectedField(String field) {
+        getCmbLinkField().setSelectedItem(field);
+    }
+
+    public int getSelectedAction() {
+        return getCmbLinkType().getSelectedIndex();
+    }
+
+    public String getSelectedActionName() {
+        return (String) getCmbLinkType().getSelectedItem();
+    }
+
+    public void setActions(String[] actions) {
+        for (int i = 0; i < actions.length; i++) {
+            getCmbLinkType().addItem(actions[i]);
+        }
+    }
+
+    public void setSelectedAction(String action) {
+        getCmbLinkType().setSelectedItem(action);
+    }
+
+    public void setSelectedAction(int action) {
+        getCmbLinkType().setSelectedIndex(action);
+    }
+
+    public String getExtension() {
+        return getTxtLinkExtension().getText();
+    }
+
+    public void setExtension(String extension) {
+        getTxtLinkExtension().setText(extension);
+    }
+
+    private JPanel getPnlFieldAndExtension() {
+        if (pnlFieldAndExtension == null) {
+            lblLinkExtension = new JLabel();
+            lblLinkExtension.setText(" \t \t"
+                + PluginServices.getText(this, "Extension"));
+            lblLinkField = new JLabel();
+            lblLinkField.setText(PluginServices.getText(this, "Campo"));
+            pnlFieldAndExtension = new JPanel();
+            pnlFieldAndExtension.add(lblLinkField, null);
+            pnlFieldAndExtension.add(getCmbLinkField(), null);
+            pnlFieldAndExtension.add(lblLinkExtension, null);
+            pnlFieldAndExtension.add(getTxtLinkExtension(), null);
+        }
+        return pnlFieldAndExtension;
+    }
+
+    /**
+     * This method initializes jPanel8. This panel contains the ComboBox to
+     * select
+     * the action, (type of HyperLink)
+     * 
+     * @return javax.swing.JPanel
+     */
+    private JPanel getPnlHyperLinkAction() {
+        if (pnlHyperLinkAction == null) {
+            lblDefaultAction = new JLabel();
+            lblDefaultAction.setText(PluginServices.getText(this, "Action")
+                + "  ");
+            pnlHyperLinkAction = new JPanel();
+            pnlHyperLinkAction.add(lblDefaultAction, null);
+            pnlHyperLinkAction.add(getCmbLinkType(), null);
+        }
+        return pnlHyperLinkAction;
+    }
+
+    /**
+     * This method initializes jComboBox
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private JComboBox getCmbLinkField() {
+        if (cmbLinkField == null) {
+            cmbLinkField = new JComboBox();
+        }
+        return cmbLinkField;
+    }
+
+    /**
+     * This method initializes jTextField
+     * 
+     * @return javax.swing.JTextField
+     */
+    private JTextField getTxtLinkExtension() {
+        if (txtLinkExtension == null) {
+            txtLinkExtension = new JTextField();
+            txtLinkExtension.setPreferredSize(new Dimension(40, 20));
+        }
+        return txtLinkExtension;
+    }
+
+    /**
+     * This method initializes jComboBox1
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private JComboBox getCmbLinkType() {
+        if (cmbLinkType == null) {
+            cmbLinkType = new JComboBox();
+
+        }
+        return cmbLinkType;
+    }
+
+    public void setEnabled(boolean enabled) {
+        super.setEnabled(enabled);
+        getTxtLinkExtension().setEnabled(enabled);
+        getCmbLinkField().setEnabled(enabled);
+        getCmbLinkType().setEnabled(enabled);
+        lblLinkField.setEnabled(enabled);
+        lblDefaultAction.setEnabled(enabled);
+        lblLinkExtension.setEnabled(enabled);
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/LinkRow.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractHyperLinkPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractHyperLinkPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractHyperLinkPanel.java	(revision 38357)
@@ -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.hyperlink.app.extension;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+
+import javax.swing.JPanel;
+
+import org.gvsig.andami.PluginServices;
+
+/**
+ * This class extends JPanel and implements IExtensioBuilder. Provides the
+ * methods that will be reimplemented by the descendant class. Creates a panel
+ * that shows the content of a URI. The necessary code that allows to show the
+ * content of the URI is provided by the descendant class. Implmenting
+ * IExtenssionBuilder this class and its the descendant provides a point of
+ * extension for other extensions.
+ */
+public abstract class AbstractHyperLinkPanel extends JPanel {
+
+    protected URI document;
+
+    public AbstractHyperLinkPanel(URI doc) {
+        super();
+        document = doc;
+    }
+
+    public URI getURI() {
+        return document;
+    }
+
+    /**
+     * Tries to make an absolute url from a relative one,
+     * and returns true if the URL is valid.
+     * false otherwise
+     * 
+     * @return
+     */
+    protected boolean checkAndNormalizeURI() {
+        if (document == null) {
+            PluginServices.getLogger().warn(PluginServices.getText(this,
+                "Hyperlink_linked_field_doesnot_exist"));
+            return false;
+        } else
+            if (!document.isAbsolute()) {
+                try {
+                    // try as a relative path
+                    File file =
+                        new File(document.toString()).getCanonicalFile();
+                    if (!file.exists()) {
+                        PluginServices.getLogger()
+                            .warn(PluginServices.getText(this,
+                                "Hyperlink_linked_field_doesnot_exist"));
+                        return false;
+                    }
+                    document = file.toURI();
+                } catch (IOException e) {
+                    PluginServices.getLogger()
+                        .warn(PluginServices.getText(this,
+                            "Hyperlink_linked_field_doesnot_exist"));
+                    return false;
+                }
+            }
+        return true;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractHyperLinkPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/pom.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/pom.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/pom.xml	(revision 38357)
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<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.hyperlink.app.extension</artifactId>
+	<packaging>jar</packaging>
+	<name>Tools: Hyperlink</name>
+	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.hyperlink.app</artifactId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.andami</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.i18n</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.tools.lib</artifactId>
+            <scope>compile</scope>
+		</dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.file</artifactId>
+            <classifier>store.dxf</classifier>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.file</artifactId>
+            <classifier>store.dgn</classifier>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.file</artifactId>
+            <classifier>store.shp</classifier>
+            <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.fmap.mapcontext</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
+			<classifier>impl</classifier>
+			<scope>runtime</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
+			<classifier>operation</classifier>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.app</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.dwg.extension</artifactId>
+            <scope>compile</scope>
+		</dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.projection</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.metadata.lib.basic.api</artifactId>
+            <scope>compile</scope>
+        </dependency>        
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.ui</artifactId>
+            <scope>compile</scope>
+        </dependency>        
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jpedal</groupId>
+            <artifactId>jpedal_lgpl</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.sun</groupId>
+            <artifactId>jimi</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-bridge</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.xmlgraphics</groupId>
+            <artifactId>batik-script</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis-ext</artifactId>
+            <scope>compile</scope>
+        </dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.fmap.geometry</artifactId>
+            <scope>compile</scope>
+		</dependency>
+	</dependencies>
+	<profiles>
+		<profile>
+			<id>gvsig-install</id>
+			<activation>
+				<activeByDefault>true</activeByDefault>
+			</activation>
+			<properties>
+				<!-- Default gvSIG installation folder relative to the current workspace -->
+				<gvsig.install.dir>${basedir}/../../build/product</gvsig.install.dir>
+			</properties>
+		</profile>
+	</profiles>
+</project>
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/pom.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/distribution/distribution.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/distribution/distribution.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/distribution/distribution.xml	(revision 38357)
@@ -0,0 +1,30 @@
+<assembly>
+	<id>distribution</id>
+	<formats>
+		<format>dir</format>
+	</formats>
+	<fileSets>
+		<!-- Estructure for the extension -->
+		<fileSet>
+			<directory>src/main/resources</directory>
+			<outputDirectory>${extension.install.dir.name}
+			</outputDirectory>
+		</fileSet>
+	</fileSets>
+    <files>
+        <file>
+            <source>package.info</source>
+            <outputDirectory>${extension.install.dir.name}
+            </outputDirectory>
+        </file>
+    </files>
+   	<dependencySets>
+		<dependencySet>
+			<outputDirectory>${extension.install.dir.name}/${library-dir}
+			</outputDirectory>
+			<includes>
+				<include>org.gvsig:org.gvsig.hyperlink.app.extension</include>
+			</includes>
+		</dependencySet>
+	</dependencySets>
+</assembly>

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/distribution/distribution.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain


Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension
___________________________________________________________________
Added: svn:ignore
   + target
.project
.settings
.classpath
bin
package.info


Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/prepare-workspace.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/prepare-workspace.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/prepare-workspace.xml	(revision 38357)
@@ -0,0 +1,151 @@
+<project name="org.gvsig.initial.build" default="prepare-workspace">
+
+	<dirname property="org.gvsig.initial.build.basedir" file="${ant.file.org.gvsig.initial.build}" />
+
+	<property name="workspace.basedir" value="${org.gvsig.initial.build.basedir}/.." />
+	<property name="build.basedir" value="${workspace.basedir}/org.gvsig.maven.base.build" description="Eclipse workspace location" />
+	<property name="build.jar.version" value="1.0.8-SNAPSHOT" />
+	<property name="build.jar.file" value="org.gvsig.maven.base.build-${build.jar.version}.jar" />
+
+	<property name="ant.libs.dir" location="${build.basedir}" description="Additional ant tasks libs folder" />
+
+	<target name="check-maven-base-build-available">
+		<available file="${user.home}/.m2/repository/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}" property="maven-base-build-available" />
+	</target>
+
+	<target name="get-maven-base-build-local" depends="check-maven-base-build-available" if="maven-base-build-available">
+		<!-- Unzip de build jar file from the maven repository into the workspace root folder -->
+		<copy todir="${workspace.basedir}" preservelastmodified="false" filtering="false">
+			<zipfileset src="${user.home}/.m2/repository/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}">
+				<patternset>
+					<exclude name="META-INF/**" />
+				</patternset>
+			</zipfileset>
+		</copy>
+	</target>
+
+	<target name="get-maven-base-build-remote" depends="check-maven-base-build-available" unless="maven-base-build-available">
+		<mkdir dir="target" />
+
+		<!-- Download the build jar file -->
+		<get src="http://devel.gvsig.org/m2repo/j2se/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}" dest="target/${build.jar.file}" verbose="true" />
+
+		<!-- Unzip de build jar file into the workspace root folder -->
+		<copy todir="${workspace.basedir}" preservelastmodified="false" filtering="false">
+			<zipfileset src="target/${build.jar.file}">
+				<patternset>
+					<exclude name="META-INF/**" />
+				</patternset>
+			</zipfileset>
+		</copy>
+
+	</target>
+	
+	<target name="find.depends.natives.file">
+	    <condition property="depends.natives.file.exists">
+            <available file="${org.gvsig.initial.build.basedir}/DEPENDS_ON_NATIVE_LIBRARIES"/>
+	    </condition>	
+	</target>
+	
+	<target name="find.gvsig.platform.properties.file" 
+			depends="find.depends.natives.file"
+			if="depends.natives.file.exists">
+	    <condition property="gvsig.platform.exists">
+            <available file="${user.home}/.gvsig.platform.properties"/>
+	    </condition>	
+	</target>
+	
+	<target name="check.gvsig.platform.properties" 
+			depends="find.gvsig.platform.properties.file">
+		<fail if="depends.natives.file.exists" unless="gvsig.platform.exists">
+ERROR!!
+	
+You have to define your gvSIG platform properties, 
+by creating the file: ${user.home}/.gvsig.platform.properties
+with the following content:
+
+native_platform=linux
+native_distribution=all
+native_compiler=gcc4
+native_arch=i386
+native_libraryType=dynamic
+export native_classifier=${native_platform}-${native_distribution}-${native_compiler}-${native_arch}-${native_libraryType}
+
+Replace the fifth initial variables values with the ones appropiate 
+to your platform.
+	
+If you use maven in the command line, you can use the previous file also
+to define the MAVEN_OPTS environment variable, by adding to your 
+.bash_rc file something like this:
+
+if [ -f "${HOME}/.gvsig.platform.properties" ]
+then
+    . ${HOME}/.gvsig.platform.properties
+    export MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=64m -Dnative-classifier=${native_classifier}"
+else
+    export MAVEN_OPTS="-Xmx256M -XX:MaxPermSize=64m"
+fi
+
+It will work if you use the bash shell. In any other case or platform, you'll
+have to define your MAVEN_OPTS environment variable and set the 
+"native-classifier" parameter directly.
+		</fail>			
+	
+	</target>
+
+	<target name="prepare-workspace" depends="get-maven-base-build-local,get-maven-base-build-remote,check.gvsig.platform.properties">
+
+		<mkdir dir="target" />
+
+		<chmod dir="${build.basedir}/maven/bin" perm="u+x" includes="m2,mvn,mvnDebug" />
+
+		<!-- Copy the maven launchers to the workspace metadata folder -->
+		<copy todir="${workspace.basedir}/.metadata">
+			<fileset dir="${build.basedir}/eclipse-launchers">
+				<exclude name="**/org.eclipse.jdt.core.prefs" />
+				<exclude name="**/org.eclipse.core.variables.prefs" />
+			</fileset>
+		</copy>
+
+		<concat destfile="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs" append="true">
+			<filelist dir="${build.basedir}/eclipse-launchers/.plugins/org.eclipse.core.runtime/.settings" files="org.eclipse.jdt.core.prefs" />
+		</concat>
+		<concat destfile="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.variables.prefs" append="true">
+			<filelist dir="${build.basedir}/eclipse-launchers/.plugins/org.eclipse.core.runtime/.settings" files="org.eclipse.core.variables.prefs" />
+		</concat>
+
+		<!-- Configure the eclipse workspace -->
+		<ant antfile="${build.basedir}/maven-goals.xml" target="mvn-configure-eclipse-workspace" />
+
+		<!-- Configure the gvSIG profile -->
+		<ant antfile="${build.basedir}/check-gvsig-profile.xml" />
+
+		<property name="user-settings-file-location" value="${user.home}/.m2/settings.xml" />
+
+		<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask">
+			<classpath>
+				<pathelement location="${ant.libs.dir}/com.oopsconsultancy.xmltask-1.16.1.jar" />
+			</classpath>
+		</taskdef>
+
+		<xmltask source="${user-settings-file-location}" dest="${user-settings-file-location}">
+			<copy path="//:settings/:profiles/:profile[:id/text() = 'gvsig-install']/:properties/:gvsig.install.dir/text()" property="current-gvsig-location" />
+		</xmltask>
+
+		<replace file="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs" token="@GVSIG_HOME@" value="${current-gvsig-location}" />
+		<replace file="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.variables.prefs" token="@GVSIG_HOME@" value="${current-gvsig-location}" />
+
+		<!-- Compile, install and generate eclipse projects -->
+		<ant antfile="${build.basedir}/maven-goals.xml" target="mvn-install-and-eclipse-eclipse" />
+
+		<echo>INFORMATION!!!</echo>
+		<echo>Restart eclipse and then proceed to import the subprojects contained into the main project</echo>
+
+		<!-- TODO: copiar al proyecto de configuración general -->
+	</target>
+
+	<target name="clean">
+		<delete dir="target" />
+	</target>
+	
+</project>

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/prepare-workspace.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/pom.xml
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/pom.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/pom.xml	(revision 38357)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>org.gvsig.hyperlink.app</artifactId>
+	<packaging>pom</packaging>
+	<version>1.0.0-SNAPSHOT</version>
+	<name>org.gvsig.hyperlink.app</name>
+	<description>View. Hyperlink support</description>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.maven.base.extension.pom</artifactId>
+        <version>1.0.8-SNAPSHOT</version>
+    </parent>
+
+    <scm>
+        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</connection>
+        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</developerConnection>
+        <url>https://devel.gvsig.org/redmine/projects/gvsig-desktop/repository/show/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</url>
+    </scm>
+
+	<developers>
+		<developer>
+			<id>jjdelcerro</id>
+			<name>Joaqu�n Jos� del Cerro</name>
+			<email>jjdelcerro@gvsig.org</email>
+			<roles>
+				<role>Architect</role>
+				<role>Developer</role>
+			</roles>
+		</developer>
+		<developer>
+			<id>jbadia</id>
+			<name>Jos� Bad�a</name>
+			<email>badia_jos@gva.es</email>
+			<roles>
+				<role>Developer</role>
+			</roles>
+		</developer>
+		<developer>
+			<id>cordinyana</id>
+			<name>C�sar Ordi�ana</name>
+			<email>cordinyana@gvsig.com</email>
+			<roles>
+				<role>Architect</role>
+				<role>Developer</role>
+			</roles>
+		</developer>
+	</developers>
+
+	<repositories>
+		<repository>
+			<id>gvsig-public-http-repository</id>
+			<name>gvSIG maven public HTTP repository</name>
+            <url>http://devel.gvsig.org/m2repo/j2se</url>
+			<releases>
+				<enabled>true</enabled>
+				<updatePolicy>daily</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+				<updatePolicy>daily</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</snapshots>
+		</repository>
+	</repositories>
+    <dependencyManagement>
+        <dependencies>          
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.core.maven.dependencies</artifactId>
+                <version>2.0.1-SNAPSHOT</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.fmap.dal.store.raster</artifactId>
+                <version>2.0-SNAPSHOT</version>
+                <scope>compile</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.app</artifactId>
+                <version>2.0-SNAPSHOT</version>
+                <scope>compile</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.dwg.extension</artifactId>
+                <version>2.0-SNAPSHOT</version>
+                <scope>compile</scope>
+            </dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<modules>
+		<module>org.gvsig.hyperlink.app.extension</module>
+	</modules>
+	<properties>
+		<package.info.state>alpha5</package.info.state>
+	</properties>
+</project>
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/pom.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/README.txt
===================================================================
--- tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/README.txt	(revision 0)
+++ tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/README.txt	(revision 38357)
@@ -0,0 +1,18 @@
+The first time you checkout the current project to a new workspace, 
+you have to prepare it to be able to work easily with maven from
+eclipse itself.
+
+Perform the following steps:
+
+1.- Launch the *prepare-workspace.xml* ant build file. 
+    You can do it by loading the file into the ant view, 
+    and running the default task, or right-clicking the 
+    file from the package explorer or the navigator and
+    select the option: *Run as > Ant build*. 
+    
+2.- Restart eclipse.
+
+3.- Import the subprojects of the project you have just checked out.
+
+Those steps are only needed once per workspace.     
+

Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app/README.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain


Property changes on: tags/v2_0_0_Build_2047/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app
___________________________________________________________________
Added: svn:ignore
   + target
.settings
.classpath

.project


