Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/pom.xml	(revision 2861)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app.lin.x86_64</artifactId>
+  <packaging>jar</packaging>
+   
+ 	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.raster.app</artifactId>
+    <version>2.2.4-SNAPSHOT</version>
+	</parent>
+
+  <properties>
+    <gvsig.package.info.operatingSystem>lin</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>x86_64</gvsig.package.info.architecture>
+    
+    <native.classifier>linux-all-gcc4-X86_64-dynamic</native.classifier>
+  </properties>
+
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <version>2.0.0-SNAPSHOT</version>
+        </dependency> 
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <type>zip</type>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <scope>runtime</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+  
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+          	<id>unpack</id>
+	        <phase>process-sources</phase>
+	        <goals>
+	          <goal>unpack</goal>
+	        </goals>
+	        <configuration>
+	          <artifactItems>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+		            <artifactId>org.gvsig.raster.app.common</artifactId>
+		            <type>zip</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target</outputDirectory>
+	            </artifactItem>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.jpotrace</artifactId>
+		            <classifier>${native.classifier}</classifier>
+		            <type>tar.gz</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target/native</outputDirectory>
+	            </artifactItem>
+	          </artifactItems>
+	        </configuration>
+          </execution>
+        </executions>
+	  </plugin>
+  
+  
+    </plugins>
+  </build>
+
+  <!-- 
+  The profiles only configure the automatic deploy of gvSIG plugin in the gvSIG
+  configured in HOME/.gvsig-devel.properties
+  -->
+  <profiles>
+  
+    <profile>
+      <id>gvsig-plugin-install-raster-linux-x86_64</id>
+      <activation>
+         <os>
+             <family>unix</family>
+             <name>linux</name>
+             <arch>x86_64</arch>
+         </os>
+      </activation>
+	    <properties>
+	      <gvsig.install.plugin>true</gvsig.install.plugin>
+	    </properties>
+    </profile>
+
+    <profile>
+      <id>gvsig-plugin-install-raster-linux-amd64</id>
+      <activation>
+         <os>
+             <family>unix</family>
+             <name>linux</name>
+             <arch>amd64</arch>
+         </os>
+      </activation>
+      <properties>
+         <gvsig.install.plugin>true</gvsig.install.plugin>
+      </properties>
+    </profile>
+
+  </profiles>
+  
+</project>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,70 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${gvsig.package.info.code}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+      <source>target/package.info</source>
+    </file>
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>target/org.gvsig.raster.app.common</directory>
+      <outputDirectory>.</outputDirectory>
+      <excludes>
+      	<exclude>package.info</exclude>
+      </excludes>
+    </fileSet>
+    <fileSet>
+      <directory>target/native/lib</directory>
+      <outputDirectory>native</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		<includes>
+            <include>org.gvsig:org.gvsig.jpotrace:jar</include>
+		</includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/resources-plugin/autorun.sh
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/resources-plugin/autorun.sh	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64/src/main/resources-plugin/autorun.sh	(revision 2861)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# gvSIG. Desktop Geographic Information System.
+#
+# Copyright (C) 2007-2013 gvSIG Association.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.
+#
+# For any additional information, do not hesitate to contact us
+# at info AT gvsig.com, or visit our website www.gvsig.com.
+#
+
+
+#
+# Plugin autorun
+# 
+
+PLUGIN_NAME=$(basename "$PLUGIN_FOLDER")
+
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PLUGIN_FOLDER/native"
+GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS:$PLUGIN_FOLDER/native"
+
+
+

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86_64
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,70 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${gvsig.package.info.code}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+        <source>target/package.info</source>
+    </file>
+    <file>
+    		<source>target/native/bin/jpotrace001.dll</source>
+        <outputDirectory>install/files</outputDirectory>
+    </file>    
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>target/org.gvsig.raster.app.common</directory>
+      <outputDirectory>.</outputDirectory>
+      <excludes>
+      	<exclude>package.info</exclude>
+      </excludes>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		<includes>
+            <include>org.gvsig:org.gvsig.jpotrace:jar</include>
+		</includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86/pom.xml	(revision 2861)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app.win.x86</artifactId>
+  <packaging>jar</packaging>
+   
+ 	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.raster.app</artifactId>
+    <version>2.2.4-SNAPSHOT</version>
+	</parent>
+
+  <properties>
+    <gvsig.package.info.operatingSystem>win</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>x86</gvsig.package.info.architecture>
+    
+    <native.classifier>win-nt-vs8-i386-dynamic</native.classifier>
+  </properties>
+
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <version>2.0.0-SNAPSHOT</version>
+        </dependency> 
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <type>zip</type>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <scope>runtime</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+  
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+          	<id>unpack</id>
+	        <phase>process-sources</phase>
+	        <goals>
+	          <goal>unpack</goal>
+	        </goals>
+	        <configuration>
+	          <artifactItems>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+		            <artifactId>org.gvsig.raster.app.common</artifactId>
+		            <type>zip</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target</outputDirectory>
+	            </artifactItem>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.jpotrace</artifactId>
+		            <classifier>${native.classifier}</classifier>
+		            <type>tar.gz</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target/native</outputDirectory>
+	            </artifactItem>
+	          </artifactItems>
+	        </configuration>
+          </execution>
+        </executions>
+	  </plugin>
+  
+  
+    </plugins>
+  </build>
+
+  <profiles>
+  
+    <profile>
+      <id>gvsig-plugin-install-raster-windows-x86</id>
+      <activation>
+         <os>
+             <family>windows</family>
+             <!-- Uncomment this when have support for amd64 -->
+             <!-- 
+             <arch>x86</arch>
+             -->
+         </os>
+      </activation>
+	  <properties>
+	    <gvsig.install.plugin>true</gvsig.install.plugin>
+	  </properties>
+    </profile>
+    
+  </profiles>
+  
+</project>
+

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.win.x86
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,70 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${gvsig.package.info.code}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+      <source>target/package.info</source>
+    </file>
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>target/org.gvsig.raster.app.common</directory>
+      <outputDirectory>.</outputDirectory>
+      <excludes>
+      	<exclude>package.info</exclude>
+      </excludes>
+    </fileSet>
+    <fileSet>
+      <directory>target/native/lib</directory>
+      <outputDirectory>native</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		<includes>
+            <include>org.gvsig:org.gvsig.jpotrace:jar</include>
+		</includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/resources-plugin/autorun.sh
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/resources-plugin/autorun.sh	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/src/main/resources-plugin/autorun.sh	(revision 2861)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# gvSIG. Desktop Geographic Information System.
+#
+# Copyright (C) 2007-2013 gvSIG Association.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.
+#
+# For any additional information, do not hesitate to contact us
+# at info AT gvsig.com, or visit our website www.gvsig.com.
+#
+
+
+#
+# Plugin autorun
+# 
+
+PLUGIN_NAME=$(basename "$PLUGIN_FOLDER")
+
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PLUGIN_FOLDER/native"
+GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS:$PLUGIN_FOLDER/native"
+
+
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/pom.xml	(revision 2861)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app.mac_10.5</artifactId>
+  <packaging>jar</packaging>
+   
+ 	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.raster.app</artifactId>
+    <version>2.2.4-SNAPSHOT</version>
+	</parent>
+
+  <properties>
+    <gvsig.package.info.operatingSystem>mac_10.5</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>x86_64</gvsig.package.info.architecture>
+    
+    <native.classifier>mac-10.5-gcc4-universal-dynamic</native.classifier>
+  </properties>
+
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <version>2.0.0-SNAPSHOT</version>
+        </dependency> 
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <type>zip</type>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <scope>runtime</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+  
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+          	<id>unpack</id>
+	        <phase>process-sources</phase>
+	        <goals>
+	          <goal>unpack</goal>
+	        </goals>
+	        <configuration>
+	          <artifactItems>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+		            <artifactId>org.gvsig.raster.app.common</artifactId>
+		            <type>zip</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target</outputDirectory>
+	            </artifactItem>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.jpotrace</artifactId>
+		            <classifier>${native.classifier}</classifier>
+		            <type>tar.gz</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target/native</outputDirectory>
+	            </artifactItem>
+	          </artifactItems>
+	        </configuration>
+          </execution>
+        </executions>
+	  </plugin>
+  
+  
+    </plugins>
+  </build>
+
+  
+</project>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mac_10.5/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/resources-plugin/autorun.sh
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/resources-plugin/autorun.sh	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/resources-plugin/autorun.sh	(revision 2861)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# gvSIG. Desktop Geographic Information System.
+#
+# Copyright (C) 2007-2013 gvSIG Association.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.
+#
+# For any additional information, do not hesitate to contact us
+# at info AT gvsig.com, or visit our website www.gvsig.com.
+#
+
+
+#
+# Plugin autorun
+# 
+
+PLUGIN_NAME=$(basename "$PLUGIN_FOLDER")
+
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PLUGIN_FOLDER/native"
+GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS:$PLUGIN_FOLDER/native"
+
+
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,70 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${gvsig.package.info.code}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+      <source>target/package.info</source>
+    </file>
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>target/org.gvsig.raster.app.common</directory>
+      <outputDirectory>.</outputDirectory>
+      <excludes>
+      	<exclude>package.info</exclude>
+      </excludes>
+    </fileSet>
+    <fileSet>
+      <directory>target/native/lib</directory>
+      <outputDirectory>native</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		<includes>
+            <include>org.gvsig:org.gvsig.jpotrace:jar</include>
+		</includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.fedora.x86/pom.xml	(revision 2861)
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app.fedora.x86</artifactId>
+  <packaging>jar</packaging>
+   
+ 	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.raster.app</artifactId>
+    <version>2.2.4-SNAPSHOT</version>
+	</parent>
+
+  <properties>
+    <gvsig.package.info.operatingSystem>fedora</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>x86</gvsig.package.info.architecture>
+    
+    <native.classifier>fedora11-i586-dynamic</native.classifier>
+  </properties>
+
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <version>2.0.0-SNAPSHOT</version>
+        </dependency> 
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <type>zip</type>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <scope>runtime</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+  
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+          	<id>unpack</id>
+	        <phase>process-sources</phase>
+	        <goals>
+	          <goal>unpack</goal>
+	        </goals>
+	        <configuration>
+	          <artifactItems>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+		            <artifactId>org.gvsig.raster.app.common</artifactId>
+		            <type>zip</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target</outputDirectory>
+	            </artifactItem>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.jpotrace</artifactId>
+		            <classifier>${native.classifier}</classifier>
+		            <type>tar.gz</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target/native</outputDirectory>
+	            </artifactItem>
+	          </artifactItems>
+	        </configuration>
+          </execution>
+        </executions>
+	  </plugin>
+  
+  
+    </plugins>
+  </build>
+
+  
+</project>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/resources-plugin/autorun.sh
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/resources-plugin/autorun.sh	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/resources-plugin/autorun.sh	(revision 2861)
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# gvSIG. Desktop Geographic Information System.
+#
+# Copyright (C) 2007-2013 gvSIG Association.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.
+#
+# For any additional information, do not hesitate to contact us
+# at info AT gvsig.com, or visit our website www.gvsig.com.
+#
+
+
+#
+# Plugin autorun
+# 
+
+PLUGIN_NAME=$(basename "$PLUGIN_FOLDER")
+
+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PLUGIN_FOLDER/native"
+GVSIG_NATIVE_LIBS="$GVSIG_NATIVE_LIBS:$PLUGIN_FOLDER/native"
+
+
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,70 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${gvsig.package.info.code}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+      <source>target/package.info</source>
+    </file>
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>target/org.gvsig.raster.app.common</directory>
+      <outputDirectory>.</outputDirectory>
+      <excludes>
+      	<exclude>package.info</exclude>
+      </excludes>
+    </fileSet>
+    <fileSet>
+      <directory>target/native/lib</directory>
+      <outputDirectory>native</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		<includes>
+            <include>org.gvsig:org.gvsig.jpotrace:jar</include>
+		</includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/pom.xml	(revision 2861)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app.lin.x86</artifactId>
+  <packaging>jar</packaging>
+   
+ 	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.raster.app</artifactId>
+    <version>2.2.4-SNAPSHOT</version>
+	</parent>
+
+  <properties>
+    <gvsig.package.info.operatingSystem>lin</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>x86</gvsig.package.info.architecture>
+    
+    <native.classifier>linux-all-gcc4-i386-dynamic</native.classifier>
+  </properties>
+
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <version>2.0.0-SNAPSHOT</version>
+        </dependency> 
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <type>zip</type>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <classifier>${native.classifier}</classifier>
+          <type>tar.gz</type>
+          <scope>runtime</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+  
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+          	<id>unpack</id>
+	        <phase>process-sources</phase>
+	        <goals>
+	          <goal>unpack</goal>
+	        </goals>
+	        <configuration>
+	          <artifactItems>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+		            <artifactId>org.gvsig.raster.app.common</artifactId>
+		            <type>zip</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target</outputDirectory>
+	            </artifactItem>
+	            <artifactItem>
+		            <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.jpotrace</artifactId>
+		            <classifier>${native.classifier}</classifier>
+		            <type>tar.gz</type>
+					      <overWrite>true</overWrite>
+					      <outputDirectory>target/native</outputDirectory>
+	            </artifactItem>
+	          </artifactItems>
+	        </configuration>
+          </execution>
+        </executions>
+	  </plugin>
+  
+  
+    </plugins>
+  </build>
+
+  <!-- 
+  The profiles only configure the automatic deploy of gvSIG plugin in the gvSIG
+  configured in HOME/.gvsig-devel.properties
+  -->
+  <profiles>
+  
+    <profile>
+      <id>gvsig-plugin-install-raster-linux-x86</id>
+      <activation>
+         <os>
+             <family>unix</family>
+             <name>linux</name>
+             <arch>x86</arch>
+         </os>
+      </activation>
+	    <properties>
+	      <gvsig.install.plugin>true</gvsig.install.plugin>
+	    </properties>
+    </profile>
+
+    <profile>
+      <id>gvsig-plugin-install-raster-linux-i386</id>
+      <activation>
+         <os>
+             <family>unix</family>
+             <name>linux</name>
+             <arch>i386</arch>
+         </os>
+      </activation>
+      <properties>
+         <gvsig.install.plugin>true</gvsig.install.plugin>
+      </properties>
+    </profile>
+
+  </profiles>
+  
+</project>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.lin.x86
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/buildNumber.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/buildNumber.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/buildNumber.properties	(revision 2861)
@@ -0,0 +1,2 @@
+#Fri Mar 28 13:59:39 CET 2014
+buildNumber=12
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/scripting/lib/gvsig_raster.py
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/scripting/lib/gvsig_raster.py	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/scripting/lib/gvsig_raster.py	(revision 2861)
@@ -0,0 +1,612 @@
+from gvsig import *
+from org.gvsig.fmap.dal import DALLocator
+from org.gvsig.fmap.mapcontext import MapContextLocator
+from org.gvsig.fmap.dal.coverage import RasterLocator
+from org.gvsig.fmap.dal.coverage.store.parameter import NewRasterStoreParameters
+from org.gvsig.fmap.dal.coverage.dataset import Buffer
+from org.gvsig.fmap.dal.serverexplorer.filesystem import FilesystemServerExplorer
+from org.gvsig.raster.fmap.layers import FLyrRaster
+from java.lang import Byte,Short,Integer,Float,Double
+from java.io import File
+from java.awt.geom import AffineTransform
+import os
+
+from os.path import splitext
+
+global sourceFileName
+sourceFileName = []
+sourceFileName.append(None)
+
+
+##
+#
+# Loads the raster layer given the filepath
+#
+# @params rasterfile the filename of the input layer
+#
+# @returns None loads the raster layer 
+def loadRasterLayer (rasterfile, mode = "r" ):
+    ## Load a Raster file in a Layer
+    sourceFileName[0]=rasterfile
+    if not isinstance (rasterfile,File):
+        rasterfile = File(rasterfile)
+
+    name, ext = splitext(rasterfile.getName())
+
+    view = currentView()
+  
+    # Get the manager to use
+    dalManager = DALLocator.getDataManager()
+    mapContextManager = MapContextLocator.getMapContextManager()
+
+    if ext.lower() == ".ecw" or ext.lower() == ".jp2" :
+        # FIXME
+        pass
+    elif ext.lower() == ".mrsid":
+        # FIXME
+        pass
+    else:
+        # Create the parameters to open the raster store based in GDAL
+        params = dalManager.createStoreParameters("Gdal Store")
+        params.setFile(rasterfile)
+
+    # Create the raster store
+    dataStore = dalManager.createStore(params)
+
+    # Create a raster layer based in this raster store
+    layer = mapContextManager.createLayer(name, dataStore);
+
+    view.addLayer(layer)
+    return layer
+
+
+## @cond FALSE
+rasterLayerExtensions = dict ()
+
+
+class RasterLayerExtensions(object):
+    ##This class hold aditional properties and operations need to manage the scripting raster layer
+    def __init__(self, store=None):
+        self.store = store
+        self.buffer = None
+        self.query = None
+        self.values = None
+        self.kernel = None
+        self.setElem = None
+        self.getElem = None
+
+    def prepareQuery(self):
+        ## See RasterManager in javadocs for more info
+        self.query = RasterLocator.getManager().createQuery();
+        ## See RasterQuery in javadocs for more
+        self.query.setAllDrawableBands()
+        self.query.setAreaOfInterest()
+        self.buffer = None
+        self.values = None
+        self.kernel = None
+
+    def loadStore (self,rasterfile, mode = "r" ):
+        if not isinstance(rasterfile,File):
+            rasterfile = File(rasterfile)
+
+        name, ext = splitext(rasterfile.getName())
+
+        dalManager = DALLocator.getDataManager()
+
+        if ext.lower() == ".ecw" or ext.lower() == ".jp2" :
+           # FIXME
+           pass
+        elif ext.lower() == ".mrsid":
+           # FIXME
+           pass
+        else:
+           # Create the parameters to open the raster store based in GDAL
+           params = dalManager.createStoreParameters("Gdal Store")
+           params.setFile(rasterfile)
+
+        # Create the raster store
+        dataStore = dalManager.createStore(params)
+        return dataStore
+
+    def createBuffer(self):
+        if sourceFileName[0] == None:
+            self.buffer = self.store.query(self.getQuery())
+        else:
+            queryStore = self.loadStore(sourceFileName[0])
+            self.buffer = queryStore.query(self.getQuery())
+        #print self.buffer.getBandCount()
+
+    def createNewBuffer(self,width, height, bandcount, datatype):
+        if self.store != None:
+            raise RuntimeException("Can't create a new buffer associated to a store")
+
+        # FIXME: workaround to work with a jython bug passing byte, short and
+        # double values as parameters
+        if datatype in (Buffer.TYPE_BYTE, Buffer.TYPE_SHORT, Buffer.TYPE_INT):
+            datatype = Buffer.TYPE_INT
+        else:
+            datatype = Buffer.TYPE_FLOAT
+        # End workaround
+
+        #print "---->>>>Buffer", datatype, width, height, bandcount
+        self.buffer = RasterLocator.getManager().createBuffer(
+            int(datatype),
+            int(width),
+            int(height),
+            int(0 if bandcount is None else bandcount),
+            True
+        )
+        self.prepareBuffer(self.buffer)
+
+    def prepareBuffer(self, buffer):
+        def setElemByte(buffer, line, col, band, data):
+            buffer.setElem(line, col, band, Byte(data).byteValue())
+
+        def setElemShort (buffer, line, col, band, data):
+            buffer.setElem(line, col, band, Short(data).shortValue())
+
+        def setElemInt(buffer, line, col, band, data):
+            buffer.setElem(line, col, band, Integer(data).intValue())
+
+        def setElemFloat(buffer, line, col, band, data):
+            buffer.setElem(line, col, band, Float(data).floatValue())
+
+        def setElemDouble(buffer, line, col, band, data):
+            buffer.setElem(line, col, band, Double(data).doubleValue())
+
+        t = buffer.getDataType()
+        if t == Buffer.TYPE_BYTE:
+            self.getElem = buffer.getElemByte
+            self.setElem = setElemByte
+        elif t == Buffer.TYPE_SHORT or t == Buffer.TYPE_USHORT:
+            self.getElem = buffer.getElemShort
+            self.setElem = setElemShort
+        elif t == Buffer.TYPE_INT:
+            self.getElem = buffer.getElemInt
+            self.setElem = setElemInt
+        elif t == Buffer.TYPE_FLOAT:
+            self.getElem = buffer.getElemFloat
+            self.setElem = setElemFloat
+        elif t == Buffer.TYPE_DOUBLE:
+            self.getElem = buffer.getElemDouble
+            self.setElem = setElemDouble
+        #print buffer.getBandCount()
+        self.values = [0 for count in range(buffer.getBandCount())]
+        self.kernel = [[self.values for count in range(3)] for count in range(3)]
+
+    def getQuery(self):
+        if self.query == None:
+            self.prepareQuery()
+        return self.query
+
+    def getBuffer(self, store):
+        if self.buffer == None:
+            self.createBuffer()
+            self.prepareBuffer(self.buffer)
+        return self.buffer
+
+    def setValue(self, band, line, col, data):
+        t = self.buffer.getDataType()
+        if t == Buffer.TYPE_BYTE:
+           self.buffer.setElem(line, col, band, Byte(data).byteValue())
+        elif t == Buffer.TYPE_SHORT or t == Buffer.TYPE_USHORT:
+            self.buffer.setElem(line, col, band, Short(data).shortValue())
+        elif t == Buffer.TYPE_INT:
+            self.buffer.setElem(line, col, band, Integer(data).intValue())
+        elif t == Buffer.TYPE_FLOAT:
+            self.buffer.setElem(line, col, band, Float(data).floatValue())
+        elif t == Buffer.TYPE_DOUBLE:
+            self.buffer.setElem(line, col, band, Double(data).doubleValue())
+
+    def getValue(self, band, row, column):
+        if self.getElem == None:
+            self.createBuffer()
+            self.prepareBuffer(self.buffer)
+        return self.getElem(row, column, band)
+
+    def getBandValues(self, row, column):
+        if self.getElem == None:
+            self.createBuffer()
+            self.prepareBuffer(self.buffer)
+        for b in xrange(self.buffer.getBandCount()):
+            self.values[b] = self.getElem(row, column, b)
+        return self.values
+    
+    def setBandValues(self,row,column,values):
+        for b in xrange(self.buffer.getBandCount()):
+            self.setElem(self.buffer, row, column, b, values[b])
+
+    def saveBuffer(self,filename):
+        manager = DALLocator.getDataManager ()
+        eparams = manager.createServerExplorerParameters(FilesystemServerExplorer.NAME)
+        eparams.setDynValue("initialpath",os.path.dirname(sourceFileName[0]))
+        serverExplorer = manager.openServerExplorer(eparams.getExplorerName(),eparams)
+
+        sparams = serverExplorer.getAddParameters("Gdal Store")
+        sparams.setDestination(os.path.dirname(sourceFileName[0]),filename)
+        sparams.setBuffer(self.buffer)
+        #at = AffineTransform(1, 0, 0, -1, 0, 0)
+        #sparams.setAffineTransform(at);
+
+        serverExplorer.add("Gdal Store", sparams, True)
+
+## @endcond
+
+##
+#
+# Represents a raster layer.
+#
+class RasterLayer(FLyrRaster):
+    TYPE_BYTE = Buffer.TYPE_BYTE
+    TYPE_SHORT = Buffer.TYPE_SHORT
+    TYPE_INT = Buffer.TYPE_INT
+    TYPE_FLOAT = Buffer.TYPE_FLOAT
+    TYPE_DOUBLE = Buffer.TYPE_DOUBLE
+
+    @staticmethod
+    ## @cond FALSE
+    def getExtensions(self):
+        ## This is a internal method, don't use it.
+
+        global rasterLayerExtensions
+        extensions = rasterLayerExtensions.get(self.hashCode(), None)
+        if extensions == None:
+            extensions = RasterLayerExtensions(self.getDataStore())
+            rasterLayerExtensions[self.hashCode()] = extensions
+        return extensions
+    ## @endcond
+
+    @staticmethod
+    ##
+    #
+    # Return the number of bands of the raster
+    #
+    # @param self The raster layer object
+    #
+    # @return the number of bands of the raster layer
+    #
+    def getBandsCount(self):
+        return self.getDataStore().getBandCount()
+
+    @staticmethod
+    ##
+    #
+    # Return the width in points/pixels of the raster
+    #
+    # @param self The raster layer object
+    #
+    # @return the width of the raster
+    #
+    def getWidth(self):
+        return self.getDataStore().getWidth()
+
+    @staticmethod
+    ##
+    #
+    # Return the height in points/pixels of the raster
+    #
+    # @param self The raster layer object
+    #
+    # @return the height of the raster
+    def getHeight(self):
+        return self.getDataStore().getHeight()
+
+    @staticmethod
+    ##
+    #
+    # Return the data type of the raster
+    #
+    # TYPE_BYTE = Byte datatype
+    #
+    # TYPE_USHORT  = Unsigned Short datatype
+    #
+    # TYPE_SHORT = Signed Short datatype
+    #
+    # TYPE_INT = Integer datatype
+    #
+    # TYPE_FLOAT = Float Datatype
+    #
+    # TYPE_DOUBLE = Double Datatype
+    #
+    # @param self The raster layer object
+    #
+    # @return the datatype of the raster layer
+    def getDataType(self):
+        return self.getDataStore().getDataType()
+
+    @staticmethod
+    ##
+    #
+    # Return the value of a point of a "band" from "row" and "coulmn" of
+    # the Raster.
+    #
+    # This method use with care, it has a strong overhead. Use instead
+    # the method "walk" to go over the raster.
+    #
+    # @param band band from which the value should be retrieved
+    # @param row row in the raster from which the value should be retrieved
+    # @param column column in the raster from which the value should be retrieved
+    #
+    # @return the value of a point/pixel of a "band" from "row" and "column" of the Raster
+    #
+    def getData(self, band, row, column):
+        return self.getExtensions().getValue(band, row, column)
+
+    @staticmethod
+    ##
+    #
+    # Go over the raster and for each point call to the function
+    # "operation" and pass as argument a tuple with the values of
+    # the point for each band.
+    #
+    # This method don't return any value
+    #
+    # @param self pointer to the Layer object
+    # @param operation any operation which operates on the raster point-by-point
+    #
+    # @return None
+    #
+    def walk(self, operation):
+        extension = self.getExtensions()
+        store = self.getDataStore()
+        sourceExtension = RasterLayerExtensions()
+        sourceExtension.createNewBuffer(store.getWidth(), store.getHeight(), store.getBandCount(), store.getDataType())
+        
+        for band in xrange(store.getBandCount()):
+            for line in xrange(store.getHeight()):
+                for column in xrange(store.getWidth()):
+                    operation(extension.getBandValues(line, column))
+                    
+
+    @staticmethod
+    ##
+    #
+    # Go over the raster and for each point, taking the neighbour points
+    # as a kernel(3x3) call to the function "operation" and pass as argument a
+    # tuple with the values of all the points in the kernel for each band.
+    #
+    # This method don't return any value
+    #
+    # @param self pointer to the Layer object
+    # @param operation any operation which operates on the raster by a kernel(3x3).
+    #
+    # @return None
+    #
+    def walkKernel(self, operation):
+        extension = self.getExtensions()
+        store = self.getDataStore()
+        sourceExtension = RasterLayerExtensions()
+        sourceExtension.createNewBuffer(store.getWidth(), store.getHeight(), store.getBandCount(), store.getDataType())
+        
+        k=0
+        l=0
+        values = [0 for count in xrange(store.getBandCount())]
+        values = [[values for count in xrange(3)] for count in xrange(3)]
+        outValues = list()
+        for band in xrange(store.getBandCount()):
+            for line in xrange(1,store.getHeight()-1):
+                for column in xrange(1,store.getWidth()-1):
+                    
+                    i=0
+                    for k in xrange(line-1,line+2):
+                        j=0
+                        for l in xrange(column-1,column+2):
+                            values[i][j]=extension.getBandValues(k,l)
+                            j=j+1
+                        i=i+1
+                    operation(values)
+                    
+
+    @staticmethod
+    ##
+    #
+    # Go over the raster and for each point call to the function "filter1"
+    # and pass as argument a tuple with the values of all the points in the
+    # kernel for each band.
+    #
+    # The function "filter1" must be such that it takes a tuple, modifies its value
+    # and returns a new tuple.
+    #
+    # This method saves the newly created(filter applied) layer to "targetfilename"
+    #
+    # @param self pointer to the Layer object
+    # @param filter1 any filter which modifies the raster layer point-by-point
+    # @param targetfilename filename to which the output layer should be saved
+    # @param targetdatatype datatype of which the output layer to be saved (use only TYPE_INT,TYPE_BYTE or TYPE_SHORT as of now)
+    # @param targetbandcount number of bands in the output layer
+    #
+    # @return saves the created layer to "targetfilename" in the current directory
+    #
+    def filter(self, filter1, targetfilename, targetdatatype=None, targetbandcount=None):
+        extension = self.getExtensions()
+        store = self.getDataStore()
+        targetExtension = RasterLayerExtensions()
+        #targetExtension.createNewBuffer(store.getWidth(), store.getHeight(), store.getBandCount(), store.getDataType())
+        targetExtension.createNewBuffer(store.getWidth(), store.getHeight(), targetbandcount, targetdatatype)
+
+        for band in xrange(store.getBandCount()):
+            for line in xrange(store.getHeight()):
+                for column in xrange(store.getWidth()):
+                    values = filter1(extension.getBandValues(line,column))
+                    targetExtension.setBandValues(line, column, values)
+
+        targetExtension.saveBuffer(targetfilename)
+
+    @staticmethod
+    ##
+    #
+    # Go over the raster and for each point, taking the neighbour points
+    # as a kernel(3x3) call to the function "filter1" and pass as argument
+    # a tuple with the values of all the points in the kernel for each band.
+    #
+    # The function "filter1" must be such that it takes a tuple of multi-dimension,
+    # modifies its value and returns a new tuple having dimensions same as input.
+    #
+    # This method saves the newly created(filter applied) layer to "targetfilename"
+    #
+    # @param self pointer to the Layer object
+    # @param filter1 any filter which modifies the raster layer using a kernel(3x3).
+    # @param targetfilename filename to which the output layer should be saved
+    # @param targetdatatype datatype of which the output layer to be saved (use only TYPE_INT,TYPE_BYTE or TYPE_SHORT as of now)
+    # @param targetbandcount number of bands in the output layer
+    #
+    # @return saves the created layer to "targetfilename" in the current directory
+    #
+    def filterKernel(self, filter1, targetfilename, targetdatatype=None, targetbandcount=None):
+        extension = self.getExtensions()
+        store = self.getDataStore()
+        targetExtension = RasterLayerExtensions()
+        #targetExtension.createNewBuffer(store.getWidth(), store.getHeight(), store.getBandCount(), store.getDataType())
+        targetExtension.createNewBuffer(store.getWidth(), store.getHeight(), targetbandcount, targetdatatype)
+
+        k=0
+        l=0
+        values = [0 for count in xrange(store.getBandCount())]
+        values = [[values for count in xrange(3)] for count in xrange(3)]
+        outValues = list()
+        for band in xrange(store.getBandCount()):
+            for line in xrange(1,store.getHeight()-1):
+                for column in xrange(1,store.getWidth()-1):
+                    
+                    i=0
+                    for k in xrange(line-1,line+2):
+                        j=0
+                        for l in xrange(column-1,column+2):
+                            values[i][j]=extension.getBandValues(k,l)
+                            j=j+1
+                        i=i+1
+                    outValues = filter1(values)
+                    targetExtension.setBandValues(line, column, outValues)
+
+        targetExtension.saveBuffer(targetfilename)
+                    
+    @staticmethod
+    ##
+    #
+    # Go over the raster layer and for each point call to the function "operation" and
+    # pass as arguments two tuples (One corresponding to the first layer at that point,
+    # the other corresponding to the second layer at the same point) with the values of
+    # each point for each band.
+    #
+    # The function "operation" must be such that it takes two tuples as input, performs
+    # operations involving both of them and returns a new tuple.
+    #
+    # This method saves the newly created(from the two rasters) layer to "targetfilename"
+    #
+    # @param self pointer to the Layer object
+    # @param operation any operation which operates on both the raster layers at a respective point/pixel.
+    # @param layer2 the layer which forms the second input to the "operation" function.
+    # @param targetfilename filename to which the output layer should be saved
+    # @param targetdatatype datatype of which the output layer to be saved (use only TYPE_INT,TYPE_BYTE or TYPE_SHORT as of now)
+    #
+    # @return saves the created layer to "targetfilename" in the current directory
+    #
+    def operation(self, operation, layer2, targetfilename, targetdatatype=None):
+        layer1Extension = self.getExtensions()
+        layer2Extension = layer2.getExtensions()
+
+        layer1Store = self.getDataStore()
+        layer2Store = layer2.getDataStore()
+
+        bandCount = layer1Store.getBandCount()
+        layerWidth = layer1Store.getWidth()
+        layerHeight = layer1Store.getHeight()
+        targetExtension = RasterLayerExtensions()
+        resultValues = list()
+        #targetExtension.createNewBuffer(layerWidth, layerHeight, bandCount, layer1Store.getDataType())
+        targetExtension.createNewBuffer(layerWidth, layerHeight, bandCount, targetdatatype)
+
+        for band in xrange(bandCount):
+            for line in xrange(layerHeight):
+                for column in xrange(layerWidth):
+                    layer1Values = layer1Extension.getBandValues(line, column)
+                    layer2Values = layer2Extension.getBandValues(line, column)
+                    resultValues = operation(layer1Values, layer2Values)
+                    targetExtension.setBandValues(line, column, resultValues)
+
+        targetExtension.saveBuffer(targetfilename)
+
+    @staticmethod
+    ##
+    #
+    # Go over the raster layer and for each point, taking the neighbour points as a
+    # kernel(3x3) call to the function "operation" and pass as arguments two tuples
+    # (One corresponding to the first layer at that point, the other corresponding
+    # to the second layer at the same point) with the values of all the points of the
+    # kernel for each band.
+    #
+    # The function "operation" must be such that it takes two tuples of multiple
+    # dimensions as input, performs operations involving both of them and returns a
+    # new tuple having dimensions same as input tuples.
+    #
+    # This method saves the newly created(from the two rasters) layer to "targetfilename"
+    #
+    # @param self pointer to the Layer object
+    # @param operation any operation which operates on both the raster layers at a respective point/pixel but involving kernel(3x3)[neighbour points].
+    # @param layer2 the layer which forms the second input to the "operation" function.
+    # @param targetfilename filename to which the output layer should be saved
+    # @param targetdatatype datatype of which the output layer to be saved (use only TYPE_INT,TYPE_BYTE or TYPE_SHORT as of now)
+    #
+    # @return saves the created layer to "targetfilename" in the current directory
+    #
+    def operationKernel(self, operation, layer2, targetfilename, targetdatatype=None):
+        layer1Extension = self.getExtensions()
+        layer2Extension = self.getExtensions()
+
+        layer1Store = self.getDataStore()
+        layer2Store = layer2.getDataStore()
+
+        bandCount = layer1Store.getBandCount()
+        layerWidth = layer1Store.getWidth()
+        layerHeight = layer1Store.getHeight()
+        targetExtension = RasterLayerExtensions()
+        #targetExtension.createNewBuffer(layerWidth, layerHeight, bandCount, layer1Store.getDataType())targetExtension.createNewBuffer(layerWidth, layerHeight, bandCount, layer1Store.getDataType())
+        targetExtension.createNewBuffer(layerWidth, layerHeight, bandCount, targetdatatype)
+
+        k=0
+        l=0
+        values1 = [[[None for count in range(bandCount)] for count in range(3)] for count in range(3)]
+        values2 = [[[None for count in range(bandCount)] for count in range(3)] for count in range(3)]
+        outValues = list()
+        for band in xrange(bandCount):
+            for line in xrange(1,layerHeight-1):
+                for column in xrange(1,layerWidth-1):
+
+                    i=0
+                    for k in xrange(line-1,line+2):
+                        j=0
+                        for l in xrange(column-1,column+2):
+                            values1[i][j]=layer1Extension.getBandValues(k,l)
+                            #print i,j,values1[i][j]
+                            #print values1
+                            values2[i][j]=layer2Extension.getBandValues(k,l)
+                            j=j+1
+                        i=i+1
+
+                    outValues = operation(values1, values2)
+                    i=0
+                    for k in xrange(line-1,line+2):
+                        j=0
+                        for l in xrange(column-1,column+2):
+                            targetExtension.setBandValues(k,l, outValues[i][j])
+                            j=j+1
+                        i=i+1
+
+        targetExtension.saveBuffer(targetfilename)
+        
+
+#
+# Inject new methods in the class FLyrRaster
+#
+FLyrRaster.getExtensions = RasterLayer.getExtensions
+FLyrRaster.getBandsCount = RasterLayer.getBandsCount
+FLyrRaster.getWidth = RasterLayer.getWidth
+FLyrRaster.getHeight = RasterLayer.getHeight
+FLyrRaster.getDataType = RasterLayer.getDataType
+FLyrRaster.getData = RasterLayer.getData
+FLyrRaster.walk = RasterLayer.walk
+FLyrRaster.walkKernel = RasterLayer.walkKernel
+FLyrRaster.filter = RasterLayer.filter
+FLyrRaster.filterKernel = RasterLayer.filterKernel
+FLyrRaster.operation = RasterLayer.operation
+FLyrRaster.operationKernel = RasterLayer.operationKernel
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/config.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/config.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/config.xml	(revision 2861)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<plugin-config>
+ <depends plugin-name="org.gvsig.app" />
+ <depends plugin-name="org.gvsig.app.document.table.app.mainplugin" />
+	<resourceBundle name="text"/>
+	<libraries library-dir="lib"/>
+	<extensions>
+		<extension class-name="org.gvsig.raster.mainplugin.RasterMainPluginExtension"
+			description="" 
+			active="true" 
+			priority="1">
+		</extension>	
+		<extension class-name="org.gvsig.raster.mainplugin.GenericToolBarExtension"
+			description="" 
+			active="true" 
+			priority="1">
+		</extension>
+	</extensions>
+</plugin-config>
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/map-ok-ico.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/map-ok-ico.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/ico.sol.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/ico.sol.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-process-icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-process-icon.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-transgeo-icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-transgeo-icon.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-dataset-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-dataset-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-enhanced-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-enhanced-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-multispectral-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-multispectral-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-raster-export.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-raster-export.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-layer-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/menu-layer-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/layer-properties-raster.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/images/action/layer-properties-raster.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_cs.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_fr.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_de.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_eu.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_it.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text.properties	(revision 2861)
@@ -0,0 +1,7 @@
+capa_raster=Capa Raster
+process_raster=Procesos Raster
+multispectral=Multiespectral
+enhanced=Realce
+transformaciones_geograficas=Transformaciones geograficas
+raster_export=Exportar Raster
+dataset_raster=Conjunto de datos raster
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_zh.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_en.properties
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_en.properties	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_en.properties	(revision 2861)
@@ -0,0 +1,7 @@
+capa_raster=Raster layer
+process_raster=Raster process
+multispectral=Multispectral
+enhanced=Enhanced
+transformaciones_geograficas=Geographic transformations
+raster_export=Export to raster
+dataset_raster=Raster dataset
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_gl.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_ca.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/resources-plugin/org/gvsig/raster/mainplugin/i18n/text_pt.properties
===================================================================
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/assembly/gvsig-plugin-package.xml	(revision 2861)
@@ -0,0 +1,74 @@
+<!--
+
+    gvSIG. Desktop Geographic Information System.
+
+    Copyright (C) 2007-2013 gvSIG Association.
+
+    This program is free software; you can redistribute it and/or
+    modify it under the terms of the GNU General Public License
+    as published by the Free Software Foundation; either version 3
+    of the License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+    MA  02110-1301, USA.
+
+    For any additional information, do not hesitate to contact us
+    at info AT gvsig.com, or visit our website www.gvsig.com.
+
+-->
+<assembly>
+  <id>gvsig-plugin-package</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <baseDirectory>${project.artifactId}</baseDirectory>
+  <includeBaseDirectory>true</includeBaseDirectory>
+  <files>
+    <file>
+      <source>target/${project.artifactId}-${project.version}.jar</source>
+      <outputDirectory>lib</outputDirectory>
+    </file>
+    <file>
+      <source>target/package.info</source>
+    </file>
+  </files>
+
+  <fileSets>
+    <fileSet>
+      <directory>src/main/resources-plugin</directory>
+      <outputDirectory>.</outputDirectory>
+    </fileSet>
+  </fileSets>
+
+
+  <dependencySets>
+    <dependencySet>
+      <useProjectArtifact>false</useProjectArtifact>
+      <useTransitiveDependencies>false</useTransitiveDependencies>
+      <outputDirectory>lib</outputDirectory>
+		  <includes>
+		    <include>org.gvsig:org.gvsig.raster.swing.api:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.swing.impl:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.cache.lib.api:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.cache.lib.impl:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.lib.api:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.lib.impl:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.algorithm:jar</include>
+		    <include>org.gvsig:org.gvsig.raster.fmap:jar</include>
+		    <!-- <include>org.gvsig:org.gvsig.timesupport.lib.api:jar</include>
+		    <include>org.gvsig:org.gvsig.timesupport.lib.impl:jar</include>-->
+		    <include>org.joda:joda-time:jar</include>		
+		  </includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
+
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/GenericToolBarExtension.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/GenericToolBarExtension.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/GenericToolBarExtension.java	(revision 2861)
@@ -0,0 +1,185 @@
+/* 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.raster.mainplugin;
+
+import java.awt.Dimension;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.andami.ui.mdiFrame.MDIFrame;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.i18n.Messages;
+import org.gvsig.raster.mainplugin.toolbar.GenericToolBarMenuItem;
+import org.gvsig.raster.mainplugin.toolbar.GenericToolBarPanel;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+
+/**
+ * Extension para la barra de herramientas generica
+ *
+ * @author BorSanZa - Borja Sánchez Zamorano
+ */
+public class GenericToolBarExtension extends Extension {
+	private GenericToolBarPanel toolBar = null;
+
+	/**
+	 * Crea y devuelve la barra de herramientas
+	 * @return
+	 */
+	private GenericToolBarPanel getGenericToolBarPanel() {
+		if (toolBar == null) {
+			MDIFrame f = (MDIFrame) PluginServices.getMainFrame();
+			if (f == null)
+				return null;
+			toolBar = new GenericToolBarPanel();
+			toolBar.setVisible(true);
+			f.addToolBarControl(getClass(), toolBar, "RasterToolBar");
+		} else {
+			toolBar.setPreferredSize(new Dimension(300, getToolbarHeight()));
+		}
+
+		return toolBar;
+	}
+
+	/**
+	 * Obtenemos el alto de cualquier toolbar que este visible en gvSIG y no sea
+	 * nuestro para poder asignarselo al GenericToolBar como PreferredSize. En
+	 * caso de no encontrar ninguno que cumpla las condiciones, se devolverá 24
+	 * @return
+	 */
+	private int getToolbarHeight() {
+		if ((PluginServices.getMainFrame() == null) ||
+				(PluginServices.getMainFrame().getToolbars() == null) ||
+				(PluginServices.getMainFrame().getToolbars().length <= 0))
+			return 24;
+
+		for (int i = 0; i < PluginServices.getMainFrame().getToolbars().length; i++) {
+			if ((PluginServices.getMainFrame().getToolbars()[i].getHeight() > 16) &&
+					((Object) PluginServices.getMainFrame().getToolbars()[i] != (Object) toolBar))
+				return PluginServices.getMainFrame().getToolbars()[i].getHeight();
+		}
+		return 24;
+	}
+
+	public void initialize() {
+		registerIcons();
+		
+		 Messages.addResourceFamily("org.gvsig.raster.mainplugin.i18n.text",
+				 GenericToolBarExtension.class.getClassLoader(),
+				 GenericToolBarExtension.class.getClass().getName()); 
+		
+		// Creación del punto de extensión para registrar paneles en el cuadro de propiedades.
+		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
+		ExtensionPoint point = extensionPoints.add("GenericToolBarGroup");
+		point.setDescription("Punto de extension para los grupos de menus del GenericToolBarPanel");
+
+		point.append("RasterLayer", "", new GenericToolBarMenuItem(Messages.getText("capa_raster"), IconThemeHelper.getImageIcon("menu-layer-icon")));
+		//point.append("RasterProcess", "", new GenericToolBarMenuItem(Messages.getText("process_raster"), IconThemeHelper.getImageIcon("menu-process-icon")));
+		point.append("Dataset", "", new GenericToolBarMenuItem(Messages.getText("dataset_raster"), IconThemeHelper.getImageIcon("menu-dataset-icon")));
+		point.append("Multispectral", "", new GenericToolBarMenuItem(Messages.getText("multispectral"), IconThemeHelper.getImageIcon("menu-multispectral-icon")));
+		point.append("Enhanced", "", new GenericToolBarMenuItem(Messages.getText("enhanced"), IconThemeHelper.getImageIcon("menu-enhanced-icon")));
+		point.append("GeoRaster", "", new GenericToolBarMenuItem(Messages.getText("transformaciones_geograficas"), IconThemeHelper.getImageIcon("menu-transgeo-icon")));
+		point.append("RasterExport", "", new GenericToolBarMenuItem(Messages.getText("raster_export"), IconThemeHelper.getImageIcon("menu-raster-export")));
+
+		point = extensionPoints.add("GenericToolBarMenu");
+		point.setDescription("Punto de extension para los submenus del GenericToolBarPanel");
+	}
+	
+	private void registerIcons() {	
+		//Actions
+		IconThemeHelper.registerIcon("action", "menu-layer-icon", this);
+		IconThemeHelper.registerIcon("action", "menu-process-icon", this);
+		IconThemeHelper.registerIcon("action", "menu-transgeo-icon", this);
+		IconThemeHelper.registerIcon("action", "menu-dataset-icon", this);
+		IconThemeHelper.registerIcon("action", "menu-raster-export", this);
+		IconThemeHelper.registerIcon("action", "menu-multispectral-icon", this);
+		IconThemeHelper.registerIcon("action", "menu-enhanced-icon", this);
+	}
+	
+	@Override
+	public void postInitialize() {
+		super.postInitialize();
+		if (getGenericToolBarPanel() != null)
+			getGenericToolBarPanel().reloadMenuGroup();
+	}
+
+	public boolean isEnabled() {
+		return false;
+	}
+
+	/**
+	 * Establece si la barra de herramientas esta visible
+	 * @param enabled
+	 */
+	private void setToolBarVisible(boolean enabled) {
+		if (getGenericToolBarPanel() == null)
+			return;
+
+		toolBar.setVisible(enabled);
+	}
+
+	@SuppressWarnings("deprecation")
+	public boolean isVisible() {
+		setToolBarVisible(true);
+		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
+		if (f == null || !(f instanceof AbstractViewPanel)) {
+			//setToolBarVisible(false);
+			return false;
+		}
+		
+		if (getGenericToolBarPanel() != null)
+			getGenericToolBarPanel().setLayers(null);
+		AbstractViewPanel vista = (AbstractViewPanel) f;
+		ViewDocument model = vista.getModel();
+		MapContext mapa = model.getMapContext();
+		if (mapa.getLayers().getLayersCount() > 0) {
+			if (getGenericToolBarPanel() != null) {
+				getGenericToolBarPanel().setLayers(mapa.getLayers());
+			}
+		}
+		
+		//setToolBarVisible(true);
+		return true;
+
+		/*if (f instanceof AbstractViewPanel) {
+			AbstractViewPanel vista = (AbstractViewPanel) f;
+			ViewDocument model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+			if (mapa.getLayers().getLayersCount() > 0) {
+				setToolBarVisible(true);
+				if (getGenericToolBarPanel() != null) {
+					getGenericToolBarPanel().setLayers(mapa.getLayers());
+				}
+				return true;
+			}
+		}
+
+		setToolBarVisible(false);
+		return false;*/
+	}
+
+	public void execute(String actionCommand) {}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/properties/RasterPropertiesTocMenuEntry.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/properties/RasterPropertiesTocMenuEntry.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/properties/RasterPropertiesTocMenuEntry.java	(revision 2861)
@@ -0,0 +1,144 @@
+/* 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.raster.mainplugin.properties;
+
+import javax.swing.Icon;
+
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.app.panelGroup.PanelGroupDialog;
+import org.gvsig.app.panelGroup.loaders.PanelGroupLoaderFromExtensionPoint;
+import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
+import org.gvsig.app.project.documents.view.toc.ITocItem;
+import org.gvsig.fmap.IconThemeHelper;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+import org.gvsig.i18n.Messages;
+import org.gvsig.raster.fmap.layers.FLyrRaster;
+import org.gvsig.raster.fmap.layers.ILayerState;
+import org.gvsig.raster.mainplugin.RasterMainPluginUtils;
+import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
+import org.gvsig.raster.swing.RasterSwingLibrary;
+
+/**
+ * Entrada en del menú contextual del TOC correspondiente al cuadro de
+ * propiedades del raster
+ *
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class RasterPropertiesTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
+	static private RasterPropertiesTocMenuEntry singleton  = null;
+	private FLayer                              lyr        = null;
+
+	/**
+	 * Variable para controlar si los eventos de los paneles se deben interpretar.
+	 * En la carga inicial se deben desactivar todos los eventos
+	 */
+	public static boolean                     enableEvents = false;
+	
+	/**
+	 * Nadie puede crear una instancia a esta clase única, hay que usar el
+	 * getSingleton()
+	 */
+	private RasterPropertiesTocMenuEntry() {}
+
+	/**
+	 * Devuelve un objeto unico a dicha clase
+	 * @return
+	 */
+	static public RasterPropertiesTocMenuEntry getSingleton() {
+		if (singleton == null)
+			singleton = new RasterPropertiesTocMenuEntry();
+		return singleton;
+	}	
+
+	public String getGroup() {
+		return "RasterLayer";
+	}
+
+	public int getGroupOrder() {
+		return 10;
+	}
+
+	public int getOrder() {
+		return 10;
+	}
+
+	public String getText() {
+		return Messages.getText("propiedades_raster");
+	}
+
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		if ((selectedItems == null) || (selectedItems.length != 1))
+			return false;
+		if (selectedItems[0] instanceof ILayerState) {
+			if (!((ILayerState) selectedItems[0]).isOpen())
+				return false;
+			return true;
+		}
+		return false;
+	}
+
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		if ((selectedItems == null) || (selectedItems.length != 1))
+			return false;
+		if (selectedItems[0] instanceof FLyrRaster)
+			return true;
+		return false;
+	}
+
+	/**
+	 * Gestiona la apertura del dialogo de propiedades de raster cuando se pulsa
+	 * la opción asignando a este las propiedades iniciales.
+	 */
+	public void execute(ITocItem item, FLayer[] selectedItems) {
+		if ((selectedItems == null) || (selectedItems.length != 1))
+			return;
+
+		lyr = selectedItems[0];
+		PanelGroupDialog properties = null;
+		try {
+			enableEvents = false;
+
+			PanelGroupManager manager = PanelGroupManager.getManager();
+
+			manager.registerPanelGroup(TabbedPanel.class);
+			manager.setDefaultType(TabbedPanel.class);
+
+			TabbedPanel panelGroup = (TabbedPanel) manager.getPanelGroup(lyr);
+			PanelGroupLoaderFromExtensionPoint loader = new PanelGroupLoaderFromExtensionPoint("RasterSEPropertiesDialog");
+
+			properties = new PanelGroupDialog(lyr.getName() ,Messages.getText("propiedades_raster"), 550, 450, (byte) (WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE), panelGroup);
+			properties.loadPanels(loader);
+			enableEvents = true;
+			RasterMainPluginUtils.addWindow(properties);
+		} catch (Exception e) {
+			RasterSwingLibrary.messageBoxInfo("error_props_tabs", properties, e);
+		} finally  {
+			enableEvents = true;
+		}
+	}
+	
+	public Icon getIcon() {
+		return IconThemeHelper.getImageIcon("layer-properties-raster");
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginExtension.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginExtension.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginExtension.java	(revision 2861)
@@ -0,0 +1,83 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+package org.gvsig.raster.mainplugin;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.plugins.Extension;
+import org.gvsig.i18n.Messages;
+import org.gvsig.raster.mainplugin.properties.RasterPropertiesTocMenuEntry;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+
+
+/**
+ * Main plugin for raster
+ *
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class RasterMainPluginExtension extends Extension {
+
+	public void initialize() {
+        Messages.addResourceFamily("org.gvsig.raster.mainplugin.i18n.text",
+        		RasterMainPluginExtension.class.getClassLoader(),
+        		RasterMainPluginExtension.class.getClass().getName()); 
+        
+        IconThemeHelper.registerIcon(null, "map-ok-ico", this);
+        IconThemeHelper.registerIcon("action", "layer-properties-raster", this);
+        
+		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
+		ExtensionPoint point = null;
+		
+		//Registro punto de extensión del cuadro de propiedades
+		if (!extensionPoints.has("RasterSEPropertiesDialog")) {
+			point = extensionPoints.add("RasterSEPropertiesDialog");
+			point.setDescription("Raster Properties registrable panels (register instances of javax.swing.JPanel)");
+		}
+
+		//Entradas del menú del toc de raster
+		if (!extensionPoints.has("View_TocActions")) {
+			point = extensionPoints.add("View_TocActions");
+		}
+		point = extensionPoints.get("View_TocActions");
+		point.append("RasterSEProperties", "Raster Properties", RasterPropertiesTocMenuEntry.getSingleton());
+		
+		//Añade las propiedades de raster a la barra de herramientas. Si nadie registra paneles estará vacio
+		//cuando se abra
+		
+		point = extensionPoints.add("GenericToolBarMenu");
+		point.append("RasterProperties", "", RasterPropertiesTocMenuEntry.getSingleton());
+	}
+	
+	public void execute(String actionCommand) {
+		
+	}
+
+	public boolean isEnabled() {
+		return false;
+	}
+
+	public boolean isVisible() {
+		return false;
+	}
+
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/BinarySearch.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/BinarySearch.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/BinarySearch.java	(revision 2861)
@@ -0,0 +1,54 @@
+/* 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.raster.mainplugin.toolbar;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+import org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.JComboBoxConfigurableLookUp;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator;
+/**
+ * Clase para reimplementar una nueva busqueda para el componente
+ * {@link JComboBoxConfigurableLookUp}
+ * 
+ * @version 13/02/2008
+ * @author BorSanZa - Borja Sánchez Zamorano 
+ */
+public class BinarySearch implements ILookUp {
+	public List<Object> doLookUpConsideringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		Vector<Object> list = new Vector<Object>();
+		for (int i = 0; i < sortOrderedItems.size(); i++)
+			if (sortOrderedItems.get(i).toString().indexOf(text) != -1)
+				list.add(sortOrderedItems.get(i));
+		return Arrays.asList(list.toArray());
+	}
+
+	public List<Object> doLookUpIgnoringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		Vector<Object> list = new Vector<Object>();
+		for (int i = 0; i < sortOrderedItems.size(); i++)
+			if (sortOrderedItems.get(i).toString().toLowerCase().indexOf(text.toLowerCase()) != -1)
+				list.add(sortOrderedItems.get(i));
+		return Arrays.asList(list.toArray());
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/IGenericToolBarMenuItem.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/IGenericToolBarMenuItem.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/IGenericToolBarMenuItem.java	(revision 2861)
@@ -0,0 +1,89 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+package org.gvsig.raster.mainplugin.toolbar;
+
+import javax.swing.Icon;
+
+import org.gvsig.app.project.documents.view.toc.ITocItem;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+
+/**
+ * Interfaz que debe implementar quien quiera aparecer en la barra de
+ * herramientas genérica.
+ * 
+ * @version 06/02/2008
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IGenericToolBarMenuItem {
+	/**
+	 * Devuelve el nombre del grupo al que pertenece el item de menu
+	 * @return
+	 */
+	public String getGroup();
+	
+	/**
+	 * Devuelve el orden en el que aparecerá en el menú
+	 * @return
+	 */
+	public int getOrder();
+
+	/**
+	 * Devuelve el orden en el que aparecerá en el menú
+	 * @return
+	 */
+	public int getGroupOrder();
+	
+	/**
+	 * Devuelve el texto que se verá en el menú
+	 * @return
+	 */
+	public String getText();
+	
+	/**
+	 * Devuelve el icono del item del menu
+	 * @return
+	 */
+	public Icon getIcon();
+
+	/**
+	 * Dice si es visible el item de menu para dicha entrada
+	 * @param item
+	 * @param selectedItems
+	 * @return
+	 */
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems);
+	
+	/**
+	 * Dice si el item actual esta habilitado
+	 * @param item
+	 * @param selectedItems
+	 * @return
+	 */
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems);
+	
+	/**
+	 * Metodo que sera invocado cuando el item del menu sea presionado
+	 * @param item
+	 * @param selectedItems
+	 */
+	public void execute(ITocItem item, FLayer[] selectedItems);
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/ButtonItems.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/ButtonItems.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/ButtonItems.java	(revision 2861)
@@ -0,0 +1,103 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+package org.gvsig.raster.mainplugin.toolbar;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JButton;
+
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.gui.beans.controls.combobutton.ComboButton;
+/**
+ * Clase para gestionar y ordenar los items de un ComboButton
+ *  
+ * @version 13/02/2008
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ButtonItems {
+	private ComboButton comboButton = null;
+	private FLayer[] layers = null;
+	private List<IGenericToolBarMenuItem> arrayList = new ArrayList<IGenericToolBarMenuItem>();
+	private List<String> arrayKeys = new ArrayList<String>();
+
+	public ButtonItems(ComboButton comboButton, FLayer[] layers) {
+		this.comboButton = comboButton;
+		this.layers = layers;
+	}
+	
+	/**
+	 * Añade un item al ComboButton
+	 * @param menuItem
+	 * @param key
+	 */
+	public void addButton(IGenericToolBarMenuItem menuItem, String key) {
+		int pos = 0;
+		boolean find = false;
+		for (int i = 0; i < arrayList.size(); i++) {
+			pos = i;
+			IGenericToolBarMenuItem aux = (IGenericToolBarMenuItem) arrayList.get(i);
+			if (aux.getGroupOrder() > menuItem.getGroupOrder()) {
+				find = true;
+				break;
+			}
+			if (aux.getGroupOrder() == menuItem.getGroupOrder()) {
+				if (aux.getOrder() > menuItem.getOrder()) {
+					find = true;
+					break;
+				}
+			}
+		}
+		if (!find)
+			pos = arrayList.size();
+		arrayList.add(pos, menuItem);
+		arrayKeys.add(pos, key);
+	}
+	
+	/**
+	 * Refresca los items del ComboButton
+	 */
+	public void refresh() {
+		String actionCommand = comboButton.getActionCommand();
+		comboButton.clearButtons();
+		int group = -1;
+		for (int i = 0; i < arrayList.size(); i++) {
+			IGenericToolBarMenuItem aux = (IGenericToolBarMenuItem) arrayList.get(i);
+
+			if ((group != -1) && (group != aux.getGroupOrder()))
+				comboButton.addSeparator();
+
+			JButton button2 = new JButton(aux.getText(), aux.getIcon());
+
+			if (!aux.isVisible(null, layers))
+				button2.setEnabled(false);
+
+			if (!aux.isEnabled(null, layers))
+				button2.setEnabled(false);
+			
+			button2.setActionCommand((String) arrayKeys.get(i));
+			comboButton.addButton(button2);
+			group = aux.getGroupOrder();
+		}
+		comboButton.setSelectedItem(actionCommand);
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarPanel.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarPanel.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarPanel.java	(revision 2861)
@@ -0,0 +1,333 @@
+/* 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.raster.mainplugin.toolbar;
+
+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.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JToolBar;
+
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.DefaultComboBoxConfigurableLookUpModel;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.JComboBoxConfigurableLookUp;
+import org.gvsig.gui.beans.controls.IControl;
+import org.gvsig.gui.beans.controls.combobutton.ComboButton;
+import org.gvsig.gui.beans.controls.combobutton.ComboButtonEvent;
+import org.gvsig.gui.beans.controls.combobutton.ComboButtonListener;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.extensionpoint.ExtensionPoint;
+import org.gvsig.tools.extensionpoint.ExtensionPointManager;
+/**
+ * Componente que contiene los objetos visuales de la barra de herramientas
+ * generica
+ *
+ * @author BorSanZa - Borja Sánchez Zamorano 
+ */
+public class GenericToolBarPanel extends JToolBar implements ComboButtonListener, ActionListener, MouseListener, ItemListener, IControl {
+	private static final long serialVersionUID = -4382962282970490523L;
+	private JComboBoxConfigurableLookUp jCBCLU = null;
+	private ComboButton buttonGroup = new ComboButton();
+	private ComboButton buttonMenu = new ComboButton();
+	private FLayers lastLayers = null;
+
+	public GenericToolBarPanel() {
+		super("GenericToolBarPanel");
+		initialize();
+	}
+
+	/**
+	 * Especifica que las capas de la vista han cambiado.
+	 * @param layers
+	 */
+	public void setLayers(FLayers layers) {
+		lastLayers = layers;
+
+		getComboBoxConfigurableLookUp().setBlockPopupHided(true);
+		getComboBoxConfigurableLookUp().removeAllItems();
+
+		if(layers != null) {
+			List<FLayer> lyrs = getLayerList(layers, null);
+			for (int i = 0; i < lyrs.size(); i++)
+				getComboBoxConfigurableLookUp().addItem(((FLayer)lyrs.get(i)).getName());
+
+			if (layers.getActives().length > 0)
+				getComboBoxConfigurableLookUp().setSelectedItem(layers.getActives()[0].getName());
+			else if (layers.getLayersCount() > 0)
+				getComboBoxConfigurableLookUp().setSelectedItem(layers.getLayer(0).getName());
+		}
+		reloadSubMenu();
+		getComboBoxConfigurableLookUp().setBlockPopupHided(false);
+	}
+	
+	/**
+	 * Devuelve un combo de busqueda de items.
+	 * @return
+	 */
+	private JComboBoxConfigurableLookUp getComboBoxConfigurableLookUp() {
+		if (jCBCLU == null) {
+			jCBCLU = new JComboBoxConfigurableLookUp();
+			jCBCLU.setOnlyOneColorOnText(true);
+			jCBCLU.setPrototypeDisplayValue(" ");
+			if (jCBCLU.getModel() instanceof DefaultComboBoxConfigurableLookUpModel) {
+				((DefaultComboBoxConfigurableLookUpModel) jCBCLU.getModel()).setShowAllItemsInListBox(false);
+				((DefaultComboBoxConfigurableLookUpModel) jCBCLU.getModel()).setLookUpAgent(new BinarySearch());
+				((DefaultComboBoxConfigurableLookUpModel) jCBCLU.getModel()).setCaseSensitive(false);
+				jCBCLU.setToForceSelectAnItem(true);
+				jCBCLU.setDisplayAllItemsWithArrowButton(true);
+			}
+			jCBCLU.addActionListener(this);
+		}
+		return jCBCLU;
+	}
+
+	private void initialize() {
+		buttonGroup.addComboButtonClickedListener(this);
+		buttonGroup.setName("Menu principal");
+		buttonGroup.setMargin(new Insets(0, 0, 0, 0));
+		buttonGroup.setAlwaysMenuOnClick(true);
+		reloadMenuGroup();
+		add(buttonGroup);
+
+		buttonMenu.addComboButtonClickedListener(this);
+		buttonMenu.setName("Submenus");
+		buttonMenu.addMouseListener(this);
+		buttonMenu.setMargin(new Insets(0, 0, 0, 0));
+		reloadMenuGroup();
+		add(buttonMenu);
+
+		add(getComboBoxConfigurableLookUp());
+		this.setRollover(true);
+	}
+
+	/**
+	 * Recarga los items del menu global dejando seleccionado el item que habia
+	 * previamente, en caso de que exista
+	 */
+	public void reloadMenuGroup() {
+		FLayer[] layers = new FLayer[] { getLayerSelected() };
+		ButtonItems buttonItems = new ButtonItems(buttonGroup, layers);
+
+		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
+		ExtensionPoint point = extensionPoints.get("GenericToolBarGroup");
+		Iterator<?> iterator = point.iterator();
+		while (iterator.hasNext()) {
+			ExtensionPoint.Extension extension = (ExtensionPoint.Extension) iterator.next();
+			Object object;
+			try {
+				object = extension.create();
+			} catch (Exception e) {
+				throw new RuntimeException(e);
+			}
+			if (object instanceof IGenericToolBarMenuItem)
+				buttonItems.addButton((IGenericToolBarMenuItem) object, extension.getName());
+		}
+		buttonItems.refresh();
+		reloadSubMenu();
+	}
+
+	/**
+	 * Recarga los items del submenu dejando seleccionado el item que habia
+	 * previamente, en caso de que exista
+	 */
+	public void reloadSubMenu() {
+		FLayer[] layers = new FLayer[] { getLayerSelected() };
+		ButtonItems buttonItems = new ButtonItems(buttonMenu, layers);
+		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
+		ExtensionPoint point = extensionPoints.add("GenericToolBarMenu");
+		Iterator<?> iterator = point.iterator();
+		while (iterator.hasNext()) {
+			ExtensionPoint.Extension entry = (ExtensionPoint.Extension) iterator.next();
+			Object object;
+			try {
+				object = entry.create();
+			} catch (Exception e) {
+				throw new RuntimeException(e);
+			}
+			if (object instanceof IGenericToolBarMenuItem) {
+				IGenericToolBarMenuItem item = (IGenericToolBarMenuItem) object;
+				if (!buttonGroup.getActionCommand().equals(item.getGroup()))
+					continue;
+				buttonItems.addButton(item, entry.getName());
+			}
+		}
+		buttonItems.refresh();
+	}
+
+	/**
+	 * Devuelve el layer seleccionado en el combobox
+	 * @return
+	 */
+	public FLayer getLayerSelected() {
+		if (lastLayers == null)
+			return null;
+		List<FLayer> lyrs = getLayerList(lastLayers, null);
+		for (int i = 0; i < lyrs.size(); i++)
+			if (((FLayer)lyrs.get(i)).getName().equals(getComboBoxConfigurableLookUp().getEditor().getItem()))
+				return (FLayer)lyrs.get(i);
+		return null;
+	}
+	
+	public static List<FLayer> getLayerList(FLayers srcLyrs, List<FLayer> destLyrs) {
+		if(srcLyrs == null)
+			return null;
+		if(destLyrs == null)
+			destLyrs = new ArrayList<FLayer>();
+		for (int i = 0; i < srcLyrs.getLayersCount(); i++) {
+			if(srcLyrs.getLayer(i) instanceof FLayers)
+				destLyrs = getLayerList((FLayers)srcLyrs.getLayer(i), destLyrs);
+			else 
+				destLyrs.add(srcLyrs.getLayer(i));
+		}
+		return destLyrs;
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == getComboBoxConfigurableLookUp()) {
+//			selectLayerInTOC(lastLayers, (String) getComboBoxConfigurableLookUp().getSelectedItem());
+		}
+	}
+
+	public void actionComboButtonClicked(ComboButtonEvent e) {
+		if (e.getSource() == buttonGroup) {
+			reloadSubMenu();
+			return;
+		}
+		if (e.getSource() == buttonMenu) {
+			ExtensionPointManager extensionPoints =ToolsLocator.getExtensionPointManager();
+			ExtensionPoint point=extensionPoints.add("GenericToolBarMenu");
+			Iterator<?> iterator = point.iterator();
+			while (iterator.hasNext()) {
+				ExtensionPoint.Extension entry = (ExtensionPoint.Extension) iterator
+						.next();
+				if (!entry.getName().equals(
+						((JButton) e.getSource()).getActionCommand()))
+					continue;
+				Object object;
+				try {
+					object = entry.create();
+				} catch (Exception e1) {
+					// TODO Auto-generated catch block
+					throw new RuntimeException(e1);
+				}
+				if (object instanceof IGenericToolBarMenuItem) {
+					IGenericToolBarMenuItem item = (IGenericToolBarMenuItem) object;
+
+					FLayer[] layers = new FLayer[] { getLayerSelected() };
+					if (!item.isVisible(null, layers))
+						continue;
+					if (!item.isEnabled(null, layers))
+						continue;
+
+					if (getLayerSelected() != null) {
+						item.execute(null, new FLayer[] { getLayerSelected() });
+					} else
+						item.execute(null, null);
+					reloadSubMenu();
+					return;
+				}
+			}
+			return;
+		}
+	}
+
+	/**
+	 * Selecciona una capa en el TOC
+	 * @param layers
+	 * @param nameLayer
+	 */
+//	private void selectLayerInTOC(FLayers layers, String nameLayer) {
+//		if (layers == null)
+//			return;
+//		for (int i = 0; i < layers.getLayersCount(); i++) {
+//			if (layers.getLayer(i) instanceof FLayers) {
+//				selectLayerInTOC((FLayers) layers.getLayer(i), nameLayer);
+//			} else {
+//				if (layers.getLayer(i) instanceof FLayer) {
+//					FLayer layer = ((FLayer) layers.getLayer(i));
+//					if (layer.getName().equals(nameLayer) && !layer.isActive()) {
+//						layer.setActive(true);
+//					}
+//				}
+//			}
+//		}
+//	}
+
+	/**
+	 * Recargo el menu cada vez que entra el raton en el boton, para ahorrar tiempo en
+	 * la visualizacion del mismo
+	 */
+	public void mouseEntered(MouseEvent e) {
+		this.reloadSubMenu();
+	}
+
+	public void itemStateChanged(ItemEvent e) {
+//		if (e.getStateChange() != ItemEvent.SELECTED)
+//			return;
+//
+//		FLayer layer = getLayerSelected();
+//
+//		if (layer == null)
+//			return;
+//
+//		FLayers layers = lastLayers;
+//		for(int i = 0; i < layers.getLayersCount(); i++)
+//			layers.getLayer(i).setActive(false);
+//
+//		layer.setActive(true);
+//		View view = (View) PluginServices.getMDIManager().getActiveWindow();
+//		JScrollBar verticalBar = view.getTOC().getJScrollPane().getVerticalScrollBar();
+//		double widthPerEntry = verticalBar.getMaximum() / layer.getMapContext().getLayers().getLayersCount();
+//		verticalBar.setValue((int)widthPerEntry * (layer.getMapContext().getLayers().getLayersCount() - pos - 1));
+	}
+
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+	public void mousePressed(MouseEvent e) {}
+	public void mouseReleased(MouseEvent e) {}
+
+	public void addActionListener(ActionListener listener) {
+		
+	}
+
+	public Object getValue() {
+		return null;
+	}
+
+	public void removeActionListener(ActionListener listener) {
+		
+	}
+
+	public Object setValue(Object value) {
+		return null;
+	}
+
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarMenuItem.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarMenuItem.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/toolbar/GenericToolBarMenuItem.java	(revision 2861)
@@ -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.raster.mainplugin.toolbar;
+
+import java.util.Map;
+
+import javax.swing.Icon;
+
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.app.project.documents.view.toc.ITocItem;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.tools.extensionpoint.ExtensionBuilder;
+
+/**
+ * Clase que implementa un IGenericToolBarMenuItem para evitar tener que crear
+ * clases para items de menu sencillas
+ *
+ * @version 06/02/2008
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public class GenericToolBarMenuItem implements IGenericToolBarMenuItem, ExtensionBuilder {
+	private String text  = "";
+	private int    order = 0;
+	private int    groupOrder = 0;
+	private Icon   icon  = null;
+	private String group = "";
+
+	public GenericToolBarMenuItem(String text, Icon icon) {
+		this(text, icon, "", 0);
+	}
+
+	public GenericToolBarMenuItem(String text) {
+		this(text, IconThemeHelper.getImageIcon("blank-icon"), "", 0);
+	}
+
+	public GenericToolBarMenuItem(String text, Icon icon, String group, int order) {
+		this.text = text;
+		this.order = order;
+		this.icon = icon;
+		this.group = group;
+	}
+
+	public GenericToolBarMenuItem(String text, Icon icon, String group) {
+		this(text, icon, group, 0);
+	}
+
+	public GenericToolBarMenuItem(String text, Icon icon, int order) {
+		this(text, icon, "", 0);
+	}
+
+	public String getGroup() {
+		return group;
+	}
+
+	public int getOrder() {
+		return order;
+	}
+
+	public String getText() {
+		return text;
+	}
+
+	public Icon getIcon() {
+		return icon;
+	}
+
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		return true;
+	}
+
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		return true;
+	}
+
+	public int getGroupOrder() {
+		return groupOrder;
+	}
+
+	public void execute(ITocItem item, FLayer[] selectedItems) {}
+
+	public Object create() {
+		return this;
+	}
+
+	public Object create(Object[] args) {
+		return this;
+	}
+
+	@SuppressWarnings("rawtypes")
+	public Object create(Map args) {
+		return this;
+	}
+
+	public boolean isEnableEvents() {
+		return true;
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginUtils.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginUtils.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/RasterMainPluginUtils.java	(revision 2861)
@@ -0,0 +1,412 @@
+/* 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.raster.mainplugin;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Point;
+import java.io.File;
+import java.util.ArrayList;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.app.project.Project;
+import org.gvsig.app.project.ProjectManager;
+import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
+import org.gvsig.fmap.dal.DALLocator;
+import org.gvsig.fmap.dal.DataManager;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.coverage.RasterLocator;
+import org.gvsig.fmap.dal.coverage.datastruct.Param;
+import org.gvsig.fmap.dal.coverage.datastruct.Params;
+import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
+import org.gvsig.fmap.dal.coverage.util.ProviderServices;
+import org.gvsig.fmap.dal.exception.InitializeException;
+import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
+import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.MapContextManager;
+import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
+import org.gvsig.gui.beans.propertiespanel.PropertyStruct;
+import org.gvsig.i18n.Messages;
+import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
+import org.gvsig.raster.util.RasterNotLoadException;
+
+/**
+ * Herramientas de uso general y que son dependientes de gvSIG, FMap o de
+ * libUIComponents. En caso de no serlo existe una clase independiente de
+ * cualquier proyecto dentro de libRaster para este tipo de funciones.
+ *
+ * @version 31/05/2007
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class RasterMainPluginUtils {
+
+	/**
+	 * Obtiene la lista de capas del TOC y devuelve las raster. Si hay capas agrupadas lo tiene en cuenta y mira
+	 * dentro de la agrupación.
+	 * @param srcLyrs FLayers de la vista
+	 * @param destLyrs Lista de capas 
+	 * @return ArrayList con la lista de capas raster agrupadas o no. El orden en que aparecen
+	 * en la lista es de abajo a arriba las que aparecen en el TOC.
+	 */
+	public static ArrayList<FLayer> getRasterLayerList(FLayers srcLyrs, ArrayList<FLayer> destLyrs) {
+		if(destLyrs == null)
+			destLyrs = new ArrayList<FLayer>();
+		for (int i = 0; i < srcLyrs.getLayersCount(); i++) {
+			if(srcLyrs.getLayer(i) instanceof DefaultFLyrRaster)
+				destLyrs.add(srcLyrs.getLayer(i));
+			if(srcLyrs.getLayer(i) instanceof FLayers)
+				destLyrs = getLayerList((FLayers)srcLyrs.getLayer(i), destLyrs);
+		}
+		return destLyrs;
+	}
+	
+	/**
+	 * Obtiene la lista de capas del TOC y devuelve las raster. Si hay capas agrupadas lo tiene en cuenta y mira
+	 * dentro de la agrupación.
+	 * @param srcLyrs FLayers de la vista
+	 * @param destLyrs Lista de capas 
+	 * @return ArrayList con la lista de capas raster agrupadas o no. El orden en que aparecen
+	 * en la lista es de abajo a arriba las que aparecen en el TOC.
+	 */
+	public static ArrayList<FLayer> getLayerList(FLayers srcLyrs, ArrayList<FLayer> destLyrs) {
+		if(srcLyrs == null)
+			return null;
+		if(destLyrs == null)
+			destLyrs = new ArrayList<FLayer>();
+		for (int i = 0; i < srcLyrs.getLayersCount(); i++) {
+			if(srcLyrs.getLayer(i) instanceof FLayers)
+				destLyrs = getLayerList((FLayers)srcLyrs.getLayer(i), destLyrs);
+			else 
+				destLyrs.add(srcLyrs.getLayer(i));
+		}
+		return destLyrs;
+	}
+	
+	/**
+	 * Obtiene el nombre de la vista donde está cargada la capa que se pasa por parámetro
+	 * @param layer Capa cargada en una vista
+	 * @return Nombre de la vista donde está cargada la capa.
+	 */
+	public static String getView(FLayer layer) {
+//		Project p = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject();
+		Project p = ProjectManager.getInstance().getCurrentProject();
+		return p.getViewName(layer);	
+	}
+	
+	/**
+	 * Añade una ventana al gestor de ventanas
+	 * @param window
+	 */
+	public static void addWindow(IWindow window) {
+		PluginServices.getMDIManager().addWindow(window);
+	}
+	
+	/**
+	 * Elimina una ventana al gestor de ventanas
+	 * @param window
+	 */
+	public static void closeWindow(IWindow window) {
+		PluginServices.getMDIManager().closeWindow(window);
+	}
+	
+	/**
+	 * Selecciona los controles del panel de propiedades a partir de los parámtros
+	 * obtenidos del driver. Este método realiza una transformación entre Params
+	 * obtenido del driver de escritura y los parámetros del panel de propiedades.
+	 * @param panel Panel de propiedades
+	 * @param params Parámetros del driver
+	 * @param notTakeIntoAccount Nombre de parámetros que no hay que tener en cuenta. Si es null se tienen en cuenta todos.
+	 */
+	public static void loadPropertiesFromWriterParams(PropertiesComponent pComp, Params params, String[] notTakeIntoAccount) {
+		for (int i = 0; i < params.getNumParams(); i++) {
+			Param p = params.getParam(i);
+			String name = Messages.getText(p.getId());
+			String key = p.getId();
+
+			//Miramos si el parámetro coincide con  alguno en la lista de parametros que no hay que
+			//tener en cuenta. Si es así no lo añadimos
+			if(notTakeIntoAccount != null && notTakeIntoAccount.length > 0) {
+				boolean jump = false;
+				for (int j = 0; j < notTakeIntoAccount.length; j++) {
+					if (key.equals(notTakeIntoAccount[j]))
+						jump = true;
+				}
+				if(jump)
+					continue;
+			}
+
+			Object[] types = null;
+			int selectedValue = 0;
+
+			switch (p.getType()) {
+				case Params.CHECK:
+					pComp.addValue(name, key, p.getDefaultValue(), types);
+					break;
+				case Params.CHOICE:
+					ArrayList<String> list = new ArrayList<String>();
+					for (int j = 0; j < p.getList().length; j++) {
+						list.add(p.getList()[j]);
+						if (p.getDefaultValue() instanceof Integer)
+							if (((Integer) p.getDefaultValue()).intValue() == j)
+								selectedValue = j;
+					}
+					types = new Object[] { new Integer(PropertiesComponent.TYPE_COMBO), list };
+					pComp.addValue(name, key, new Integer(selectedValue), types);
+					break;
+				case Params.SLIDER:
+					types = new Object[] { new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(p.getList()[0]), new Integer(p.getList()[1]) };
+					pComp.addValue(name, key, p.getDefaultValue(), types);
+					break;
+				default:
+					pComp.addValue(Messages.getText(((Param)params.getParam(i)).getId()), params.getParam(i).getId(), params.getParam(i).getDefaultValue(), null);
+					break;
+			}
+		}
+	}
+
+	/**
+	 * Carga los parámetros del escritor WriterParams con los valores obtenidos
+	 * de la ventana de propiedades.
+	 */
+	@SuppressWarnings("unchecked")
+	public static void loadWriterParamsFromPropertiesPanel(PropertiesComponent pComp, Params params) {
+		ArrayList<PropertyStruct> values = pComp.getValues();
+		for (int iParam = 0; iParam < params.getNumParams(); iParam++) {
+			Param p = params.getParam(iParam);
+			for (int iValue = 0; iValue < values.size(); iValue++) {
+				PropertyStruct prop = values.get(iValue);
+				if (p.getId().compareTo(prop.getKey()) == 0) {
+					switch (p.getType()) {
+						case Params.CHECK:
+							p.setDefaultValue((Boolean) prop.getNewValue());
+							break;
+						case Params.CHOICE:
+							p.setDefaultValue(((Integer) prop.getNewValue()));//p.list[((Integer) prop.getNewValue()).intValue()];
+							break;
+						case Params.SLIDER:
+							try {
+								p.setDefaultValue((Integer)prop.getNewValue());
+							} catch (NumberFormatException e) {}
+					}
+					break;
+				}
+			}
+		}
+	}
+
+	/**
+	 * Función que devuelve true si se tiene permiso de escritura en la ruta
+	 * indicada en el parámetro path y false si no los tiene.
+	 * @param path Ruta a comprobar los permisosv
+	 * @param pluginObject si es distinto de null se obtiene un mensaje de
+	 *          advertencia y sirve como parámetro para getText de la traducción.
+	 *          Si es null no se mostrará ventana de advertencia
+	 * @return true si se tiene permiso de escritura en la ruta indicada en el
+	 *         parámetro path y false si no los tiene.
+	 */
+	public static boolean canWrite(String path, Object pluginObject) {
+		File f = new File(path);
+		if(f.exists() && f.canWrite())
+			return true;
+		else {
+			if(pluginObject != null)
+				JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
+						PluginServices.getText(pluginObject, "error_escritura"));
+			return false;
+		}
+	}
+
+	/**
+	 * Carga una capa raster en una vista de gvSIG.
+	 * @param viewName Nombre de la vista donde ha de cargarse. Si vale null se cargará en la
+	 * primera vista que encuentre que esté activa. Si no hay ninguna saltará una excepción.
+	 * @param fileName Nombre del fichero a cargar. No debe ser nulo nunca.
+	 * @param layerName Nombre de la capa. Si es null se asignará el nombre del
+	 * fichero sin extensión.
+	 * @throws RasterNotLoadException Excepción que se lanza cuando no se ha podido cargar la capa
+	 * por algún motivo.
+	 */
+	@SuppressWarnings("deprecation")
+	public static FLayer loadLayer(String viewName, String fileName, String layerName) throws RasterNotLoadException {
+		if(fileName ==  null)
+			return null;
+
+		//Seleccionamos la vista de gvSIG
+		AbstractViewPanel theView = null;
+		try {
+			IWindow[] allViews = PluginServices.getMDIManager().getAllWindows();
+			if(viewName != null) {
+				for (int i = 0; i < allViews.length; i++) {
+					if (allViews[i] instanceof AbstractViewPanel
+						&& (((AbstractViewPanel) allViews[i]).getDocument().getName().equals(viewName) ||
+							PluginServices.getMDIManager().getWindowInfo((AbstractViewPanel) allViews[i]).getTitle().equals(viewName)))
+						theView = (AbstractViewPanel) allViews[i];
+				}
+			} else {
+				IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
+				for (int i = 0; i < allViews.length; i++) {
+					if (allViews[i] instanceof AbstractViewPanel && ((AbstractViewPanel)allViews[i]) == activeWindow) //En la primera vista activa
+						theView = (AbstractViewPanel) allViews[i];
+				}
+				if(theView == null) {
+					for (int i = 0; i < allViews.length; i++) {
+						if (allViews[i] instanceof AbstractViewPanel) //En la primera vista
+							theView = (AbstractViewPanel) allViews[i];
+					}
+				}
+			}
+
+			if (theView == null)
+				throw new RasterNotLoadException("Imposible cargar la capa.");
+		} catch (ClassCastException ex) {
+			throw new RasterNotLoadException("No se puede hacer un casting de esa IWindow a View.");
+		}
+
+		theView.getMapControl().getMapContext().beginAtomicEvent();
+
+		DefaultFLyrRaster lyr = null;
+		try {
+			ProviderServices provServ = RasterLocator.getManager().getProviderServices();
+			RasterDataParameters storeParameters = provServ.createNotTiledParameters(fileName);
+			storeParameters.setSRS(theView.getProjection());
+			
+			MapContextManager mcm = MapContextLocator.getMapContextManager();
+			DataManager dataManager = DALLocator.getDataManager();
+			DataStore dataStore = null;
+			try {
+				dataStore = dataManager.createStore(storeParameters);
+			} catch (ValidateDataParametersException e) {
+				throw new RasterNotLoadException("Error al cargar la capa.");
+			} catch (InitializeException e) {
+				throw new RasterNotLoadException("Error al cargar la capa.");
+			} catch (ProviderNotRegisteredException e) {
+				throw new RasterNotLoadException("Error al cargar la capa.");
+			}
+			
+			lyr = new DefaultFLyrRaster();
+			
+			if(layerName == null) {
+				int endIndex = fileName.lastIndexOf(".");
+				if (endIndex < 0)
+					endIndex = fileName.length();
+				
+				layerName = fileName.substring(fileName.lastIndexOf(File.separator) + 1, endIndex);
+			}
+			
+			lyr = (DefaultFLyrRaster) mcm.createLayer(layerName, dataStore);
+
+		} catch (LoadLayerException e) {
+			throw new RasterNotLoadException("Error al cargar la capa.");
+		} catch (InitializeException e) {
+			throw new RasterNotLoadException("Error creating parameters.");
+		} catch (ProviderNotRegisteredException e) {
+			throw new RasterNotLoadException("Error creating parameters.");
+		}
+		theView.getMapControl().getMapContext().getLayers().addLayer(lyr);
+		theView.getMapControl().getMapContext().invalidate();
+		theView.getMapControl().getMapContext().endAtomicEvent();
+		return lyr;
+	}
+	
+	/**
+	 * Carga una capa raster en una vista de gvSIG.
+	 * @param viewName Nombre de la vista donde ha de cargarse. Si vale null se cargará en la
+	 * primera vista que encuentre que esté activa. Si no hay ninguna saltará una excepción.
+	 * @param fileName Nombre del fichero a cargar. No debe ser nulo nunca.
+	 * @param layerName Nombre de la capa. Si es null se asignará el nombre del
+	 * fichero sin extensión.
+	 * @throws RasterNotLoadException Excepción que se lanza cuando no se ha podido cargar la capa
+	 * por algún motivo.
+	 */
+	public static FLayer loadLayer(String viewName, FLayer lyr) throws RasterNotLoadException {
+		if(lyr ==  null)
+			return null;
+
+		//Seleccionamos la vista de gvSIG
+		AbstractViewPanel theView = null;
+		try {
+			IWindow[] allViews = PluginServices.getMDIManager().getAllWindows();
+			if(viewName != null) {
+				for (int i = 0; i < allViews.length; i++) {
+					if (allViews[i] instanceof AbstractViewPanel
+						&& PluginServices.getMDIManager().getWindowInfo((AbstractViewPanel) allViews[i]).getTitle().equals(viewName))
+						theView = (AbstractViewPanel) allViews[i];
+				}
+			} else {
+				IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
+				for (int i = 0; i < allViews.length; i++) {
+					if (allViews[i] instanceof AbstractViewPanel && ((AbstractViewPanel)allViews[i]) == activeWindow) //En la primera vista activa
+						theView = (AbstractViewPanel) allViews[i];
+				}
+				if(theView == null) {
+					for (int i = 0; i < allViews.length; i++) {
+						if (allViews[i] instanceof AbstractViewPanel) //En la primera vista
+							theView = (AbstractViewPanel) allViews[i];
+					}
+				}
+			}
+
+			if (theView == null)
+				throw new RasterNotLoadException("Imposible cargar la capa.");
+		} catch (ClassCastException ex) {
+			throw new RasterNotLoadException("No se puede hacer un casting de esa IWindow a View.");
+		}
+
+		theView.getMapControl().getMapContext().beginAtomicEvent();
+		theView.getMapControl().getMapContext().getLayers().addLayer(lyr);
+		theView.getMapControl().getMapContext().invalidate();
+		theView.getMapControl().getMapContext().endAtomicEvent();
+		return lyr;
+	}
+	
+	/**
+	 * Calculo de las coordenadas de una ventana IWindow para que quede centrada sobre el 
+	 * MainFrame. Estas coordenadas solo valen para un IWindow ya que andami mete las ventanas
+	 * con coordenadas relativas a su ventanta principal.
+	 * @param widthWindow Ancho de la ventana a añadir
+	 * @param heightWindow Alto de la ventana a añadir
+	 * @return Array con el ancho y el alto 
+	 */
+	public static Point iwindowPosition(int widthWindow, int heightWindow) {
+		int posWindowX = 0;
+		int posWindowY = 0;
+		Dimension dim = null;
+		Point pos = null;
+		if(PluginServices.getMainFrame() instanceof Component) {
+			dim = ((Component)PluginServices.getMainFrame()).getSize();
+			pos = ((Component)PluginServices.getMainFrame()).getLocation();
+			if(dim != null && pos != null) {
+				posWindowX = ((dim.width >> 1) - (widthWindow >> 1));
+				posWindowY = ((dim.height >> 1) - (heightWindow >> 1) - 70);
+				return new Point(posWindowX, posWindowY);
+			}
+		}
+		return null;
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/Configuration.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/Configuration.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/Configuration.java	(revision 2861)
@@ -0,0 +1,343 @@
+/* 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.raster.mainplugin.config;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.raster.fmap.layers.IConfiguration;
+import org.gvsig.utils.XMLEntity;
+
+/**
+ * La clase <code>Configuration</code> sirve para poder leer y escribir valores en el entorno
+ * de raster a nivel de configuración. Para leer o escribir hay que usar los
+ * metodos getValue y setValue, estos metodos lanzan eventos en el caso de
+ * cambiar el valor que habia establecido. Forma de uso:<p>
+ *
+ * En la lectura es recomendable pasar un valor por defecto en el get, para que
+ * si no existe o si existe pero no corresponde el tipo de datos devolvera el
+ * valor por defecto<p>
+ *
+ * <code>Boolean valor = Configuration.getValue("valorBooleano", Boolean.valueOf(true));</code><p>
+ *
+ * <code>Configuration.setValue("valorBooleano", Boolean.valueOf(false));</code><p>
+ *
+ * Solo se pueden usar los siguientes tipos de datos:<br>
+ *  - <b>Boolean</b>, <b>Double</b>, <b>Float</b>, <b>Integer</b>, <b>Long</b>
+ *  y <b>String</b>.<p>
+ *
+ * Otra funcionalidad que tiene, es que puedes agregar un manejador de eventos
+ * para controlar los cambios de las variables y actuar en consecuencia si cambia
+ * la que deseas.
+ *
+ * @version 07/12/2007
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public class Configuration implements IConfiguration {
+	static private Configuration singleton              = new Configuration();
+	private ArrayList<ConfigurationListener>            
+	                             actionCommandListeners = new ArrayList<ConfigurationListener>();
+	private XMLEntity            xml                    = null;
+	private HashMap<String, Object>
+	                             hashMap                = new HashMap<String, Object>();
+
+	/**
+	 * Constructor privado. Nos aseguramos de que nadie pueda crear una instancia
+	 * desde fuera, la configuración es única para todos.
+	 */
+	private Configuration() {
+		try {
+			PluginServices ps = PluginServices.getPluginServices("org.gvsig.raster.mainplugin");
+			xml = ps.getPersistentXML();
+		} catch (NullPointerException e) {
+			//No está inicializado Configuration
+			xml = new XMLEntity();
+		}
+	}
+
+	/**
+	 * Devuelve un valor Boolean para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public Boolean getValue(String key, Boolean defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return Boolean.valueOf(getXMLEntity().getStringProperty(key));
+		} catch (Exception e) {
+		}
+		try {
+			getXMLEntity().putProperty(key, defaultValue.booleanValue());
+		} catch(NullPointerException e) {
+			//No está inicializada la configuración. Devuelve el default
+		}
+		return defaultValue;
+	}
+
+	/**
+	 * Devuelve un valor Double para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public Double getValue(String key, Double defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return Double.valueOf(getXMLEntity().getStringProperty(key));
+		} catch (Exception e) {
+		}
+		getXMLEntity().putProperty(key, defaultValue.doubleValue());
+		return defaultValue;
+	}
+
+	/**
+	 * Devuelve un valor Float para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public Float getValue(String key, Float defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return Float.valueOf(getXMLEntity().getStringProperty(key));
+		} catch (Exception e) {
+		}
+		getXMLEntity().putProperty(key, defaultValue.floatValue());
+		return defaultValue;
+	}
+
+	/**
+	 * Devuelve un valor Integer para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public Integer getValue(String key, Integer defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return Integer.valueOf(getXMLEntity().getStringProperty(key));
+		} catch (Exception e) {
+		}
+		getXMLEntity().putProperty(key, defaultValue.intValue());
+		return defaultValue;
+	}
+
+	/**
+	 * Devuelve un valor Long para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public Long getValue(String key, Long defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return Long.valueOf(getXMLEntity().getStringProperty(key));
+		} catch (Exception e) {
+		}
+		getXMLEntity().putProperty(key, defaultValue.longValue());
+		return defaultValue;
+	}
+
+	/**
+	 * Devuelve un valor String para el key especificado
+	 * @param key
+	 * @param defaultValue
+	 * @return
+	 */
+	static public String getValue(String key, String defaultValue) {
+		singleton.saveDefaultValue(key, defaultValue);
+		try {
+			return getXMLEntity().getStringProperty(key);
+		} catch (Exception e) {
+		}
+		getXMLEntity().putProperty(key, defaultValue);
+		return defaultValue;
+	}
+
+	/**
+	 * Guarda el valor por defecto en caso de que no exista
+	 * @param key
+	 * @param defaultValue
+	 */
+	private void saveDefaultValue(String key, Object defaultValue) {
+		if (hashMap.get(key) == null)
+			hashMap.put(key, defaultValue);
+	}
+
+	/**
+	 * Devuelve el valor por defecto de un key
+	 * @param key
+	 * @return
+	 */
+	static public Object getDefaultValue(String key) {
+		return singleton.hashMap.get(key);
+	}
+
+	/**
+	 * Guarda en la configuracion el Objeto pasado por parametro asociado a dicho
+	 * key
+	 * @param key
+	 * @param value
+	 */
+	private void putProperty(String key, Object value) {
+		if (Integer.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, ((Integer) value).intValue());
+			return;
+		}
+		if (Double.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, ((Double) value).doubleValue());
+			return;
+		}
+		if (Float.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, ((Float) value).floatValue());
+			return;
+		}
+		if (Boolean.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, ((Boolean) value).booleanValue());
+			return;
+		}
+		if (Long.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, ((Long) value).longValue());
+			return;
+		}
+		if (String.class.isInstance(value)) {
+			getXMLEntity().putProperty(key, (String) value);
+			return;
+		}
+		getXMLEntity().putProperty(key, value);
+	}
+
+	/**
+	 * Establece un valor en la configuracion
+	 * @param uri
+	 * @param value
+	 */
+	static public void setValue(String key, Object value) {
+		if (value == null) {
+			getXMLEntity().remove(key);
+			singleton.callConfigurationChanged(key, value);
+			return;
+		}
+
+		String oldValue = getValue(key, value.toString());
+
+		singleton.putProperty(key, value);
+
+		if (!oldValue.equals(value.toString()))
+			singleton.callConfigurationChanged(key, value);
+	}
+
+	/**
+	 * Añadir un listener a la lista de eventos
+	 * @param listener
+	 */
+	static public void addValueChangedListener(ConfigurationListener listener) {
+		if (!singleton.actionCommandListeners.contains(listener))
+			singleton.actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	static public void removeValueChangedListener(ConfigurationListener listener) {
+		singleton.actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callConfigurationChanged(String key, Object value) {
+		Iterator<ConfigurationListener> iterator = actionCommandListeners.iterator();
+		while (iterator.hasNext()) {
+			ConfigurationListener listener = iterator.next();
+			listener.actionConfigurationChanged(new ConfigurationEvent(this, key, value));
+		}
+	}
+
+	/**
+	 * Devuelve una instancia unica al XMLEntity de Configuration
+	 * @return
+	 */
+	static private XMLEntity getXMLEntity() {
+		return singleton.xml;
+	}
+	
+	/**
+	 * Devuelve una instancia al unico objeto de configuración que puede existir.
+	 * @return
+	 */
+	static public Configuration getSingleton() {
+		return singleton;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueBoolean(java.lang.String, java.lang.Boolean)
+	 */
+	public Boolean getValueBoolean(String name, Boolean defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueString(java.lang.String, java.lang.String)
+	 */
+	public String getValueString(String name, String defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueDouble(java.lang.String, java.lang.Double)
+	 */
+	public Double getValueDouble(String name, Double defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueFloat(java.lang.String, java.lang.Float)
+	 */
+	public Float getValueFloat(String name, Float defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueInteger(java.lang.String, java.lang.Integer)
+	 */
+	public Integer getValueInteger(String name, Integer defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.fmap.raster.conf.IConfiguration#getValueLong(java.lang.String, java.lang.Long)
+	 */
+	public Long getValueLong(String name, Long defaultValue) {
+		return Configuration.getValue(name, defaultValue);
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationEvent.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationEvent.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationEvent.java	(revision 2861)
@@ -0,0 +1,61 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+package org.gvsig.raster.mainplugin.config;
+
+import java.util.EventObject;
+/**
+ * Estado del evento de configuración para las preferencias de Raster.
+ * 
+ * @version 26/02/2008
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ConfigurationEvent extends EventObject {
+	private static final long serialVersionUID = 7016236098872059L;
+	private String key;
+	private Object value;
+
+	/**
+	 * Constructor de un ConfigurationEvent
+	 * @param source
+	 * @param key
+	 * @param value
+	 */
+	public ConfigurationEvent(Object source, String key, Object value) {
+		super(source);
+		this.key = key;
+		this.value = value;
+	}
+
+	/**
+	 * @return the key
+	 */
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * @return the value
+	 */
+	public Object getValue() {
+		return value;
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationListener.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationListener.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/config/ConfigurationListener.java	(revision 2861)
@@ -0,0 +1,32 @@
+/* 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.raster.mainplugin.config;
+
+import java.util.EventListener;
+
+public interface ConfigurationListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia un valor de configuracion.
+	 * @param e
+	 */
+	public void actionConfigurationChanged(ConfigurationEvent e);
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/CreateLayerPanel.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/CreateLayerPanel.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/CreateLayerPanel.java	(revision 2861)
@@ -0,0 +1,237 @@
+/* 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.raster.mainplugin.beans.createlayer;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.raster.fmap.layers.FLyrRaster;
+
+/**
+ * Panel para unificar las propiedades de generacion de capas nuevas en ficheros
+ * o solo en visualizacion.
+ * 
+ * @version 10/03/2008
+ * @author BorSanZa - Borja Sánchez Zamorano 
+ */
+public class CreateLayerPanel {
+	private JPanel        panel         = null;
+	private JRadioButton  jRBOnlyView   = null;
+	private JRadioButton  jRBNewLayer   = null;
+	private NewLayerPanel panelNewLayer = null;
+	private FLyrRaster    lyr           = null;
+
+	/**
+	 * Constructor de un CreateLayerPanel
+	 */
+	public CreateLayerPanel(FLyrRaster lyr) {
+		this.lyr = lyr;
+		initialize();
+		translate();
+	}
+	
+	/**
+	 * Disables the new layer option. It is useful for remote
+	 * services
+	 */
+	public void disableNewLayer() {
+		getRadioOnlyView().setSelected(true);
+		getRadioNewLayer().setEnabled(false);
+	}
+	
+	/**
+	 * Devuelve el panel principal
+	 * @return
+	 */
+	public JPanel getJPanel() {
+		if (panel == null) {
+			panel = new JPanel();
+		}
+		return panel;
+	}
+
+	/**
+	 * Seccion donde irán todas las traducciones invariables del componente
+	 */
+	private void translate() {
+		getRadioOnlyView().setText(PluginServices.getText(this, "solo_visualizacion"));
+		getRadioNewLayer().setText(PluginServices.getText(this, "capa_nueva"));
+	}
+	
+	/**
+	 * Inicializar el panel de CreateLayer
+	 */
+	private void initialize() {
+		ButtonGroup buttonGroup1;
+		GridBagConstraints gridBagConstraints;
+
+		getJPanel().setLayout(new GridBagLayout());
+		
+		buttonGroup1 = new ButtonGroup();
+		buttonGroup1.add(getRadioOnlyView());
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(3, 3, 3, 3);
+		getJPanel().add(getRadioOnlyView(), gridBagConstraints);
+
+		buttonGroup1.add(getRadioNewLayer());
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(3, 3, 3, 3);
+		getJPanel().add(getRadioNewLayer(), gridBagConstraints);
+		
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(3, 3, 3, 3);
+		getJPanel().add(getPanelNewLayer().getJPanel(), gridBagConstraints);
+	}
+	
+	public NewLayerPanel getPanelNewLayer() {
+		if (panelNewLayer == null)
+			panelNewLayer = new NewLayerPanel(lyr);
+		return panelNewLayer;
+	}
+	
+	/**
+	 * Poner los estados de los RadioButton en caso de que cambien de valor
+	 * @param evt
+	 */
+	private void jRBNewLayerStateChanged(ItemEvent evt) {
+		if (getRadioNewLayer().getSelectedObjects() != null) {
+			getPanelNewLayer().getRadioFileGenerate().setEnabled(true);
+			getPanelNewLayer().getRadioOpenMemory().setEnabled(true);
+			if (getPanelNewLayer().getRadioOpenMemory().getSelectedObjects() != null)
+				getPanelNewLayer().setFilenameEnabled(true);
+			else
+				getPanelNewLayer().setFilenameEnabled(false);
+		} else {
+			getPanelNewLayer().getRadioFileGenerate().setEnabled(false);
+			getPanelNewLayer().getRadioOpenMemory().setEnabled(false);
+			getPanelNewLayer().setFilenameEnabled(false);
+		}
+	}
+
+	/**
+	 * Especifica si se generara solo en la vista o se guardara en un fichero
+	 * @param enabled
+	 */
+	public void setOnlyView(boolean enabled) {
+		getRadioOnlyView().setSelected(enabled);
+	}
+
+	/**
+	 * Devuelve el JRadioButton de Solo vista
+	 * @return
+	 */
+	private JRadioButton getRadioOnlyView() {
+		if (jRBOnlyView == null) {
+			jRBOnlyView = new JRadioButton();
+			jRBOnlyView.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+			jRBOnlyView.setMargin(new Insets(0, 0, 0, 0));
+		}
+		return jRBOnlyView;
+	}
+	
+	/**
+	 * Devuelve el JRadioButton de nueva capa
+	 * @return
+	 */
+	private JRadioButton getRadioNewLayer() {
+		if (jRBNewLayer == null) {
+			jRBNewLayer = new JRadioButton();
+			jRBNewLayer.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+			jRBNewLayer.setMargin(new Insets(0, 0, 0, 0));
+			jRBNewLayer.addItemListener(new ItemListener() {
+				public void itemStateChanged(ItemEvent evt) {
+					jRBNewLayerStateChanged(evt);
+				}
+			});
+			jRBNewLayer.setSelected(true);
+		}
+		return jRBNewLayer;
+	}
+	
+	/**
+	 * This method initializes jPNameFile
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public JPanel getFileNamePanel() {
+		return getPanelNewLayer().getFileNamePanel();
+	}
+	
+	/**
+	 * Establece el texto de la etiqueta del nombre de fichero
+	 * @param text
+	 */
+	public void setLabelFilename(String text) {
+		getPanelNewLayer().setLabelFilename(text);
+	}
+	
+	public boolean isNewLayerSelected() {
+		return getRadioNewLayer().isSelected();
+	}
+
+	public boolean isOnlyViewSelected() {
+		return getRadioOnlyView().isSelected();
+	}
+	
+	/**
+	 * Asigna un valor para el parámetro que informa de si el raster de salida hay
+	 * que comprimirlo o no. Este valor es necesario cuando el raster de salida 
+	 * es mayor de 4G ya que no se puede crear un tiff tan grande.
+	 * @param compress true para comprimir el raster de salida y false para no hacerlo.
+	 */
+	public void setCompress(boolean compress) {
+		getPanelNewLayer().setCompress(compress);
+	}
+	
+	/**
+	 * Devuelve la ruta del fichero donde se va a guardar, en caso de guardarse
+	 * en memoria, calcula el nombre sin preguntar y devuelve la ruta.
+	 * @return
+	 */
+	public String getFileSelected() {
+		return getPanelNewLayer().getFileSelected();
+	}
+	
+	public void updateNewLayerText() {
+		getPanelNewLayer().updateNewLayerText();
+	}
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/SelectDirectoryPanel.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/SelectDirectoryPanel.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/SelectDirectoryPanel.java	(revision 2861)
@@ -0,0 +1,155 @@
+/* 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.raster.mainplugin.beans.createlayer;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.gui.beans.swing.JFileChooser;
+
+
+/**
+ * Panel para la selección de directorios.
+ * 
+ * 13/05/2008
+ * @author Nacho Brodin nachobrodin@gmail.com
+ */
+public class SelectDirectoryPanel extends JPanel implements ActionListener {
+	private static final long  serialVersionUID     = 1L;
+	private JTextField         directoryTextField   = null;
+	private JLabel             jLabelDirectory      = null;
+	private JButton            jBChooseDirectory    = null;
+	private ActionListener     listener             = null;
+	
+	/**
+	 * Constructor. 
+	 * Inicializa los componentes gráficos
+	 */
+	public SelectDirectoryPanel() {
+		init();
+	}
+	
+	/**
+	 * This method initializes jPNameFile
+	 * @return javax.swing.JPanel
+	 */
+	private void init() {
+		GridBagConstraints gridBagConstraints = null;
+
+		setLayout(new GridBagLayout());
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.insets = new Insets(2, 5, 5, 2);
+		add(getJLabelDirectory(), gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		gridBagConstraints.insets = new java.awt.Insets(2, 2, 5, 2);
+		add(getDirectoryTextField(), gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.insets = new java.awt.Insets(2, 2, 5, 5);
+		add(getJBChooseDirectory(), gridBagConstraints);
+
+		getJBChooseDirectory().addActionListener(this);
+	}
+	
+	public void setListener(ActionListener listener) {
+		this.listener = listener;
+	}
+	
+	/**
+	 * Obtiene el botón de asignación de directorio
+	 * @return JButton
+	 */
+	public JButton getJBChooseDirectory() {
+		if (jBChooseDirectory == null) {
+			jBChooseDirectory = new JButton(PluginServices.getText(this, "cambiar_ruta"));
+			jBChooseDirectory.setEnabled(false);
+		}
+		return jBChooseDirectory;
+	}
+	
+	/**
+	 * Obtiene la etiqueta con la ruta
+	 * @return JLabel
+	 */
+	public JLabel getJLabelDirectory() {
+		if (jLabelDirectory == null) {
+			jLabelDirectory = new JLabel(PluginServices.getText(this, "ruta") + ":");
+			jLabelDirectory.setEnabled(false);
+		}
+		return jLabelDirectory;
+	}
+	
+	/**
+	 * Obtiene el campo de texto con la ruta de directorio
+	 * @return JTextField
+	 */
+	public JTextField getDirectoryTextField() {
+		if (directoryTextField  == null) {
+			directoryTextField = new JTextField();
+			directoryTextField.setText(JFileChooser.getLastPath(this.getClass().getName(), (File) null).toString());
+			directoryTextField.setEditable(false);
+			directoryTextField.setEnabled(false);
+			directoryTextField.setPreferredSize(new Dimension(200, directoryTextField.getPreferredSize().height));
+		}
+		return directoryTextField;
+	}
+	
+	/**
+	 * Accion que sucede cuando se pulsa el boton de cambiar directorio
+	 */
+	public void actionPerformed(ActionEvent e) {
+		JFileChooser chooser = new JFileChooser(this.getClass().getName(), new File(getDirectoryTextField().getText()));
+		chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+		chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_directorio"));
+
+		if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
+			getDirectoryTextField().setText(chooser.getSelectedFile().toString());
+		else
+			chooser.setLastPath(new File(getDirectoryTextField().getText()));
+		
+		if(listener != null)
+			listener.actionPerformed(new ActionEvent(this, 0, getPath()));
+	}
+	
+	/**
+	 * Obtiene la ruta al directorio.
+	 * @return String
+	 */
+	public String getPath() {
+		return getDirectoryTextField().getText();
+	}
+}
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/WritableFolderPanel.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/WritableFolderPanel.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/WritableFolderPanel.java	(revision 2861)
@@ -0,0 +1,146 @@
+package org.gvsig.raster.mainplugin.beans.createlayer;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+
+import org.cresques.Messages;
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.andami.ui.mdiManager.WindowInfo;
+import org.gvsig.raster.mainplugin.RasterMainPluginUtils;
+import org.gvsig.raster.mainplugin.beans.createlayer.SelectDirectoryPanel;
+import org.gvsig.raster.swing.basepanel.AbstractButtonsPanel;
+import org.gvsig.raster.swing.basepanel.IButtonsPanel;
+
+/**
+ * Panel to select a writable folder
+ * 
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class WritableFolderPanel extends AbstractButtonsPanel implements ActionListener, IWindow {
+	private static final long           serialVersionUID       = 1L;
+	private SelectDirectoryPanel        selectDirectoryPanel   = null;
+	private JCheckBox                   allFiles               = null;
+	private Point                       posWindow              = null;
+	private int                         widthWindow            = 320;
+	private int                         heightWindow           = 140;
+	private String                      defaultFolder          = null;
+	private String                      layerName              = null;
+	private ActionListener              listener               = null;
+	
+	public WritableFolderPanel(String defaultFolder, ActionListener listener, String layerName) {
+		this.defaultFolder = defaultFolder;
+		this.layerName = layerName;
+		setListener(listener);
+		posWindow = RasterMainPluginUtils.iwindowPosition(widthWindow, heightWindow);
+		initGUI();
+		PluginServices.getMDIManager().addWindow(this);
+	}
+	
+	private void initGUI() {
+		JButton accept = getButtonsPanel().getButton(IButtonsPanel.BUTTON_ACCEPT);
+		JButton cancel = getButtonsPanel().getButton(IButtonsPanel.BUTTON_CANCEL);
+		getButtonsPanel().getButton(IButtonsPanel.BUTTON_APPLY).setVisible(false);
+		accept.setEnabled(false);
+		accept.addActionListener(this);
+		cancel.addActionListener(this);
+		
+		this.setLayout(new GridBagLayout());
+		GridBagConstraints gbc = new GridBagConstraints();
+		gbc.fill = GridBagConstraints.HORIZONTAL;
+		gbc.weightx = 1;
+		JLabel label = new JLabel();
+		label.setText("<html><p>" + Messages.getText("folder_not_writable") + "</p></html>");
+		
+		gbc.gridy = 0;
+		this.add(new JLabel("<html><p>" + layerName + "</p><BR></html>"), gbc);
+		
+		gbc.gridy = 1;
+		this.add(label, gbc);
+		
+		gbc.gridy = 2;
+		this.add(getSelectDirectoryPanel(), gbc);
+		
+		gbc.gridy = 3;
+		this.add(getCheckOption(), gbc);
+		
+		getSelectDirectoryPanel().setListener(this);
+	}
+	
+	public boolean aplyAllFiles() {
+		return getCheckOption().isSelected();
+	}
+	
+	public JCheckBox getCheckOption() {
+		if (allFiles == null)
+			allFiles = new JCheckBox(Messages.getText("apply_all"));
+		return allFiles;
+	}
+	
+	public SelectDirectoryPanel getSelectDirectoryPanel() {
+		if(selectDirectoryPanel == null) {
+			selectDirectoryPanel = new SelectDirectoryPanel();
+			selectDirectoryPanel.getJLabelDirectory().setVisible(false);
+			selectDirectoryPanel.getJBChooseDirectory().setEnabled(true);
+			selectDirectoryPanel.getDirectoryTextField().setText(defaultFolder);
+		}
+		return selectDirectoryPanel;
+	}
+	
+	public void setListener(ActionListener listener) {
+		this.listener = listener;
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if(e.getSource() == getButtonsPanel().getButton(IButtonsPanel.BUTTON_ACCEPT)) {
+			if(listener != null)
+				listener.actionPerformed(new ActionEvent(getButtonsPanel().getButton(IButtonsPanel.BUTTON_ACCEPT), IButtonsPanel.BUTTON_ACCEPT, ""));
+			PluginServices.getMDIManager().closeWindow(this);
+		}
+		
+		if(e.getSource() == getButtonsPanel().getButton(IButtonsPanel.BUTTON_CANCEL)) {
+			if(listener != null)
+				listener.actionPerformed(new ActionEvent(getButtonsPanel().getButton(IButtonsPanel.BUTTON_CANCEL), IButtonsPanel.BUTTON_CANCEL, ""));
+			PluginServices.getMDIManager().closeWindow(this);
+		}
+		
+		if(e.getSource() == getSelectDirectoryPanel()) {
+			File f = new File(getSelectDirectoryPanel().getPath());
+			if(f.exists() && f.isDirectory() && f.canWrite()) {
+				getButtonsPanel().getButton(IButtonsPanel.BUTTON_ACCEPT).setEnabled(true);
+				if(listener != null)
+					listener.actionPerformed(new ActionEvent(getChangeFolderButton(), 0, getSelectDirectoryPanel().getPath()));
+			} else {
+				getButtonsPanel().getButton(IButtonsPanel.BUTTON_ACCEPT).setEnabled(false);
+			}
+		}
+	}
+	
+	public JButton getChangeFolderButton() {
+		return getSelectDirectoryPanel().getJBChooseDirectory();
+	}
+	
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+		m_viewinfo.setTitle(Messages.getText("warning"));
+		m_viewinfo.setHeight(heightWindow);
+		m_viewinfo.setWidth(widthWindow);
+		if (posWindow != null) {
+			m_viewinfo.setX((int) posWindow.getX());
+			m_viewinfo.setY((int) posWindow.getY());
+		}
+		return m_viewinfo;
+	}
+	
+	public Object getWindowProfile() {
+		return WindowInfo.DIALOG_PROFILE;
+	}
+}
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/NewLayerPanel.java
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/NewLayerPanel.java	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/src/main/java/org/gvsig/raster/mainplugin/beans/createlayer/NewLayerPanel.java	(revision 2861)
@@ -0,0 +1,312 @@
+/* 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.raster.mainplugin.beans.createlayer;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+import java.util.ArrayList;
+
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+import javax.swing.filechooser.FileFilter;
+
+import org.gvsig.andami.PluginServices;
+import org.gvsig.andami.Utilities;
+import org.gvsig.andami.ui.mdiManager.IWindow;
+import org.gvsig.fmap.dal.coverage.RasterLocator;
+import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
+import org.gvsig.fmap.dal.coverage.util.FileUtils;
+import org.gvsig.fmap.dal.coverage.util.PropertyEvent;
+import org.gvsig.fmap.dal.coverage.util.PropertyListener;
+import org.gvsig.gui.beans.swing.JFileChooser;
+import org.gvsig.raster.fmap.layers.FLyrRaster;
+import org.gvsig.raster.swing.RasterSwingLibrary;
+import org.gvsig.raster.util.ExtendedFileFilter;
+
+/**
+ *
+ * @version 18/06/2008
+ * @author BorSanZa - Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ */
+public class NewLayerPanel implements PropertyListener {
+	private JPanel       panel              = null;
+	private JRadioButton jRBFileGenerate    = null;
+	private JRadioButton jRBOpenMemory      = null;
+	private JTextField   filenameTextField  = null;
+	private JLabel       labelFilename      = null;
+	private JPanel       panelNameFile      = null;
+	private boolean      compress           = false;
+	private FLyrRaster   lyr                = null;
+	protected FileUtils  fileUtil           = RasterLocator.getManager().getFileUtils();
+	
+	/**
+	 * Constructor de un CreateLayerPanel
+	 */
+	public NewLayerPanel(FLyrRaster lyr) {
+		this.lyr = lyr;
+		initialize();
+		translate();
+	}
+
+	/**
+	 * Devuelve el panel principal
+	 * @return
+	 */
+	public JPanel getJPanel() {
+		if (panel == null) {
+			panel = new JPanel();
+		}
+		return panel;
+	}
+
+	private void initialize() {
+		ButtonGroup buttonGroup2;
+		GridBagConstraints gridBagConstraints;
+
+		getJPanel().setLayout(new GridBagLayout());
+
+		getJPanel().setBorder(BorderFactory.createTitledBorder(""));
+		buttonGroup2 = new ButtonGroup();
+		buttonGroup2.add(getRadioFileGenerate());
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(3, 3, 3, 3);
+		gridBagConstraints.weightx = 1.0;
+		getJPanel().add(getRadioFileGenerate(), gridBagConstraints);
+
+		buttonGroup2.add(getRadioOpenMemory());
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(3, 3, 3, 3);
+		getJPanel().add(getRadioOpenMemory(), gridBagConstraints);
+	}
+
+	/**
+	 * Seccion donde irán todas las traducciones invariables del componente
+	 */
+	private void translate() {
+		getRadioFileGenerate().setText(PluginServices.getText(this, "generar_fichero"));
+		getRadioOpenMemory().setText(PluginServices.getText(this, "abrir_memoria"));
+		getLabelFilename().setText(PluginServices.getText(this, "nombre_capa") + ":");
+	}
+
+	/**
+	 * Devuelve el JRadioButton de generar fichero
+	 * @return
+	 */
+	public JRadioButton getRadioFileGenerate() {
+		if (jRBFileGenerate == null) {
+			jRBFileGenerate = new JRadioButton();
+			jRBFileGenerate.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+			jRBFileGenerate.setMargin(new Insets(0, 0, 0, 0));
+		}
+		return jRBFileGenerate;
+	}
+
+	/**
+	 * Devuelve el JRadioButton de Abrir en memoria
+	 * @return
+	 */
+	public JRadioButton getRadioOpenMemory() {
+		if (jRBOpenMemory == null) {
+			jRBOpenMemory = new JRadioButton();
+			jRBOpenMemory.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
+			jRBOpenMemory.setMargin(new Insets(0, 0, 0, 0));
+
+			jRBOpenMemory.addItemListener(new ItemListener() {
+				public void itemStateChanged(ItemEvent evt) {
+					jRBOpenMemoryStateChanged(evt);
+				}
+			});
+			jRBOpenMemory.setSelected(true);
+		}
+		return jRBOpenMemory;
+	}
+
+	/**
+	 * This method initializes filenameTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	private JTextField getFilenameTextField() {
+		if (filenameTextField == null) {
+			filenameTextField = new JTextField();
+			filenameTextField.setPreferredSize(new Dimension(150, filenameTextField.getPreferredSize().height));
+			fileUtil.addOnlyLayerNameListener(this);
+		}
+		return filenameTextField;
+	}
+
+	/**
+	 * This method initializes jPNameFile
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public JPanel getFileNamePanel() {
+		if (panelNameFile == null) {
+			panelNameFile = new JPanel();
+			panelNameFile.add(getLabelFilename());
+			panelNameFile.add(getFilenameTextField());
+			updateNewLayerText();
+		}
+		return panelNameFile;
+	}
+
+	private JLabel getLabelFilename() {
+		if (labelFilename == null) {
+			labelFilename = new JLabel();
+		}
+		return labelFilename;
+	}
+
+	/**
+	 * Establece si esta habilitado o no el cuadro de texto de entrada de nombre de
+	 * fichero
+	 * @param value
+	 */
+	public void setFilenameEnabled(boolean value) {
+		getFilenameTextField().setEnabled(value);
+		getLabelFilename().setEnabled(value);
+	}
+
+	/**
+	 * Poner los estados de los RadioButton en caso de que cambien de valor
+	 * @param evt
+	 */
+	protected void jRBOpenMemoryStateChanged(ItemEvent evt) {
+		if (getRadioOpenMemory().getSelectedObjects() != null) {
+			setFilenameEnabled(true);
+		} else {
+			setFilenameEnabled(false);
+		}
+	}
+
+	/**
+	 * Especificar el nombre de la nueva capa para el recuadro de texto asignando
+	 * en cada llamada un nombre consecutivo.
+	 */
+	public void updateNewLayerText() {
+		getFilenameTextField().setText(fileUtil.getOnlyLayerName());
+	}
+
+	/**
+	 * Establece el texto de la etiqueta del nombre de fichero
+	 * @param text
+	 */
+	public void setLabelFilename(String text) {
+		getLabelFilename().setText(text);
+	}
+
+	/**
+	 * Asigna un valor para el parámetro que informa de si el raster de salida hay
+	 * que comprimirlo o no. Este valor es necesario cuando el raster de salida
+	 * es mayor de 4G ya que no se puede crear un tiff tan grande.
+	 * @param compress true para comprimir el raster de salida y false para no hacerlo.
+	 */
+	public void setCompress(boolean compress) {
+		this.compress = compress;
+	}
+
+	/**
+	 * Devuelve la ruta del fichero donde se va a guardar, en caso de guardarse
+	 * en memoria, calcula el nombre sin preguntar y devuelve la ruta.
+	 * @return
+	 */
+	public String getFileSelected() {
+		String path = "";
+		if (getRadioFileGenerate().isSelected()) {
+			JFileChooser chooser = new JFileChooser("NEW_LAYER_RASTER_PANEL", JFileChooser.getLastPath("NEW_LAYER_RASTER_PANEL", null));
+			chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero"));
+
+			// Añadimos las extensiones que hayan sido registradas en el driver
+			ArrayList<String> extList = new ArrayList<String>();
+			try {
+				extList = RasterLocator.getManager().getProviderServices().getExtensionsSupported(
+							lyr.getDataStore().getDataType()[0], 
+							lyr.getDataStore().getBandCount());
+			} catch (RasterDriverException e2) {
+				RasterSwingLibrary.messageBoxError("error_extensiones_soportadas", chooser, e2);
+				return null;
+			}
+
+			FileFilter selected = null;
+			for (int i = 0; i < extList.size(); i++) {
+				FileFilter filter = new ExtendedFileFilter((String) extList.get(i));
+				if (extList.get(i).equals("tif")) {
+					selected = filter;
+				}
+				chooser.addChoosableFileFilter(filter);
+			}
+			if (selected != null)
+				chooser.setFileFilter(selected);
+
+			// Cargamos el panel de propiedades en el selector
+			chooser.setAcceptAllFileFilterUsed(false);
+
+			IWindow w = PluginServices.getMDIManager().getActiveWindow();
+
+			if (!(w instanceof Component))
+				w = null;
+
+ 			if (chooser.showSaveDialog((Component) w) != JFileChooser.APPROVE_OPTION)
+ 				return null;
+
+			JFileChooser.setLastPath("NEW_LAYER_RASTER_PANEL", chooser.getSelectedFile());
+
+			ExtendedFileFilter fileFilter = (ExtendedFileFilter) chooser.getFileFilter();
+			path = fileFilter.getNormalizedFilename(chooser.getSelectedFile());
+		} else {
+
+			String file = getFilenameTextField().getText();
+			if (file.compareTo(fileUtil.getOnlyLayerName()) == 0)
+				fileUtil.usesOnlyLayerName();
+
+			if (!compress)
+				path = Utilities.createTempDirectory() + File.separator + file + ".tif";
+			else
+				path = Utilities.createTempDirectory() + File.separator + file + ".jp2";
+			updateNewLayerText();
+		}
+		return path;
+	}
+
+	/**
+	 * Cuando alguien ha cambiado la propiedad del nombre de la
+	 * capa se actualiza automáticamente
+	 */
+	public void actionValueChanged(PropertyEvent e) {
+		updateNewLayerText();
+	}
+
+}
\ No newline at end of file
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common/pom.xml	(revision 2861)
@@ -0,0 +1,157 @@
+<?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.raster.app.common</artifactId>
+    <packaging>jar</packaging>
+    <name>Raster base support</name>
+    <description>Basic libraries for raster support</description>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.raster</artifactId>
+        <version>2.2.4-SNAPSHOT</version>
+    </parent>
+    <dependencies>
+         <dependency>
+             <groupId>org.gvsig</groupId>
+             <artifactId>org.gvsig.about.api</artifactId>
+             <scope>compile</scope>
+        </dependency>
+    	<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.cache.lib.api</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.cache.lib.impl</artifactId>
+            <scope>runtime</scope>
+		</dependency>
+		<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.app.mainplugin</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.lib.api</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.lib.impl</artifactId>
+            <scope>compile</scope>
+		</dependency>
+		 <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.raster.fmap</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.control</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.utils</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.ui</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.timesupport.lib.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.timesupport.lib.impl</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+       	<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.swing.api</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.swing.impl</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.raster.algorithm</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+		
+		<dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.projection.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+         <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.compat.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.compat.se</artifactId>
+            <scope>compile</scope>
+        </dependency>
+		<dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.mapcontext.impl</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.mapcontext.operation</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+	        <groupId>org.gvsig</groupId>
+	        <artifactId>org.gvsig.jpotrace</artifactId>
+	        <scope>compile</scope>
+	    </dependency>
+    </dependencies>
+
+</project>

Property changes on: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.common
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/pom.xml	(revision 0)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.app/pom.xml	(revision 2861)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.gvsig.raster.app</artifactId>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+  <description>Basic libraries for raster support</description>
+  <parent>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.raster</artifactId>
+      <version>2.2.4-SNAPSHOT</version>
+  </parent>
+  
+  <properties>
+    <svn.tags.folder>http://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/tags/</svn.tags.folder>
+    
+    <gvsig.package.info.state>testing</gvsig.package.info.state>
+    <gvsig.package.info.official>true</gvsig.package.info.official>
+    <gvsig.package.info.operatingSystem>all</gvsig.package.info.operatingSystem>
+    <gvsig.package.info.architecture>all</gvsig.package.info.architecture>
+    <gvsig.package.info.categories />
+    <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/Raster/pool/</gvsig.package.info.poolURL>
+    <gvsig.package.info.dependencies></gvsig.package.info.dependencies>
+    <gvsig.package.info.code>${project.parent.artifactId}</gvsig.package.info.code>
+    <gvsig.package.info.codealias></gvsig.package.info.codealias>
+    <gvsig.package.info.name>${project.parent.name}</gvsig.package.info.name>
+    <gvsig.package.info.description>${project.parent.description}</gvsig.package.info.description>
+    <gvsig.install.plugin>false</gvsig.install.plugin>    
+  </properties>
+  
+  <dependencyManagement>
+      <dependencies>
+        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.raster.app.common</artifactId>
+          <version>2.2.4-SNAPSHOT</version>
+          <type>zip</type>
+        </dependency>
+      </dependencies>
+  </dependencyManagement>
+  
+  <modules>
+    <module>org.gvsig.raster.app.common</module>
+    <module>org.gvsig.raster.app.lin.x86</module>
+    <module>org.gvsig.raster.app.lin.x86_64</module>
+    <module>org.gvsig.raster.app.win.x86</module>
+    <!--
+    <module>org.gvsig.raster.app.fedora.x86</module>
+    <module>org.gvsig.raster.app.mac_10.5</module>
+    -->
+  </modules>
+
+
+</project>
+
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/pom.xml	(revision 2860)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/pom.xml	(revision 2861)
@@ -64,7 +64,7 @@
         </dependency>
         <dependency>
             <groupId>org.gvsig</groupId>
-            <artifactId>org.gvsig.fmap.geometry.impl</artifactId>
+            <artifactId>org.gvsig.fmap.geometry.generalpath</artifactId>
             <scope>runtime</scope>
         </dependency>
         <dependency>
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.algorithm/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.algorithm/pom.xml	(revision 2860)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.algorithm/pom.xml	(revision 2861)
@@ -102,7 +102,7 @@
         </dependency>
         <dependency>
             <groupId>org.gvsig</groupId>
-            <artifactId>org.gvsig.fmap.geometry.impl</artifactId>
+            <artifactId>org.gvsig.fmap.geometry.generalpath</artifactId>
             <scope>runtime</scope>
         </dependency>
         <dependency>
Index: org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/pom.xml	(revision 2860)
+++ org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/pom.xml	(revision 2861)
@@ -72,7 +72,7 @@
         </dependency>
         <dependency>
             <groupId>org.gvsig</groupId>
-            <artifactId>org.gvsig.fmap.geometry.impl</artifactId>
+            <artifactId>org.gvsig.fmap.geometry.generalpath</artifactId>
             <scope>runtime</scope>
         </dependency>
         <dependency>
Index: org.gvsig.raster/trunk/org.gvsig.raster/pom.xml
===================================================================
--- org.gvsig.raster/trunk/org.gvsig.raster/pom.xml	(revision 2860)
+++ org.gvsig.raster/trunk/org.gvsig.raster/pom.xml	(revision 2861)
@@ -7,60 +7,68 @@
 	<packaging>pom</packaging>
 	<version>2.2.4-SNAPSHOT</version>
 	<name>org.gvsig.raster</name>
-    <description>Raster support library</description>
+  <description>Raster support library</description>
 	<parent>
-      <groupId>org.gvsig</groupId>
-      <artifactId>org.gvsig.desktop</artifactId>
-      <version>2.0.40</version>
-    </parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.desktop</artifactId>
+    <version>2.0.57</version>
+  </parent>
     
-    <properties>
-   		<potrace.version>2.0.0-SNAPSHOT</potrace.version>
-   		<depman.dir>${user.home}/.depman</depman.dir>
+  <properties>
+ 		<potrace.version>2.0.0</potrace.version>
 	</properties>
 
-    <scm>
-        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/trunk/org.gvsig.raster</connection>
-        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/trunk/org.gvsig.raster</developerConnection>
-        <url>https://devel.gvsig.org/redmine/projects/gvsig-raster/repository/show/org.gvsig.raster/trunk/org.gvsig.raster</url>
-    </scm>
+  <scm>
+      <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/trunk/org.gvsig.raster</connection>
+      <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/trunk/org.gvsig.raster</developerConnection>
+      <url>https://devel.gvsig.org/redmine/projects/gvsig-raster/repository/show/org.gvsig.raster/trunk/org.gvsig.raster</url>
+  </scm>
     
-    <repositories>
-      <repository>
-        <id>gvsig-public-http-repository</id>
-        <name>gvSIG maven public HTTP repository</name>
-        <url>http://devel.gvsig.org/m2repo/j2se</url>
-        <releases>
-          <enabled>true</enabled>
-          <updatePolicy>daily</updatePolicy>
-          <checksumPolicy>warn</checksumPolicy>
-        </releases>
-        <snapshots>
-          <enabled>true</enabled>
-          <updatePolicy>daily</updatePolicy>
-          <checksumPolicy>warn</checksumPolicy>
-        </snapshots>
-      </repository>
-    </repositories>
-    
-    <developers>
-        <developer>
-            <id>nbrodin</id>
-            <name>Nacho Brodin</name>
-            <email>nachobrodin@gmail.com</email>
-            <roles>
-                <role>Architect</role>
-                <role>Developer</role>
-            </roles>
-        </developer>
-    </developers>
-    <dependencyManagement>
-    	<dependencies>
+  <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>
+  
+  <developers>
+      <developer>
+          <id>nbrodin</id>
+          <name>Nacho Brodin</name>
+          <email>nachobrodin@gmail.com</email>
+          <roles>
+              <role>Architect</role>
+              <role>Developer</role>
+          </roles>
+      </developer>
+  </developers>
+  <dependencyManagement>
+  	<dependencies>
+    	
+    	<!--
+    	Versions of other gvSIG projects
+    	-->
 			<dependency>
 				<groupId>org.gvsig</groupId>
 				<artifactId>org.gvsig.timesupport.lib.api</artifactId>
 				<version>1.0.0</version>
 			</dependency>
+	    <dependency>
+				<groupId>org.gvsig</groupId>
+				<artifactId>org.gvsig.timesupport.lib.impl</artifactId>
+				<version>1.0.0</version>
+			</dependency>
 			<dependency>
 				<groupId>org.gvsig</groupId>
 				<artifactId>org.gvsig.raster.cache.lib.api</artifactId>
@@ -71,39 +79,31 @@
 				<artifactId>org.gvsig.raster.cache.lib.impl</artifactId>
 				<version>2.2.0</version>
 			</dependency>
-	        <!--<dependency>
-				<groupId>org.gvsig</groupId>
-				<artifactId>org.gvsig.jgdal</artifactId>
-				<version>2.0.4-SNAPSHOT</version>
-			</dependency>
-	        <dependency>
-	            <groupId>org.gvsig</groupId>
-	            <artifactId>org.gvsig.jgdal</artifactId>
-	            <version>2.0.4-SNAPSHOT</version>
-	            <classifier>${native_classifier}</classifier>
-	            <type>tar.gz</type>
-	        </dependency>-->
-	        <dependency>
-				<groupId>org.gvsig</groupId>
-				<artifactId>org.gvsig.timesupport.lib.impl</artifactId>
-				<version>1.0.0</version>
-			</dependency>
 			<dependency>
-            	<groupId>org.gvsig</groupId>
-            	<artifactId>org.gvsig.raster.lib.api</artifactId>
-            	<version>2.2.4-SNAPSHOT</version>
-        	</dependency>
-		    <dependency>
-            	<groupId>org.gvsig</groupId>
-            	<artifactId>org.gvsig.raster.lib.impl</artifactId>
-            	<version>2.2.4-SNAPSHOT</version>
-       		</dependency>
-	        <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.jpotrace</artifactId>
+          <version>${potrace.version}</version>
+      </dependency>
+	        
+    	<!--
+    	Versions of child projects
+    	-->
+			<dependency>
+      	<groupId>org.gvsig</groupId>
+      	<artifactId>org.gvsig.raster.lib.api</artifactId>
+      	<version>2.2.4-SNAPSHOT</version>
+    	</dependency>
+	    <dependency>
+      	<groupId>org.gvsig</groupId>
+      	<artifactId>org.gvsig.raster.lib.impl</artifactId>
+      	<version>2.2.4-SNAPSHOT</version>
+   		</dependency>
+      <dependency>
 				<groupId>org.gvsig</groupId>
 				<artifactId>org.gvsig.raster.swing.api</artifactId>
 				<version>2.2.4-SNAPSHOT</version>
 			</dependency>
-	        <dependency>
+      <dependency>
 				<groupId>org.gvsig</groupId>
 				<artifactId>org.gvsig.raster.swing.impl</artifactId>
 				<version>2.2.4-SNAPSHOT</version>
@@ -113,51 +113,64 @@
 				<artifactId>org.gvsig.raster.fmap</artifactId>
 				<version>2.2.4-SNAPSHOT</version>
 			</dependency>
-		    <dependency>
+      <dependency>
 				<groupId>org.gvsig</groupId>
 				<artifactId>org.gvsig.raster.algorithm</artifactId>
 				<version>2.2.4-SNAPSHOT</version>
 			</dependency>
+      <dependency>
+				<groupId>org.gvsig</groupId>
+				<artifactId>org.gvsig.raster.app.common</artifactId>
+				<version>2.2.4-SNAPSHOT</version>
+			</dependency>
 		
-			<dependency>
-	            <groupId>org.gvsig</groupId>
-	           	 <artifactId>org.gvsig.jpotrace</artifactId>
-	           	 <version>${potrace.version}</version>
-	        </dependency>
-	        <dependency>
-            	<groupId>org.gvsig</groupId>
-            	<artifactId>org.gvsig.jpotrace</artifactId>
-            	<classifier>${native_classifier}</classifier>
-            	<type>tar.gz</type>
-            	<version>${potrace.version}</version>
-        	</dependency>
 		</dependencies>
 	</dependencyManagement>
-    <dependencies>
-        <dependency>
-            <groupId>org.gvsig</groupId>
-            <artifactId>org.gvsig.tools.lib</artifactId>
-            <scope>compile</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-release-plugin</artifactId>
-                <configuration>
-                    <tagBase>https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/tags/</tagBase>
-                    <goals>deploy</goals>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    
+	
+	
+  <dependencies>
+      <dependency>
+          <groupId>org.gvsig</groupId>
+          <artifactId>org.gvsig.tools.lib</artifactId>
+          <scope>compile</scope>
+      </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <configuration>
+              <tagBase>https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster/tags/</tagBase>
+              <goals>deploy</goals>
+          </configuration>
+      </plugin>
+
+      <plugin>
+        <!-- Skip test execution -->
+        <!-- 
+          Ahora mismo bastantes test de raster muestran interface de usuario, 
+          hasta que eso sea corregido desactivo la ejecucion por defecto de los
+          test.
+        -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <skipTests>true</skipTests>
+        </configuration>
+      </plugin>
+
+    </plugins>
+  </build>
+
 	<modules>
 		<module>org.gvsig.raster.lib</module>
 		<module>org.gvsig.raster.swing</module>
-		<module>org.gvsig.raster.mainplugin</module>
+		<module>org.gvsig.raster.app</module>
 		<module>org.gvsig.raster.algorithm</module>
 		<module>org.gvsig.raster.fmap</module>
 	</modules>
+	
 </project>
+
