Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman-atifglrx.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman-atifglrx.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman-atifglrx.xml	(revision 29090)
@@ -0,0 +1,26 @@
+<depman>
+ <dependencies platform="linux">
+   <!-- others platform same configuration -->
+   <dependency>
+     <group>org.openscenegraph</group>
+     <artifact>openscenegraph</artifact>
+     <version>2.2.0</version>
+     <type>dynamic</type>
+   </dependency>
+   <dependency>
+     <group>es.upv.ai2</group>
+     <artifact>osgvp/artifact>
+     <version>2.1.6.5</version>
+     <type>dynamic</type>
+   </dependency>
+   <!-- dependency>
+     <group>jogl</group>
+     <artifact>jogl</artifact>
+     <version>1.1.0</version>
+     <type>dynamic</type>
+   </dependency-->
+ </dependencies>
+</depman>
+
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.number
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.number	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.number	(revision 29090)
@@ -0,0 +1 @@
+build.number=9
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Key3DListener.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Key3DListener.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Key3DListener.java	(revision 29090)
@@ -0,0 +1,64 @@
+package org.gvsig.gvsig3dgui;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import org.gvsig.osgvp.planets.Planet;
+
+public class Key3DListener implements KeyListener {
+
+	private Planet planet;
+
+	public Key3DListener(Planet m_planet) {
+		// TODO Auto-generated constructor stub
+		this.planet = m_planet;
+	}
+
+	public void keyPressed(KeyEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void keyReleased(KeyEvent e) {
+		// TODO Auto-generated method stub
+
+		if (e.getKeyCode() == KeyEvent.VK_0) {
+			this.planet.setEnabledTextureLayer(0, !this.planet
+					.getEnabledTextureLayer(0));
+		} else if (e.getKeyCode() == KeyEvent.VK_1) {
+			this.planet.setEnabledTextureLayer(1, !this.planet
+					.getEnabledTextureLayer(1));
+		} else if (e.getKeyCode() == KeyEvent.VK_2) {
+			this.planet.setEnabledTextureLayer(2, !this.planet
+					.getEnabledTextureLayer(2));
+		}else if (e.getKeyCode() == KeyEvent.VK_3) {
+			this.planet.setEnabledTextureLayer(3, !this.planet
+					.getEnabledTextureLayer(3));
+		}else if (e.getKeyCode() == KeyEvent.VK_4) {
+			this.planet.setEnabledTextureLayer(4, !this.planet
+					.getEnabledTextureLayer(4));
+		}else if (e.getKeyCode() == KeyEvent.VK_5) {
+			this.planet.setEnabledTextureLayer(5, !this.planet
+					.getEnabledTextureLayer(5));
+		}else if (e.getKeyCode() == KeyEvent.VK_6) {
+			this.planet.setEnabledTextureLayer(6, !this.planet
+					.getEnabledTextureLayer(6));
+		}else if (e.getKeyCode() == KeyEvent.VK_7) {
+			this.planet.setEnabledTextureLayer(7, !this.planet
+					.getEnabledTextureLayer(7));
+		}else if (e.getKeyCode() == KeyEvent.VK_8) {
+			this.planet.setEnabledTextureLayer(8, !this.planet
+					.getEnabledTextureLayer(8));
+		}else if (e.getKeyCode() == KeyEvent.VK_9) {
+			this.planet.setEnabledTextureLayer(9, !this.planet
+					.getEnabledTextureLayer(9));
+		}
+		
+	}
+
+	public void keyTyped(KeyEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/ProjectionMode.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/ProjectionMode.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/ProjectionMode.java	(revision 29090)
@@ -0,0 +1,91 @@
+package org.gvsig.gvsig3dgui.display;
+
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.planets.CustomTerrainManipulator;
+import org.gvsig.osgvp.planets.PlanetViewer;
+import org.gvsig.osgvp.viewer.OSGViewer;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+
+public class ProjectionMode extends Extension {
+
+	private boolean _perspective = true;
+	private double _fovy = 30.0;
+
+	public void execute(String actionCommand) {
+		// Getting view3D
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+
+		OSGViewer viewer = (OSGViewer) ((View3D) view).getCanvas3d()
+		.getOSGViewer();
+		if (actionCommand.equals("PROJECTION")) {
+
+			NavigationMode nm = ((View3D) view).getNavMode();
+
+			if (!_perspective) {
+				((View3D) view).getCanvas3d().getOSGViewer()
+						.setProjectionMatrixAsPerspective(
+								_fovy,
+								((double) viewer.getWidth())
+										/ ((double) viewer
+												.getHeight()), 1, 10000);
+				_perspective = true;
+				nm.removeAllNavigationModes((CustomTerrainManipulator) viewer.getCameraManipulator());
+				
+
+			} else {
+
+				_fovy = viewer.getCamera().getProjectionMatrixAsPerspective().fovy;
+				
+				((View3D) view)
+						.getCanvas3d()
+						.getOSGViewer()
+						.setProjectionMatrixAsOrtho(
+								20 * (((double) viewer.getCamera()
+										.getProjectionMatrixAsFrustum().left)),
+								20 * (((double) viewer.getCamera()
+										.getProjectionMatrixAsFrustum().right)),
+								20 * (((double)viewer.getCamera()
+										.getProjectionMatrixAsFrustum().bottom)),
+								20 * (((double) viewer.getCamera()
+										.getProjectionMatrixAsFrustum().top)),
+								1, 1000);
+
+				_perspective = false;
+				nm.SetAzimutRollMode();
+
+			}
+		}
+
+	}
+
+	public void initialize() {
+		// Register new icons
+		// zoom to selection
+		PluginServices.getIconTheme().registerDefault(
+				"projection-icon",
+				this.getClass().getClassLoader().getResource(
+						"images/projection.png"));
+
+	}
+
+	public boolean isEnabled() {
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+	public boolean isVisible() {
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenPanel.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenPanel.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenPanel.java	(revision 29090)
@@ -0,0 +1,661 @@
+package org.gvsig.gvsig3dgui.display;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JFileChooser;
+import javax.swing.JFormattedTextField;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.JTextField;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.ViewPort3D;
+import org.gvsig.gvsig3d.map3d.layers.FLayers3D;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.CameraHUD;
+import org.gvsig.osgvp.Group;
+import org.gvsig.osgvp.Matrix;
+import org.gvsig.osgvp.Node;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.Vec4;
+import org.gvsig.osgvp.exceptions.node.ChildIndexOutOfBoundsExceptions;
+import org.gvsig.osgvp.exceptions.node.NodeException;
+import org.gvsig.osgvp.features.Polygon;
+import org.gvsig.osgvp.planets.CustomTerrainManipulator;
+import org.gvsig.osgvp.planets.Planet;
+import org.gvsig.osgvp.planets.PlanetViewer;
+import org.gvsig.osgvp.planets.exceptions.PlanetExtentException;
+import org.gvsig.osgvp.stereoconfig.StereoConfig;
+import org.gvsig.osgvp.viewer.Camera;
+import org.gvsig.osgvp.viewer.DisplaySettings;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.IWindowListener;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.ViewPort;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.utiles.console.jedit.PropsTokenMarker;
+
+public class FullScreenPanel extends GridBagLayoutPanel implements IWindow,
+		ChangeListener, IWindowListener {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7918162328474597496L;
+
+	private WindowInfo m_viewinfo;
+
+	private int width = 700;
+
+	private int height = 330;
+
+	private View3D view3D;
+
+	private JPanel jPanel1;
+
+	private JButton jButton2;
+
+	private JButton jButton1;
+
+	private JLabel jLabel2;
+
+	private JTextField jTextField1;
+
+	private JButton jButton3;
+
+	private JCheckBox jCheckBox1;
+
+	private PlanetViewer _fullScreenViewer;
+
+	private DisplaySettings _ds;
+
+	private JCheckBox jCheckBox2;
+
+	private JCheckBox jCheckBox3;
+
+	private javax.swing.JSpinner jSpinner1;
+	private javax.swing.JSpinner jSpinner2;
+	private javax.swing.JSpinner jSpinner3;
+	private javax.swing.JSpinner jSpinner4;
+	private javax.swing.JSpinner jSpinner5;
+
+	private JLabel jLabel4;
+	private JLabel jLabel3;
+
+	public FullScreenPanel() {
+
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D) {
+			view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
+			initialize();
+		}
+
+		else
+			PluginServices.getMDIManager().closeWindow(this);
+
+	}
+
+	public Object getWindowModel() {
+		return view3D;
+	}
+
+	public void initialize() {
+
+		java.awt.GridBagConstraints gridBagConstraints;
+
+		jPanel1 = new javax.swing.JPanel();
+		jButton2 = new javax.swing.JButton();
+		jButton1 = new javax.swing.JButton();
+		jLabel2 = new javax.swing.JLabel();
+		jLabel3 = new javax.swing.JLabel();
+		jLabel4 = new javax.swing.JLabel();
+		jTextField1 = new javax.swing.JTextField();
+		jButton3 = new javax.swing.JButton();
+		jCheckBox1 = new javax.swing.JCheckBox();
+		jCheckBox2 = new javax.swing.JCheckBox();
+		jCheckBox3 = new javax.swing.JCheckBox();
+		jSpinner1 = new javax.swing.JSpinner();
+		jSpinner2 = new javax.swing.JSpinner();
+		jSpinner3 = new javax.swing.JSpinner();
+		jSpinner4 = new javax.swing.JSpinner();
+		jSpinner5 = new javax.swing.JSpinner();
+
+		setLayout(new java.awt.GridBagLayout());
+
+		jPanel1.setLayout(new java.awt.GridBagLayout());
+
+		jButton2.setText("Cancelar");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 7;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
+		jButton2.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent evt) {
+				jButton2ActionPerformed(evt);
+			}
+		});
+		jPanel1.add(jButton2, gridBagConstraints);
+
+		jButton1.setText("Aceptar");
+		jButton1.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent evt) {
+				jButton1ActionPerformed(evt);
+			}
+		});
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 2;
+		gridBagConstraints.gridy = 7;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
+		jPanel1.add(jButton1, gridBagConstraints);
+
+		jLabel2.setText("Archivo de Configuracion");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 21);
+		jPanel1.add(jLabel2, gridBagConstraints);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		jPanel1.add(jTextField1, gridBagConstraints);
+
+		jButton3.setText("Browse");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		jButton3.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent evt) {
+				jButton3ActionPerformed(evt);
+			}
+		});
+		jPanel1.add(jButton3, gridBagConstraints);
+
+		jCheckBox1.setText("Sincronizar camaras");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
+		jPanel1.add(jCheckBox1, gridBagConstraints);
+		jCheckBox1.setSelected(false);
+
+		jCheckBox2.setText("Elegir Pantalla");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 3;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
+		jPanel1.add(jCheckBox2, gridBagConstraints);
+
+		jCheckBox2.addItemListener(new ItemListener() {
+
+			public void itemStateChanged(ItemEvent e) {
+				jCheckBox1ItemSelected(e);
+			}
+
+		});
+
+		jCheckBox3.setText("Modo Ventana");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 4;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 0);
+		jPanel1.add(jCheckBox3, gridBagConstraints);
+
+		jCheckBox3.addItemListener(new ItemListener() {
+
+			public void itemStateChanged(ItemEvent e) {
+				jCheckBox3ItemSelected(e);
+			}
+
+		});
+
+		int min = 0;
+		int max = 20;
+		int step = 1;
+		int initValue = 0;
+		SpinnerNumberModel model = new SpinnerNumberModel(initValue, min, max,
+				step);
+
+		jSpinner1 = new JSpinner(model);
+		JFormattedTextField tf = ((JSpinner.DefaultEditor) jSpinner1
+				.getEditor()).getTextField();
+		tf.setEditable(false);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 3;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jSpinner1.setEnabled(false);
+		jPanel1.add(jSpinner1, gridBagConstraints);
+
+		min = 0;
+		max = 10000;
+		step = 1;
+		initValue = 0;
+		SpinnerNumberModel model2 = new SpinnerNumberModel(initValue, min, max,
+				step);
+
+		jLabel3.setText("Posicion Origen");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 5;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		jPanel1.add(jLabel3, gridBagConstraints);
+
+		jSpinner2 = new JSpinner(model2);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 5;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jSpinner2.setEnabled(false);
+		jPanel1.add(jSpinner2, gridBagConstraints);
+
+		min = 0;
+		max = 10000;
+		step = 1;
+		initValue = 0;
+		SpinnerNumberModel model3 = new SpinnerNumberModel(initValue, min, max,
+				step);
+
+		jSpinner3 = new JSpinner(model3);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 2;
+		gridBagConstraints.gridy = 5;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jSpinner3.setEnabled(false);
+		jPanel1.add(jSpinner3, gridBagConstraints);
+
+		jLabel4.setText("Resolucion");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 6;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		jPanel1.add(jLabel4, gridBagConstraints);
+
+		min = 0;
+		max = 10000;
+		step = 1;
+		initValue = 0;
+		SpinnerNumberModel model4 = new SpinnerNumberModel(initValue, min, max,
+				step);
+
+		jSpinner4 = new JSpinner(model4);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 6;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jSpinner4.setEnabled(false);
+		jSpinner4.setValue((int) 800);
+		jPanel1.add(jSpinner4, gridBagConstraints);
+
+		min = 0;
+		max = 10000;
+		step = 1;
+		initValue = 0;
+		SpinnerNumberModel model5 = new SpinnerNumberModel(initValue, min, max,
+				step);
+
+		jSpinner5 = new JSpinner(model5);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 2;
+		gridBagConstraints.gridy = 6;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jSpinner5.setEnabled(false);
+		jSpinner5.setValue((int) 600);
+		jPanel1.add(jSpinner5, gridBagConstraints);
+
+		add(jPanel1, new java.awt.GridBagConstraints());
+
+	}
+
+	protected void jCheckBox3ItemSelected(ItemEvent e) {
+
+		if (e.getStateChange() == ItemEvent.SELECTED) {
+			jSpinner2.setEnabled(true);
+			jSpinner3.setEnabled(true);
+			jSpinner4.setEnabled(true);
+			jSpinner5.setEnabled(true);
+		} else {
+			jSpinner2.setEnabled(false);
+			jSpinner3.setEnabled(false);
+			jSpinner4.setEnabled(false);
+			jSpinner5.setEnabled(false);
+		}
+
+	}
+
+	protected void jCheckBox1ItemSelected(ItemEvent e) {
+
+		if (e.getStateChange() == ItemEvent.SELECTED)
+			jSpinner1.setEnabled(true);
+		else
+			jSpinner1.setEnabled(false);
+
+	}
+
+	protected void jButton3ActionPerformed(ActionEvent evt) {
+		JFileChooser jFileChooser1 = new JFileChooser();
+		int returnVal = jFileChooser1.showOpenDialog(this);
+
+		if (returnVal == JFileChooser.APPROVE_OPTION)
+			jTextField1.setText(jFileChooser1.getSelectedFile()
+					.getAbsolutePath());
+
+	}
+
+	protected void jButton1ActionPerformed(ActionEvent evt) {
+
+		view3D = (View3D) PluginServices.getMDIManager()
+		.getActiveWindow();
+		PluginServices.getMDIManager().closeWindow(this);
+		new Thread(new Runnable() {
+
+			public void run() {
+				_ds = view3D.getDisplaySettings();	
+				//Polygon p = null;
+				boolean synchronize = jCheckBox1.isSelected();
+				boolean changedManipulator = false;
+				Planet planet = null;
+
+				if (!jTextField1.getText().equals("")) {
+
+					runMStereo();
+					return;
+
+				}
+
+				try {
+					Planet planetView3D = ((PlanetViewer) view3D.getCanvas3d().getOSGViewer())
+					.getPlanet(0);
+					planet = new Planet();
+					planet.setWaitElevationData(true);
+					planet.setCoordinateSystemType(planetView3D.getCoordinateSystemType());
+					planet.setCoordinateSystemName(planetView3D.getCoordinateSystemName());
+					planet.setCoordinateSystemFormat(planetView3D.getCoordinateSystemFormat());
+					double extent[] = new double[4];
+					extent[0] = planetView3D.getExtent().getMinX();
+					extent[1] = planetView3D.getExtent().getMinY();
+					extent[2] = planetView3D.getExtent().getMaxX();
+					extent[3] = planetView3D.getExtent().getMaxY();
+					planet.setExtent(extent);
+					planet.setWaitElevationData(true);
+					planet.setPlanetName(planetView3D.getPlanetName());
+					
+					MapContext3D mc = (MapContext3D)view3D.getMapControl().getMapContext();
+					planet.init();
+					mc.addCurrentLayersToPlanet(planet);
+					planet.setRequestLayerListener(mc);
+					
+					_fullScreenViewer = new PlanetViewer();
+					_fullScreenViewer.addPlanet(planet);
+					_fullScreenViewer.addSpecialNode((((PlanetViewer) view3D
+							.getCanvas3d().getOSGViewer()).getSpecialNodes()));
+
+				} catch (ChildIndexOutOfBoundsExceptions e1) {
+
+					e1.printStackTrace();
+				} catch (NodeException e1) {
+
+					e1.printStackTrace();
+				} catch (PlanetExtentException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+				Vec4 color = ((PlanetViewer) view3D.getCanvas3d()
+						.getOSGViewer()).getClearColor();
+				_fullScreenViewer.setClearColor(color.x(), color.y(),
+						color.z(), color.w());
+				_fullScreenViewer.setDisplaySettings(_ds);
+
+				if (view3D.getCanvas3d().getOSGViewer().getCameraManipulator() == null) {
+					((PlanetViewer) (view3D.getCanvas3d().getOSGViewer()))
+							.restoreCustomTerrainManipulator();
+					changedManipulator = true;
+				}
+				Matrix refView = view3D.getCanvas3d().getOSGViewer()
+						.getViewMatrix();
+				System.out.println("refCam view " + refView.toString());
+				Camera viewCam = new Camera();
+				viewCam.setViewMatrix(refView);
+				_fullScreenViewer.setCamera(viewCam);
+
+				if (synchronize)
+					_fullScreenViewer.setCameraManipulator(null);
+
+				if (!jCheckBox3.isSelected()) {
+
+					if (jCheckBox2.isSelected()) {
+						_fullScreenViewer
+								.setUpViewOnSingleScreen(((SpinnerNumberModel) jSpinner1
+										.getModel()).getNumber().intValue());
+					}
+				}
+
+				else {
+
+					if (jCheckBox2.isSelected()) {
+						_fullScreenViewer.setUpViewInWindow(
+								((SpinnerNumberModel) jSpinner2.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner3.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner4.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner5.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner1.getModel())
+										.getNumber().intValue());
+					} else
+						_fullScreenViewer.setUpViewInWindow(
+								((SpinnerNumberModel) jSpinner2.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner3.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner4.getModel())
+										.getNumber().intValue(),
+								((SpinnerNumberModel) jSpinner5.getModel())
+										.getNumber().intValue(), 0);
+
+				}
+
+				while (!_fullScreenViewer.done()) {
+
+					if (synchronize) {
+						_fullScreenViewer.setFusionDistance((float) planet
+								.getZoom());
+						refView = view3D.getCanvas3d().getOSGViewer()
+								.getViewMatrix();
+						viewCam.setViewMatrix(refView);
+						_fullScreenViewer.setCamera(viewCam);
+
+					}
+					_fullScreenViewer.frame();
+
+				}
+				_fullScreenViewer.releaseGLContext();
+				_fullScreenViewer.dispose();
+				_fullScreenViewer = null;
+
+				if (changedManipulator) {
+					((PlanetViewer) (view3D.getCanvas3d().getOSGViewer()))
+							.setCameraManipulator(null);
+				}
+				System.gc();
+
+			}
+		}).start();
+
+	}
+
+	private boolean runMStereo() {
+		Group g = new Group();
+		PlanetViewer viewer;
+		CameraHUD ch = null;
+		Polygon p = null;
+
+		try {
+			Vec4 color = new Vec4(1, 1, 1, 1);
+			p = new Polygon();
+			p.addVertex(new Vec3(0.0, 0.0, 0.0), color);
+			p.addVertex(new Vec3(392.0, 0.0, 0.0), color);
+			p.addVertex(new Vec3(392.0, 82.0, 0.0), color);
+			p.addVertex(new Vec3(0.0, 82.0, 0.0), color);
+			p.setTexture(this.getClass().getClassLoader().getResource(
+					"images/okode-stereotoolbox.png").getPath());
+			p.setEnabledBlending(true);
+
+			ch = new CameraHUD();
+			ch.addChild(p);
+
+		} catch (NodeException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		boolean synchronize = jCheckBox1.isSelected();
+		boolean changedManipulator = false;
+		Planet planet = null;
+		StereoConfig sc = null;
+		try {
+			planet = ((PlanetViewer) view3D.getCanvas3d().getOSGViewer())
+					.getPlanet(0);
+			planet.setWaitElevationData(true);
+			g.addChild(planet);
+			g.addChild(((PlanetViewer) view3D.getCanvas3d().getOSGViewer())
+					.getSpecialNodes());
+			g.addChild(ch);
+
+			viewer = new PlanetViewer();
+
+			File config = new File(jTextField1.getText());
+			sc = new StereoConfig();
+			Node n = sc.pipes2screens1texture(g, viewer, config
+					.getAbsolutePath());
+			viewer.setSceneData(n);
+
+			Vec4 color = ((PlanetViewer) view3D.getCanvas3d().getOSGViewer())
+					.getClearColor();
+			viewer.setClearColor(color.x(), color.y(), color.z(), color.w());
+			viewer.setDisplaySettings(_ds);
+
+			if (view3D.getCanvas3d().getOSGViewer().getCameraManipulator() == null) {
+				((PlanetViewer) (view3D.getCanvas3d().getOSGViewer()))
+						.restoreCustomTerrainManipulator();
+				changedManipulator = true;
+			}
+
+		} catch (Exception e1) {
+
+			e1.printStackTrace();
+			return false;
+		}
+		Matrix refView = view3D.getCanvas3d().getOSGViewer().getViewMatrix();
+		System.out.println("refCam view " + refView.toString());
+		Camera viewCam = new Camera();
+		viewCam.setViewMatrix(refView);
+		viewer.setCamera(viewCam);
+
+		if (synchronize) {
+			viewer.setCameraManipulator(null);
+		} else
+			viewer.setCameraManipulator(new CustomTerrainManipulator());
+		if (!jCheckBox3.isSelected()) {
+
+			viewer.setUpViewOnSingleScreen(((SpinnerNumberModel) jSpinner1
+					.getModel()).getNumber().intValue());
+		}
+
+		else {
+
+			viewer.setUpViewInWindow(0, 0, 800, 600,
+					((SpinnerNumberModel) jSpinner1.getModel()).getNumber()
+							.intValue());
+
+		}
+
+		while (!viewer.done()) {
+			if (synchronize) {
+				viewer.setFusionDistance((float) planet.getZoom());
+				refView = view3D.getCanvas3d().getOSGViewer().getViewMatrix();
+				viewCam.setViewMatrix(refView);
+				viewer.setCamera(viewCam);
+
+			}
+			sc.updateCameras(viewer);
+			viewer.frame();
+		}
+		viewer.releaseGLContext();
+		viewer.dispose();
+		viewer = null;
+
+		planet.setWaitElevationData(false);
+		if (changedManipulator) {
+			((PlanetViewer) (view3D.getCanvas3d().getOSGViewer()))
+					.setCameraManipulator(null);
+		}
+
+		System.gc();
+		return true;
+
+	}
+
+	protected void jButton2ActionPerformed(ActionEvent evt) {
+		PluginServices.getMDIManager().closeWindow(this);
+
+	}
+
+	public WindowInfo getWindowInfo() {
+		m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+		m_viewinfo.setTitle(PluginServices.getText(this, "FullScreen"));
+		m_viewinfo.setHeight(height);
+		m_viewinfo.setWidth(width);
+		return m_viewinfo;
+	}
+
+	public void stateChanged(ChangeEvent e) {
+
+	}
+
+	public void windowActivated() {
+		view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		System.out.println(view3D.getName());
+	}
+
+	public void windowClosed() {
+
+	}
+
+	public Object getWindowProfile() {
+		// TODO Auto-generated method stub
+		return WindowInfo.DIALOG_PROFILE;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayPanel.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayPanel.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayPanel.java	(revision 29090)
@@ -0,0 +1,565 @@
+package org.gvsig.gvsig3dgui.display;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerModel;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.viewer.DisplaySettings;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.IWindowListener;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+
+public class DisplayPanel extends GridBagLayoutPanel implements IWindow,
+		ChangeListener, IWindowListener {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -7937904493499301555L;
+
+	private WindowInfo m_viewinfo;
+
+	private int width = 480;
+
+	private int height = 250;
+
+	private View3D view3D;
+
+	private javax.swing.JButton jButton1;
+	private javax.swing.JButton jButton2;
+	private javax.swing.JComboBox jComboBox1;
+	private javax.swing.JComboBox jComboBox2;
+	private javax.swing.JComboBox jComboBox3;
+	private javax.swing.JLabel jLabel1;
+	private javax.swing.JLabel jLabel2;
+	private javax.swing.JLabel jLabel3;
+	private javax.swing.JLabel jLabel4;
+	private javax.swing.JLabel jLabel5;
+	private javax.swing.JLabel jLabel6;
+	private javax.swing.JPanel jPanel1;
+	private javax.swing.JSpinner jSpinner1;
+	private javax.swing.JSpinner jSpinner2;
+	private javax.swing.JSpinner jSpinner3;
+
+	private DisplaySettings ds;
+
+	public DisplayPanel() {
+
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D) {
+			view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
+			ds = view3D.getDisplaySettings();
+			initialize();
+		}
+
+		else
+			PluginServices.getMDIManager().closeWindow(this);
+
+	}
+
+	public Object getWindowModel() {
+		return view3D;
+	}
+
+	public void initialize() {
+
+		java.awt.GridBagConstraints gridBagConstraints;
+
+		jPanel1 = new javax.swing.JPanel();
+		jComboBox1 = new javax.swing.JComboBox();
+		jComboBox2 = new javax.swing.JComboBox();
+		jButton2 = new javax.swing.JButton();
+		jButton1 = new javax.swing.JButton();
+		jComboBox3 = new javax.swing.JComboBox();
+		jLabel1 = new javax.swing.JLabel();
+		jLabel2 = new javax.swing.JLabel();
+		jLabel3 = new javax.swing.JLabel();
+		jLabel4 = new javax.swing.JLabel();
+		jLabel5 = new javax.swing.JLabel();
+		jLabel6 = new javax.swing.JLabel();
+
+		float min = (float) 0.01;
+		float max = (float) 0.1;
+		float step = (float) 0.005;
+		float initValue = (float) 0.065;
+		SpinnerNumberModel model = new SpinnerNumberModel(initValue, min, max, step);
+
+		jSpinner1 = new JSpinner(model);
+		JFormattedTextField tf = ((JSpinner.DefaultEditor) jSpinner1
+				.getEditor()).getTextField();
+		tf.setEditable(false);
+
+		min = (float) 0.1;
+		max = (float) 1.0;
+		step = (float) 0.1;
+		initValue = (float) 0.5;
+		SpinnerNumberModel model2 = new SpinnerNumberModel(initValue, min, max, step);
+
+		jSpinner2 = new JSpinner(model2);
+		JFormattedTextField tf2 = ((JSpinner.DefaultEditor) jSpinner2
+				.getEditor()).getTextField();
+		tf2.setEditable(false);
+
+		min = (float) -100.0;
+		max = (float) 100.0;
+		step = (float) 1.0;
+		initValue = (float) 0.0;
+		SpinnerNumberModel model3 = new SpinnerNumberModel(initValue, min, max, step);
+
+		jSpinner3 = new JSpinner(model3);
+		JFormattedTextField tf3 = ((JSpinner.DefaultEditor) jSpinner3
+				.getEditor()).getTextField();
+		tf3.setEditable(false);
+
+		setLayout(new java.awt.GridBagLayout());
+
+		jPanel1.setLayout(new java.awt.GridBagLayout());
+
+		jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
+				PluginServices.getText(this, "None"),
+				PluginServices.getText(this, "Anaglyphic"),
+				PluginServices.getText(this, "HorizontalInterlace"),
+				PluginServices.getText(this, "VerticalInterlace"),
+				PluginServices.getText(this, "HorizontalSplit"),
+				PluginServices.getText(this, "LeftEye"),
+				PluginServices.getText(this, "RightEye"),
+				PluginServices.getText(this, "QuadBuffer"), }));
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jPanel1.add(jComboBox1, gridBagConstraints);
+
+		jComboBox1.addItemListener(new ItemListener() {
+
+			public void itemStateChanged(ItemEvent e) {
+				jComboBox1ItemSelected(e);
+			}
+
+		});
+
+		jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
+				PluginServices.getText(this, "None"),
+				PluginServices.getText(this, "2X"),
+				PluginServices.getText(this, "4X") }));
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jPanel1.add(jComboBox2, gridBagConstraints);
+
+		jComboBox2.addItemListener(new ItemListener() {
+
+			public void itemStateChanged(ItemEvent e) {
+				jComboBox2ItemSelected(e);
+			}
+
+		});
+
+		jButton2.setText("Cancelar");
+		jButton2.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent evt) {
+				jButton2ActionPerformed(evt);
+			}
+		});
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 7;
+		jPanel1.add(jButton2, gridBagConstraints);
+
+		jButton1.setText("Aceptar");
+		jButton1.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent evt) {
+				jButton1ActionPerformed(evt);
+			}
+		});
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 7;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 6);
+		jPanel1.add(jButton1, gridBagConstraints);
+
+		jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
+				PluginServices.getText(this, "Monitor"),
+				PluginServices.getText(this, "HeadMounted"),
+				PluginServices.getText(this, "PowerWall"),
+				PluginServices.getText(this, "RealityCenter") }));
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 3;
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		jPanel1.add(jComboBox3, gridBagConstraints);
+		jComboBox3.setEnabled(false);
+
+		jComboBox3.addItemListener(new ItemListener() {
+
+			public void itemStateChanged(ItemEvent e) {
+				jComboBox3ItemSelected(e);
+			}
+
+		});
+
+		jLabel1.setText("Tipo de Pantalla :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 3;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		jPanel1.add(jLabel1, gridBagConstraints);
+
+		jLabel2.setText("Antialiasing :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
+		jPanel1.add(jLabel2, gridBagConstraints);
+
+		jLabel3.setText("Visualizacion Estereo :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 22);
+		jPanel1.add(jLabel3, gridBagConstraints);
+
+		jLabel4.setText("Distancia interocular :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
+		jPanel1.add(jLabel4, gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.ipadx = 30;
+		// gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 22);
+		jSpinner1.setEnabled(false);
+		jPanel1.add(jSpinner1, gridBagConstraints);
+
+		jLabel5.setText("Distancia a la pantalla :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 5;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		// gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
+		jPanel1.add(jLabel5, gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 5;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		gridBagConstraints.ipadx = 30;
+		jSpinner2.setEnabled(false);
+		jPanel1.add(jSpinner2, gridBagConstraints);
+
+		jLabel6.setText("Increm. de distancia de fusiÃ³n :");
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 6;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+		// gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
+		jPanel1.add(jLabel6, gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 6;
+		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+		gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
+		gridBagConstraints.ipadx = 30;
+		jSpinner3.setEnabled(false);
+		jPanel1.add(jSpinner3, gridBagConstraints);
+		// jSpinner1.addChangeListener(new ChangeListener() {
+		//		
+		// public void stateChanged(ChangeEvent e) {
+		// JSpinner spinner = (JSpinner) e.getSource();
+		//		
+		// double value = (Double) spinner.getValue();
+		// ds.setEyeSeparation((float) value);
+		// view3D.getCanvas3d().getOSGViewer().setDisplaySettings(ds);
+		//		
+		// }
+		//		
+		// });
+
+		add(jPanel1, new java.awt.GridBagConstraints());
+
+		if (ds != null)
+			setDisplaySettings();
+
+	}
+
+	protected void jButton2ActionPerformed(ActionEvent evt) {
+		PluginServices.getMDIManager().closeWindow(this);
+
+	}
+
+	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
+
+		int stereo, antialias, device;
+
+		view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		stereo = jComboBox1.getSelectedIndex();
+		antialias = jComboBox2.getSelectedIndex();
+		device = jComboBox3.getSelectedIndex();
+		// ds = new DisplaySettings();
+		switch (stereo) {
+
+		case 0:
+			ds.setStereo(false);
+			break;
+
+		case 1:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.ANAGLYPHIC);
+			break;
+
+		case 2:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.HORIZONTAL_INTERLACE);
+			break;
+
+		case 3:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.VERTICAL_INTERLACE);
+			break;
+
+		case 4:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.HORIZONTAL_SPLIT);
+			break;
+
+		case 5:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.LEFT_EYE);
+			break;
+
+		case 6:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.RIGHT_EYE);
+			break;
+
+		case 7:
+			ds.setStereo(true);
+			ds.setStereoMode(DisplaySettings.StereoMode.QUAD_BUFFER);
+			break;
+
+		}
+		switch (antialias) {
+
+		case 0:
+			break;
+
+		case 1:
+			ds.setNumMultiSamples(2);
+			break;
+
+		case 2:
+			ds.setNumMultiSamples(4);
+			break;
+
+		}
+
+		switch (device) {
+
+		case 0:
+			ds.setDisplayType(DisplaySettings.DisplayType.MONITOR);
+			break;
+
+		case 1:
+			ds.setDisplayType(DisplaySettings.DisplayType.HEAD_MOUNTED_DISPLAY);
+			break;
+
+		case 2:
+			ds.setDisplayType(DisplaySettings.DisplayType.POWERWALL);
+			break;
+
+		case 3:
+			ds.setDisplayType(DisplaySettings.DisplayType.REALITY_CENTER);
+			break;
+
+		}
+
+		if (jSpinner1.isEnabled()) {
+			
+			ds.setEyeSeparation(((SpinnerNumberModel) jSpinner1.getModel()).getNumber().floatValue());
+			ds.setScreenDistance(((SpinnerNumberModel) jSpinner2.getModel()).getNumber().floatValue());
+			
+		}
+		view3D.getCanvas3d().getOSGViewer().setDisplaySettings(ds);
+
+		PluginServices.getMDIManager().closeWindow(this);
+
+	}
+
+	private void jComboBox3ItemSelected(ItemEvent e) {
+
+	}
+
+	private void jComboBox2ItemSelected(ItemEvent e) {
+
+	}
+
+	private void jComboBox1ItemSelected(ItemEvent e) {
+		if (e.getItem().equals(PluginServices.getText(this, "None"))) {
+			jComboBox3.setEnabled(false);
+			jComboBox3.setSelectedIndex(0);
+			jSpinner1.setEnabled(false);
+			jSpinner2.setEnabled(false);
+			jSpinner3.setEnabled(false);
+		} else {
+			jComboBox3.setEnabled(true);
+			jSpinner1.setEnabled(true);
+			jSpinner2.setEnabled(true);
+			jSpinner3.setEnabled(true);
+		}
+
+	}
+
+	public WindowInfo getWindowInfo() {
+		m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+		m_viewinfo.setTitle(PluginServices.getText(this, "Display"));
+		m_viewinfo.setHeight(height);
+		m_viewinfo.setWidth(width);
+		return m_viewinfo;
+	}
+
+	public void stateChanged(ChangeEvent e) {
+
+	}
+
+	public void windowActivated() {
+		view3D = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		System.out.println(view3D.getName());
+	}
+
+	public void windowClosed() {
+
+	}
+
+	public void setDisplaySettings() {
+
+		int stereo, antialias, device;
+		
+		 
+
+		System.out.println(ds);
+		if (ds.getStereo()) {
+
+			stereo = ds.getStereoMode();
+			jSpinner1.setValue(ds.getEyeSeparation());
+			jSpinner2.setValue((ds.getScreenDistance()));
+
+		}
+
+		else
+			stereo = -1;
+		antialias = ds.getNumMultiSamples();
+		device = ds.getDisplayType();
+
+		switch (stereo) {
+
+		case 0:
+			jComboBox1.setSelectedIndex(7);
+			break;
+
+		case 1:
+			jComboBox1.setSelectedIndex(1);
+			break;
+
+		case 2:
+			jComboBox1.setSelectedIndex(4);
+			break;
+
+		case 3:
+			jComboBox1.setSelectedIndex(5);
+			break;
+
+		case 4:
+			jComboBox1.setSelectedIndex(6);
+			break;
+
+		case 5:
+			jComboBox1.setSelectedIndex(2);
+			break;
+
+		case 6:
+			jComboBox1.setSelectedIndex(3);
+			break;
+
+		default:
+			jComboBox1.setSelectedIndex(0);
+			break;
+
+		}
+
+		if (!ds.getStereo())
+			jComboBox1.setSelectedIndex(0);
+
+		switch (antialias) {
+
+		case 0:
+			jComboBox2.setSelectedIndex(0);
+			break;
+
+		case 2:
+			jComboBox2.setSelectedIndex(1);
+			break;
+
+		case 4:
+			jComboBox2.setSelectedIndex(2);
+			break;
+
+		}
+
+		switch (device) {
+
+		case 0:
+			jComboBox3.setSelectedIndex(0);
+			break;
+
+		case 1:
+			jComboBox3.setSelectedIndex(2);
+			break;
+
+		case 2:
+			jComboBox3.setSelectedIndex(3);
+			break;
+
+		case 3:
+			jComboBox3.setSelectedIndex(1);
+			break;
+
+		}
+
+	}
+
+	/*
+	 * public DisplaySettings getDisplaySettings() {
+	 * 
+	 * return ds; }
+	 */
+	public Object getWindowProfile() {
+		return null;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenMenu.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenMenu.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/FullScreenMenu.java	(revision 29090)
@@ -0,0 +1,53 @@
+package org.gvsig.gvsig3dgui.display;
+
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+
+public class FullScreenMenu extends Extension {
+
+	public void execute(String actionCommand) {
+
+		// Getting view3D
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+
+		if (actionCommand.equals("FULLSCREEN")) {
+
+			FullScreenPanel fullScreenPanel = new FullScreenPanel();
+			// Showing it
+			PluginServices.getMDIManager().addWindow(fullScreenPanel);
+
+		}
+
+	}
+
+	public void initialize() {
+		// Register new icons
+		// zoom to selection
+		PluginServices.getIconTheme().registerDefault(
+				"fullscreen-icon",
+				this.getClass().getClassLoader().getResource(
+						"images/fullscreen.png"));
+
+	}
+
+	public boolean isEnabled() {
+
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+	public boolean isVisible() {
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayMenu.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayMenu.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/DisplayMenu.java	(revision 29090)
@@ -0,0 +1,54 @@
+package org.gvsig.gvsig3dgui.display;
+
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.viewer.DisplaySettings;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+
+public class DisplayMenu extends Extension {
+
+	public void execute(String actionCommand) {
+
+		// Getting view3D
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+
+		if (actionCommand.equals("DISPLAY")) {
+
+			DisplayPanel displayPanel = new DisplayPanel();
+			// Showing it
+			PluginServices.getMDIManager().addWindow(displayPanel);
+
+		}
+
+	}
+
+	public void initialize() {
+		// Register new icons
+		// zoom to selection
+		PluginServices.getIconTheme().registerDefault(
+				"display-icon",
+				this.getClass().getClassLoader().getResource(
+						"images/display.png"));
+
+	}
+
+	public boolean isEnabled() {
+
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+	public boolean isVisible() {
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/EnableCompass.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/EnableCompass.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/display/EnableCompass.java	(revision 29090)
@@ -0,0 +1,62 @@
+package org.gvsig.gvsig3dgui.display;
+
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.Group;
+import org.gvsig.osgvp.exceptions.node.ChildIndexOutOfBoundsExceptions;
+import org.gvsig.osgvp.planets.PlanetViewer;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+
+public class EnableCompass extends Extension {
+
+	boolean value = true;
+	
+	public void execute(String actionCommand) {
+
+		// Getting view3D
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+
+		if (actionCommand.equals("COMPASS")) {
+
+			try {
+				System.out.println("Node is going to be" + value);
+				((Group) ((PlanetViewer) ((View3D) view).getCanvas3d().getOSGViewer()).getNodeFromHUD(0)).getChild(1).setEnabledNode(!value);
+				value = !value;
+			} catch (ChildIndexOutOfBoundsExceptions e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+	}
+
+	public void initialize() {
+		// Register new icons
+		// zoom to selection
+		PluginServices.getIconTheme().registerDefault(
+				"compass-icon",
+				this.getClass().getClassLoader().getResource(
+						"images/compass-icon.png"));
+
+	}
+
+	public boolean isEnabled() {
+
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+	public boolean isVisible() {
+		if (PluginServices.getMDIManager().getActiveWindow() instanceof View3D)
+			return true;
+		else
+			return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3D.java	(revision 29090)
@@ -0,0 +1,794 @@
+package org.gvsig.gvsig3dgui;
+
+import java.awt.Color;
+import java.awt.geom.Rectangle2D;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+import java.util.prefs.Preferences;
+
+import org.apache.log4j.Logger;
+import org.gvsig.cacheservice.CacheService;
+import org.gvsig.gvsig3d.gui.FeatureFactory;
+import org.gvsig.gvsig3d.gui.Hud;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.layers.FLayers3D;
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.gvsig3dgui.view.ViewProperties3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.exceptions.node.ChildIndexOutOfBoundsExceptions;
+import org.gvsig.osgvp.exceptions.node.NodeException;
+import org.gvsig.osgvp.planets.Planet;
+import org.gvsig.osgvp.planets.PlanetViewer;
+import org.gvsig.osgvp.planets.exceptions.PlanetExtentException;
+import org.gvsig.osgvp.viewer.Camera;
+import org.gvsig.osgvp.viewer.CanvasViewer;
+import org.gvsig.osgvp.viewer.DisplaySettings;
+import org.gvsig.osgvp.viewer.IViewerContainer;
+import org.gvsig.osgvp.viewer.ViewerFactory;
+import org.gvsig.osgvp.viewer.ViewerStateListener;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.hardcode.gdbms.engine.data.driver.DriverException;
+import com.iver.ai2.gvsig3d.camera.ProjectCamera;
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
+import com.iver.cit.gvsig.fmap.layers.XMLException;
+import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.cit.gvsig.project.documents.ProjectDocument;
+import com.iver.cit.gvsig.project.documents.ProjectDocumentFactory;
+import com.iver.cit.gvsig.project.documents.exceptions.OpenException;
+import com.iver.cit.gvsig.project.documents.exceptions.SaveException;
+import com.iver.cit.gvsig.project.documents.table.ProjectTable;
+import com.iver.cit.gvsig.project.documents.table.ProjectTableFactory;
+import com.iver.cit.gvsig.project.documents.view.ProjectViewBase;
+import com.iver.cit.gvsig.project.documents.view.ProjectViewFactory;
+import com.iver.utiles.IPersistence;
+import com.iver.utiles.StringUtilities;
+import com.iver.utiles.XMLEntity;
+
+/**
+ * Clase que representa una vista del proyecto
+ * 
+ * @author Fernando Gonzï¿½lez Cortï¿½s
+ */
+public class ProjectView3D extends ProjectViewBase {
+	// public static int numViews = 0;
+
+	private IViewerContainer m_canvas3d = null;
+
+	private PlanetViewer m_planetViewer = null;
+
+	private Planet m_planet = null;
+
+	private ProjectCamera projectCamera = null;
+
+	private int m_planetType = Planet.CoordinateSystemType.PROJECTED; // spheric
+																		// or
+																		// plane
+
+	private Color backgroundColor;
+
+	private float verticalExaggeration = 5;
+
+	private FeatureFactory g;
+
+	private View3D m_view = null;
+
+	private static Preferences prefs = Preferences.userRoot().node(
+			"gvsig.configuration.3D");
+
+	private boolean prespectiveMode = true;
+
+	private static Logger logger = Logger.getLogger(ProjectView3D.class
+			.getName());
+
+	// private Satelite runnable;
+
+	public ProjectView3D() {
+		super();
+		backgroundColor = new Color(0, 0, 0, 255);
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 * @throws XMLException
+	 * @throws SaveException
+	 */
+	public XMLEntity getXMLEntity() throws SaveException {
+		XMLEntity xml = super.getXMLEntity();
+		// xml.putProperty("nameClass", this.getClass().getName());
+		try {
+			// Persistiendo la posicion actual de la camara
+			// TODO: remove this line where planet viewer will be test
+			// if (m_canvas3d != null) {
+			// projectCamera = new ProjectCamera();
+			// projectCamera.setDescription("Camera");
+			// projectCamera.setCamera(m_canvas3d.getOSGViewer().getCamera());
+			//
+			// xml.addChild(projectCamera.getXMLEntity());
+			// }
+
+			if (this.m_planetViewer != null) {
+				projectCamera = new ProjectCamera();
+				projectCamera.setDescription("Camera");
+				projectCamera.setCamera(this.m_planetViewer.getCamera());
+
+				xml.addChild(projectCamera.getXMLEntity());
+			}
+
+			int numViews = ((Integer) ProjectDocument.NUMS
+					.get(ProjectView3DFactory.registerName)).intValue();
+			xml.putProperty("numViews", numViews);
+			xml.putProperty("m_selectedField", m_selectedField);
+			xml.putProperty("m_typeLink", m_typeLink);
+			xml.putProperty("m_extLink", m_extLink);
+
+			// 3D properties
+			xml.putProperty("planetType", m_planetType);
+			xml.putProperty("verticalExaggeration", verticalExaggeration);
+
+			xml.putProperty("backgroundColor", StringUtilities
+					.color2String(backgroundColor));
+
+			xml.addChild(mapContext.getXMLEntity());
+
+			if (mapOverViewContext != null) {
+				if (mapOverViewContext.getViewPort() != null) {
+					xml.putProperty("mapOverView", true);
+					xml.addChild(mapOverViewContext.getXMLEntity());
+				} else {
+					xml.putProperty("mapOverView", false);
+				}
+			} else {
+				xml.putProperty("mapOverView", false);
+			}
+		} catch (Exception e) {
+			throw new SaveException(e, this.getClass().getName());
+		}
+
+		return xml;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param xml
+	 *            DOCUMENT ME!
+	 * @param p
+	 *            DOCUMENT ME!
+	 * @throws XMLException
+	 * @throws DriverException
+	 * @see com.iver.cit.gvsig.project.documents.ProjectDocument#setXMLEntity(com.iver.utiles.XMLEntity)
+	 */
+	public void setXMLEntity03(XMLEntity xml, Project p) throws XMLException {
+		try {
+			super.setXMLEntity03(xml);
+		} catch (ReadDriverException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		int numViews = xml.getIntProperty("numViews");
+		ProjectDocument.NUMS.put(ProjectView3DFactory.registerName,
+				new Integer(numViews));
+
+		m_selectedField = xml.getStringProperty("m_selectedField");
+		m_typeLink = xml.getIntProperty("m_typeLink");
+		m_extLink = xml.getStringProperty("m_extLink");
+		setMapContext(MapContext3D.createFromXML03(xml.getChild(0)));
+
+		if (xml.getBooleanProperty("mapOverView")) {
+			setMapOverViewContext(MapContext.createFromXML03(xml.getChild(1)));
+		}
+
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param xml
+	 *            DOCUMENT ME!
+	 * @param p
+	 *            DOCUMENT ME!
+	 * @throws XMLException
+	 * @throws OpenException
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.ProjectDocument#setXMLEntity(com.iver.utiles.XMLEntity)
+	 */
+	public void setXMLEntity(XMLEntity xml) throws XMLException, OpenException {
+		try {
+			super.setXMLEntity(xml);
+			int currentChild = 0;
+
+			// Read last child
+			int childNumber = currentChild;
+
+			// Get camera
+			XMLEntity xmlProp = xml.getChild(childNumber);
+			if (xmlProp.contains("eyeX")) {
+				try {
+					String className = xmlProp.getStringProperty("className");
+					Class classProp = Class.forName(className);
+					Object obj = classProp.newInstance();
+					IPersistence objPersist = (IPersistence) obj;
+					objPersist.setXMLEntity(xmlProp);
+					projectCamera = (ProjectCamera) obj;
+				} catch (Exception e) {
+
+				}
+				currentChild++;
+			}
+
+			int numViews = xml.getIntProperty("numViews");
+			ProjectDocument.NUMS.put(ProjectView3DFactory.registerName,
+					new Integer(numViews));
+
+			m_selectedField = xml.getStringProperty("m_selectedField");
+			m_typeLink = xml.getIntProperty("m_typeLink");
+			m_extLink = xml.getStringProperty("m_extLink");
+
+			// 3D properties
+			m_planetType = xml.getIntProperty("planetType");
+			verticalExaggeration = xml.getFloatProperty("verticalExaggeration");
+
+			backgroundColor = StringUtilities.string2Color((xml
+					.getStringProperty("backgroundColor")));
+
+			setMapContext(MapContext3D
+					.createFromXML(xml.getChild(currentChild)));
+			currentChild++;
+			if (xml.getBooleanProperty("mapOverView")) {
+				setMapOverViewContext(MapContext.createFromXML(xml
+						.getChild(currentChild)));
+				currentChild++;
+			}
+			getOrCreateView();
+			showErrors();
+		} catch (Exception e) {
+			throw new OpenException(e, this.getClass().getName());
+		}
+
+	}
+
+	public String getFrameName() {
+		return PluginServices.getText(this, "Vista3D");
+	}
+	
+	public IViewerContainer getOrCreateCanvas3D() {
+		// create libJOSG objects
+		if (m_canvas3d == null) {
+			// AI2 objects
+			try {
+				m_planetViewer = new PlanetViewer();
+			} catch (NodeException e1) {
+			logger.error("Command: " + "Error creating planer viewer.", e1);
+			}
+
+			// Getting 3D preferences
+			boolean compatibilitySwing = false;
+			compatibilitySwing = prefs.getBoolean("compatibilitySwing",
+					compatibilitySwing);
+
+			if (compatibilitySwing) {
+				m_canvas3d = ViewerFactory.getInstance()
+						.createViewer(ViewerFactory.VIEWER_TYPE.JPANEL_VIEWER,
+								m_planetViewer);
+			} else {
+				m_canvas3d = ViewerFactory.getInstance()
+						.createViewer(ViewerFactory.VIEWER_TYPE.CANVAS_VIEWER,
+								m_planetViewer);
+			}
+
+			this.configureProjectionViewMode();
+			// m_canvas3d = ViewerFactory.getInstance().createViewer(
+			// ViewerFactory.VIEWER_TYPE.CANVAS_VIEWER, m_planetViewer);
+			m_canvas3d.addKeyListener(new ViewerStateListener(m_canvas3d
+					.getOSGViewer()));
+
+			// ViewerFactory.getInstance().startAnimator();
+			
+			//
+			m_canvas3d.getOSGViewer().setDisplaySettings(new DisplaySettings());
+			
+			//
+			m_planetViewer.setEnabledLighting(false);
+			ViewerFactory.getInstance().startAnimator();
+
+//			try {
+//				((PlanetViewer) m_canvas3d.getOSGViewer()).activePlanet(0);
+//			} catch (ChildIndexOutOfBoundsExceptions e1) {
+//				// TODO Auto-generated catch block
+//				e1.printStackTrace();
+//			}
+//			((PlanetViewer) m_canvas3d.getOSGViewer()).computeActiveCoordinateSystemNodePath();
+			
+			// REPAINTING VIEWER
+			if (m_canvas3d != null)
+				m_canvas3d.repaint();
+			
+			if (getBackGroundColor() != null) {
+				float r, g, b, a;
+				r = ((float) backgroundColor.getRed()) / 255.0f;
+				g = ((float) backgroundColor.getGreen()) / 255.0f;
+				b = ((float) backgroundColor.getBlue()) / 255.0f;
+				a = ((float) backgroundColor.getAlpha()) / 255.0f;
+				m_planetViewer.setClearColor(r, g, b, a);
+			}
+			try {
+				m_planet = new Planet();
+			m_planet.setCoordinateSystemType(m_planetType);
+			if (m_planetType == Planet.CoordinateSystemType.PROJECTED) {
+				m_planet.setCoordinateSystemName("EPSG:23030");
+				double extent[] = new double[4];
+				extent[0] = CacheService.planeGlobalBounds.getMinX();
+				extent[1] = CacheService.planeGlobalBounds.getMinY();
+				extent[2] = CacheService.planeGlobalBounds.getMaxX();
+				extent[3] = CacheService.planeGlobalBounds.getMaxY();
+				m_planet.setExtent(extent);
+			}
+			} catch (NodeException e2) {
+				// TODO Auto-generated catch block
+				e2.printStackTrace();
+			} catch (PlanetExtentException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+			// canvasListener lis = new canvasListener();
+			// lis.setCanvas(m_canvas3d);
+			// m_canvas3d.addKeyListener(lis);
+			/*
+			 * CODIGO DE PRUEBA PARA LA INCLUSION DE TEXTOS, POLIGONOS, LINEAS,
+			 * ETC...
+			 */
+
+			double radiusEarth = m_planet.getRadiusEquatorial();
+			g = new FeatureFactory(radiusEarth, m_planet);
+
+			// g.setNodeName("VECTOR");
+			// Group root = new Group();
+
+			// root.addChild(g);
+			// root.addChild(m_planet);
+			// PositionAttitudeTransform nt = new PositionAttitudeTransform();
+			// nt.addChild(m_canvas3d.readNodeFile("c:/modelos3d/spaceship.osg"));
+			// nt.addChild(m_canvas3d.readNodeFile("c:/modelos3d/axes.osg"));
+			// nt.addChild(m_canvas3d.readNodeFile("c:/modelos3d/cow.osg"));
+			// nt.addChild(m_canvas3d.readNodeFile("c:/modelos3d/cessna.osg"));
+			// nt.setPosition(new Vec3 (0,0,0) );
+			// nt.setScale(new Vec3 (1,1,1));
+			// m_canvas3d.addSpecialNode(nt);
+			// m_canvas3d.addSpecialNode(m_canvas3d.readNodeFile("c:/modelos3d/axes.osg"));
+			// m_canvas3d.addSpecialNode(m_canvas3d.readNodeFile("c:/modelos3d/spaceship.osg"));
+			// m_canvas3d.addSpecialNode(m_canvas3d.readNodeFile("c:/modelos3d/cow.osg"));
+			// root.addChild(m_canvas3d.readNodeFile("c:/modelos3d/cow.osg"));
+			// root.addChild(m_canvas3d.readNodeFile("c:/modelos3d/cessna.osg"));
+			// m_canvas3d.setSceneData(root);
+
+			// float cenLat = (float) ((-1) *(40 * 2 * Math.PI)/360),
+			// cenLon= (float) ( (-1) *(3 * 2* Math.PI)/360);
+			//			 
+			// PositionAttitudeTransform rot1 = new PositionAttitudeTransform();
+			// PositionAttitudeTransform rot2 = new PositionAttitudeTransform();
+			// // cargando la bandera
+			// String name = ResourcesFactory.getResourcePath("flag.ive");
+			// rot1.addChild(this.m_canvas3d.getOSGViewer().readNodeFile(name));
+			//
+			// rot1.setAttitude(cenLon, new Vec3(0.0, 1.0, 0.0));
+			// rot1.setScale(new Vec3(600, 600, 600));
+			//		
+			//
+			// rot2.addChild(rot1);
+			// rot2.setAttitude(cenLat, new Vec3(1.0, 0.0, 0.0));
+			// rot2.setPosition( new Vec3(0.0, 0.0, 0.0));
+			//
+			// root.addChild(rot2);
+			/* ************************************************************************* */
+
+			// m_planetViewer.addSpecialNode(g);
+			// List posi = new ArrayList();
+			// for (int i = 0; i < 10; i++) {
+			// Vec3 pos1 = m_planet.convertLatLongHeightToXYZ(new Vec3(0, Math
+			// .toRadians(i * 10), 0));
+			//
+			// // Vec3 pos1 = new Vec3(0, i * 10, 0);
+			// posi.add(pos1);
+			// }
+			// Vec4 rgba = new Vec4(1.0, 1.0, 1.0, 1.0);
+			// float lineWidth = 8;
+			// g.addChild(FeatureFactory.insertLine(posi, rgba, lineWidth));
+			// m_planetViewer.addSpecialNode(FeatureFactory.insertLine(posi,
+			// rgba,
+			// lineWidth));
+			// m_planetViewer.addSpecialNode(osgDB.readNodeFile(ResourcesFactory
+			// .getResourcesPath()
+			// + "../images/flag.ive"));
+			// m_canvas3d.getOSGViewer().addSpecialNode(root);
+			// Cargando el satelite
+			// m_canvas3d.addSpecialNode(sat);
+			try {
+				m_planetViewer.addPlanet(m_planet);
+			} catch (NodeException e1) {
+				logger.error("Command: " + "Error adding new child node.", e1);
+			}
+
+			Camera cam;
+			cam = new Camera();
+			if (this.projectCamera == null) {
+
+				if (m_planetType == Planet.CoordinateSystemType.PROJECTED) {
+					Rectangle2D e = m_planet.getExtent();
+					// double difx = (e[1] - e[0]) / 2.0d;
+					// double dify = (e[3] - e[2]) / 2.0d;
+					// double posx = e[0] + difx;
+					// double posy = e[2] + dify;
+
+					double height;
+					height = Math.sqrt(e.getWidth() * e.getWidth()
+							+ e.getHeight() * e.getHeight()) * 10f;
+					cam.setViewByLookAt((float) e.getCenterX(), (float) e
+							.getCenterY(), (float) height, (float) e
+							.getCenterX(), (float) e.getCenterY(), 0f, 0f, 1f,
+							0f);
+					cam.setViewByLookAt(0, 0, 5000000 * 4.6, 0, 0, 0, 0, 1, 0);
+					m_planetViewer.getCustomTerrainManipulator()
+							.setMinCameraDistance(10);
+					m_planetViewer.getCustomTerrainManipulator()
+							.setMaxCameraDistance(5000000 * 10);
+					// m_planet.setSubdivisionFactor((float) 0.45);
+				} else {
+					// cam.setViewByLookAt(m_planet.getRadiusEquatorial() * 3.0,
+					// 0, 0, 0, 0, 0, 0, 0, 1);
+					cam.setViewByLookAt(m_planet.getRadiusEquatorial() * 8.0,
+							0, 0, 0, 0, 0, 0, 0, 1);
+					m_planetViewer.getCustomTerrainManipulator()
+							.setMinCameraDistance(100);
+					// m_planetViewer.getCustomTerrainManipulator()
+					// .setMaxCameraDistance(
+					// m_planet.getRadiusEquatorial() * 3.0);
+					m_planetViewer.getCustomTerrainManipulator()
+							.setMaxCameraDistance(
+									m_planet.getRadiusEquatorial() * 10.0);
+					// cam.setViewByLookAt(100 * 2.0,
+					// 0, 0, 0, 0, 0, 0, 0, 1);
+					// m_planet.setSubdivisionFactor((float) 0.65);
+				}
+
+			} else {
+				cam = projectCamera.getCamera();
+			}
+
+			// m_canvas3d.getOSGViewer().setCameraManipulator(new
+			// TrackballManipulator());
+
+			m_planetViewer.setCamera(cam);
+
+			Hud hud = new Hud(m_canvas3d, m_planet);
+			try {
+				m_planetViewer.addNodeToHUD(hud);
+			} catch (NodeException e) {
+				logger.error("Command: " + "Error adding node to hud.", e);
+			}
+
+			m_planetViewer.setEnabledLighting(true);
+			
+		}
+		m_canvas3d.addKeyListener(new Key3DListener(this.m_planet));
+		
+		return m_canvas3d;
+	}
+	
+	public View3D getOrCreateView() {
+		if(m_view == null) {
+			m_view = new View3D();
+
+			m_view.setCanvas3d(getOrCreateCanvas3D());
+
+			m_view.setPlanet(m_planet);
+			m_view.setModel(this);	
+			m_view.setNavMode(new NavigationMode(((PlanetViewer) m_planetViewer)
+					.getCustomTerrainManipulator()));
+
+			((MapContext3D) getMapContext())
+					.setVerticalExageration(verticalExaggeration);
+			setVerticalEx(verticalExaggeration);
+		}
+		return m_view;
+	}
+
+	public IWindow createWindow() {
+
+		// View allready exits. Return it.
+		if (m_view != null)
+			return m_view;
+		
+		getOrCreateView();
+
+		callCreateWindow(m_view);
+		return m_view;
+	}
+
+	protected void finalize() throws Throwable {
+		if (m_canvas3d != null) {
+			// runnable.end();
+			ViewerFactory.getInstance().stopAnimator();
+			m_planet.dispose();
+			m_planetViewer.dispose();
+		}
+	}
+
+	public IWindow getProperties() {
+		return new ViewProperties3D(this, false); // new ViewProperties(this);
+		// TODO
+	}
+
+	public void exportToXML(XMLEntity root, Project project)
+			throws SaveException {
+		XMLEntity viewsRoot = project.getExportXMLTypeRootNode(root,
+				ProjectViewFactory.registerName);
+		viewsRoot.addChild(this.getXMLEntity());
+		this.exportToXMLLayerDependencies(this.getMapContext().getLayers(),
+				root, project);
+		if (this.getMapOverViewContext() != null) {
+			this.exportToXMLLayerDependencies(this.getMapOverViewContext()
+					.getLayers(), root, project);
+		}
+	}
+
+	private void exportToXMLLayerDependencies(FLayer layer, XMLEntity root,
+			Project project) throws SaveException {
+
+		if (layer instanceof FLayers) {
+			FLayers layers = (FLayers) layer;
+			for (int i = 0; i < layers.getLayersCount(); i++) {
+				this.exportToXMLLayerDependencies(layers.getLayer(i), root,
+						project);
+			}
+		} else {
+			if (layer instanceof AlphanumericData) {
+
+				try {
+					project
+							.exportToXMLDataSource(root,
+									((AlphanumericData) layer).getRecordset()
+											.getName());
+				} catch (ReadDriverException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+
+				ProjectTable pt = project.getTable((AlphanumericData) layer);
+				if (pt != null) {
+					pt.exportToXML(root, project);
+				}
+			}
+		}
+	}
+
+	public void importFromXML(XMLEntity root, XMLEntity typeRoot,
+			int elementIndex, Project project, boolean removeDocumentsFromRoot)
+			throws XMLException, OpenException {
+		XMLEntity element = typeRoot.getChild(elementIndex);
+
+		this.setXMLEntity(element);
+		project.addDocument(this);
+		if (removeDocumentsFromRoot) {
+			typeRoot.removeChild(elementIndex);
+		}
+
+		// Cargamos las tables vinculadas:
+
+		// Recuperamos todos los nombres
+		XMLEntity tablesRoot = project.getExportXMLTypeRootNode(root,
+				ProjectTableFactory.registerName);
+		int childIndex;
+		XMLEntity child;
+		// Lo hacemos en un map por si una vista se usa varias veces
+		HashMap tablesName = new HashMap();
+		Iterator iterTables = tablesRoot.findChildren("viewName", this
+				.getName());
+		while (iterTables.hasNext()) {
+			child = (XMLEntity) iterTables.next();
+			tablesName.put(child.getStringProperty("name"), child
+					.getStringProperty("name"));
+		}
+
+		XMLEntity tableXML;
+
+		// Construimos un diccionario ordenado inversamente por el indice
+		// del elemento (por si se van eliminando elementos al importar) y
+		// como valor el nombre de la vista
+		TreeMap tablesToImport = new TreeMap(new Comparator() {
+
+			public int compare(Object o1, Object o2) {
+
+				if (((Integer) o1).intValue() > ((Integer) o2).intValue()) {
+					return -1; // o1 first
+				} else if (((Integer) o1).intValue() < ((Integer) o2)
+						.intValue()) {
+					return 1; // o1 second
+				}
+				return 0;
+			}
+
+		});
+		Iterator iterTablesName = tablesName.keySet().iterator();
+		int tableIndex;
+		String tableName;
+		while (iterTablesName.hasNext()) {
+			tableName = (String) iterTablesName.next();
+			tableIndex = tablesRoot.firstIndexOfChild("name", tableName);
+			tablesToImport.put(new Integer(tableIndex), tableName);
+		}
+
+		ProjectTable table;
+		ProjectDocumentFactory tableFactory = project
+				.getProjectDocumentFactory(ProjectTableFactory.registerName);
+
+		Iterator iterTablesToImport = tablesToImport.entrySet().iterator();
+		Entry entry;
+		// Nos recorremos las vistas a importar
+		while (iterTablesToImport.hasNext()) {
+			entry = (Entry) iterTablesToImport.next();
+			tableName = (String) entry.getValue();
+			tableIndex = ((Integer) entry.getKey()).intValue();
+			table = (ProjectTable) tableFactory.create(project);
+			try {
+				table.importFromXML(root, tablesRoot, tableIndex, project,
+						removeDocumentsFromRoot);
+			} catch (ReadDriverException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+	}
+
+	public int getPlanetType() {
+		return m_planetType;
+	}
+
+	public void setPlanetType(int type) {
+		m_planetType = type;
+	}
+
+	public float getVerticalExaggeration() {
+		return verticalExaggeration;
+	}
+
+	public void setVerticalExaggeration(float exaggeration) {
+		verticalExaggeration = exaggeration;
+	}
+
+	public Color getBackGroundColor() {
+		return backgroundColor;
+	}
+
+	public void setBackGroundColor(Color backGroundColor) {
+		this.backgroundColor = backGroundColor;
+		if ((this.backgroundColor != null) && (m_planetViewer != null)) {
+			float r, g, b, a;
+			r = ((float) backgroundColor.getRed()) / 255.0f;
+			g = ((float) backgroundColor.getGreen()) / 255.0f;
+			b = ((float) backgroundColor.getBlue()) / 255.0f;
+			a = ((float) backgroundColor.getAlpha()) / 255.0f;
+			
+			m_planetViewer.setClearColor(r, g, b, a);
+		}
+	}
+
+	/**
+	 * Method to insert text points in a position with a especific text
+	 * 
+	 * @param nombre
+	 *            The text
+	 * @param posicion
+	 *            the position
+	 */
+	public void insertaText(String nombre, Vec3 posicion) {
+		// Group root = (Group) m_canvas3d.getSceneData();
+		//		
+		// Group vector = (Group) root.getChild(0);
+		//
+		// if (vector.getNodeName(null).equals("VECTOR")) {
+		// VectorTest vaux = (VectorTest) vector;
+		// System.out.println("Numero de hijos " + vaux.getNumChildren());
+		// vaux.insertText(nombre, posicion);
+		// // vaux.insertPoint(posicion, new Vec4(1.0,1.0,1.0,1.0));
+		// System.out.println("Numero de hijos despues "
+		// + vaux.getNumChildren());
+		// }
+
+		// g.insertText(nombre, posicion);
+
+		// System.out.println("Nombre del nodo leido " +
+		// vector.getNodeName(null)) ;
+
+	}
+
+	public Planet getPlanet() {
+		return m_planet;
+	}
+
+	public void setPlanet(Planet m_planet) {
+		this.m_planet = m_planet;
+	}
+
+	public IViewerContainer getCanvas3d() {
+		return m_canvas3d;
+	}
+
+	public void setCanvas3d(CanvasViewer m_canvas3d) {
+		this.m_canvas3d = m_canvas3d;
+	}
+
+	private void setVerticalEx(float exa) {
+
+		SingleLayerIterator lyrIterator = new SingleLayerIterator(
+				(FLayers3D) getMapContext().getLayers());
+		while (lyrIterator.hasNext()) {
+			FLayer lyr = lyrIterator.next();
+
+			Layer3DProps props = Layer3DProps.getLayer3DProps(lyr);
+			int type = props.getType();
+			if (exa != props.getVerticalEx()) {
+				if (type == Layer3DProps.layer3DElevation) {
+					int order = props.getPlanetOrder();
+					props.setVerticalEx(exa);
+					m_planet.setVerticalExaggerationLayer(order, props
+							.getVerticalEx());
+				} else if (type == Layer3DProps.layer3DVector) {
+					int order = props.getPlanetOrder();
+					props.setVerticalEx(exa);
+				}
+			}
+
+		}
+	}
+
+	public boolean isPrespectiveModeActive() {
+		return prespectiveMode;
+	}
+
+	/**
+	 * Active the prespective mode. If we disable the prespective mode, the
+	 * ortho mode will be active
+	 * 
+	 * @param prespectiveMode
+	 *            enable/disable
+	 */
+	public void setActivePrespectiveMode(boolean prespectiveMode) {
+		this.prespectiveMode = prespectiveMode;
+	}
+
+	private void configureProjectionViewMode() {
+		if (prespectiveMode) {
+			System.out.println("Setting up prespective projection");
+			// this.m_canvas3d.getOSGViewer().setProjectionMatrixAsPerspective(
+			// arg0, arg1, arg2, arg3);
+		} else {
+			System.out.println("Setting up prespective projection");
+			this.m_canvas3d.getOSGViewer().setProjectionMatrixAsOrtho(-10, 10,
+					-10, 10, 1, 1000);
+		}
+	}
+
+	public View3D getView() {
+		return m_view;
+	}
+
+	public void setView(View3D m_view) {
+		this.m_view = m_view;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocEditingLayer.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocEditingLayer.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocEditingLayer.java	(revision 29090)
@@ -0,0 +1,138 @@
+package org.gvsig.gvsig3dgui.tocMenu;
+
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3dgui.layer.TransparencyPanel;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
+import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
+
+public class TocEditingLayer extends AbstractTocContextMenuAction {
+
+	public String getGroup() {
+		return "group6"; // FIXME
+	}
+
+	public int getGroupOrder() {
+		return 60;
+	}
+
+	public int getOrder() {
+		return 10;
+	}
+
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		// return selectedItems.length == 1;
+
+		// return true;
+
+		boolean enable = false;
+
+		for (int i = 0; i < selectedItems.length; i++) {
+			FLayer layer = selectedItems[i];
+			int type = Layer3DProps.getLayer3DProps(layer).getType();
+			if (type == Layer3DProps.layer3DOSG) {
+				enable = true;
+			}
+		}
+
+		return enable;
+
+		// if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrVect
+		// && selectedItems[0].isAvailable()) {
+		// return true;
+		// }
+		// if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrWMS
+		// && selectedItems[0].isAvailable()) {
+		// return true;
+		// }
+		// return false;
+
+	}
+
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		if (!isTocItemBranch(item))
+			return false;
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			// return mapa.getLayers().getLayersCount() > 0;
+
+			FLayer[] selectedExtent = mapa.getLayers().getActives();
+
+			// If there is not one and is available
+			if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()) {
+				// // && (selectedExtent[0] instanceof FLyrVect)) {
+				FLayer lyr3D = selectedExtent[0];
+				Layer3DProps props = Layer3DProps.getLayer3DProps(lyr3D);
+				return (props.getType() == Layer3DProps.layer3DOSG);
+			}
+
+		}
+		return false;
+	}
+
+	public void execute(ITocItem item, FLayer[] selectedItems) {
+		
+		
+		for (int i = 0; i < selectedItems.length; i++) {
+			FLayer layer = selectedItems[i];
+			Layer3DProps props3D = Layer3DProps.getLayer3DProps(layer);
+			if (props3D.getType() == Layer3DProps.layer3DOSG)  {
+				OSGCacheService osgCacheService = (OSGCacheService) props3D.getCacheService();
+				if ( props3D.isEditing()){
+					osgCacheService.endEditing();
+				}else{
+					osgCacheService.startEditing();
+				}
+			}
+		}
+
+	}
+
+	public String getText() {
+		String result = "Desactivar edicion 3D";
+
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			FLayer[] activeLayers = mapa.getLayers().getActives();
+
+			// If there is not one and is available
+			if (activeLayers.length == 1 && activeLayers[0].isAvailable()) {
+				FLayer lyr3D = activeLayers[0];
+				Layer3DProps props = Layer3DProps.getLayer3DProps(lyr3D);
+				if (!(props.isEditing())
+						&& (props.getType() == Layer3DProps.layer3DOSG)) {
+					result = "Activar edición 3D";
+				}
+			}
+		}
+
+		return result;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocTransparencyPanel.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocTransparencyPanel.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocTransparencyPanel.java	(revision 29090)
@@ -0,0 +1,114 @@
+package org.gvsig.gvsig3dgui.tocMenu;
+
+import org.gvsig.gvsig3dgui.layer.TransparencyPanel;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
+import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
+
+public class TocTransparencyPanel extends AbstractTocContextMenuAction {
+
+	public String getGroup() {
+		return "group6"; // FIXME
+	}
+
+	public int getGroupOrder() {
+		return 60;
+	}
+
+	public int getOrder() {
+		return 10;
+	}
+
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		// return selectedItems.length == 1;
+
+		// return true;
+
+		boolean enable = false;
+
+		for (int i = 0; i < selectedItems.length; i++) {
+			FLayer layer = selectedItems[i];
+			int type = Layer3DProps.getLayer3DProps(layer).getType();
+			if (type == Layer3DProps.layer3DImage) {
+				enable = true;
+			}
+		}
+
+		return enable;
+
+		// if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrVect
+		// && selectedItems[0].isAvailable()) {
+		// return true;
+		// }
+		// if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrWMS
+		// && selectedItems[0].isAvailable()) {
+		// return true;
+		// }
+		// return false;
+
+	}
+
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		if (!isTocItemBranch(item))
+			return false;
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+//			return mapa.getLayers().getLayersCount() > 0;
+
+			FLayer[] selectedExtent = mapa.getLayers().getActives();
+
+			// If there is not one and is available
+			if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()) {
+				// // && (selectedExtent[0] instanceof FLyrVect)) {
+				FLayer lyr3D = selectedExtent[0];
+				Layer3DProps props = Layer3DProps.getLayer3DProps(lyr3D);
+				return (props.getType() == Layer3DProps.layer3DImage);
+			}
+
+		}
+		return false;
+	}
+
+	public void execute(ITocItem item, FLayer[] selectedItems) {
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+		// Casting to View3D
+		View3D vista3D = (View3D) view;
+		IProjectView model = vista3D.getModel();
+
+		// Generating transparency panel
+		TransparencyPanel transparencyPanel = new TransparencyPanel(model);
+		// Showing it
+		PluginServices.getMDIManager().addWindow(transparencyPanel);
+
+	}
+
+	public String getText() {
+		// Name that appears in toc menu
+		return "Transparencia";
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocRefreshLayer.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocRefreshLayer.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/tocMenu/TocRefreshLayer.java	(revision 29090)
@@ -0,0 +1,102 @@
+package org.gvsig.gvsig3dgui.tocMenu;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.fmap.layers.FLyrWMS;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
+import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
+import com.iver.cit.gvsig.project.documents.view.toc.TocItemBranch;
+
+public class TocRefreshLayer extends AbstractTocContextMenuAction {
+
+	public String getGroup() {
+		return "group6"; // FIXME
+	}
+
+	public int getGroupOrder() {
+		return 60;
+	}
+
+	public int getOrder() {
+		return 10;
+	}
+
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		// return selectedItems.length == 1;
+
+		if (item instanceof TocItemBranch){
+			return true;
+		}
+		
+		// return true;
+
+		if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrVect
+				&& selectedItems[0].isAvailable() && !(item instanceof TocItemBranch)) {
+			return true;
+		}
+		// TODO Un toggle this comment to use the WFS extension
+		if (selectedItems.length == 1 && selectedItems[0] instanceof FLyrWMS
+				&& selectedItems[0].isAvailable() && !(item instanceof TocItemBranch)) {
+			return true;
+		}/**/
+		return false;
+
+	}
+
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+		
+		if (!isTocItemBranch(item))
+			return false;
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			return mapa.getLayers().getLayersCount() > 0;
+		}
+		return false;
+	}
+
+	public void execute(ITocItem item, FLayer[] selectedItems) {
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+		// Casting to View3D
+		View3D vista3D = (View3D) view;
+		IProjectView model = vista3D.getModel();
+		
+		ProjectView3D pv = (ProjectView3D) model;
+		
+		for (int i = 0; i < selectedItems.length; i++) {
+//			System.out.println("Recargando capa :" + i);
+			((MapContext3D) pv.getMapContext()).refreshLayerInPlanet(Layer3DProps.getLayer3DProps(selectedItems[i]),true);
+		}
+
+	}
+
+	public String getText() {
+		// Name that appears in toc menu
+		return "Refrescar Capa";
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/InsertPosition.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/InsertPosition.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/InsertPosition.java	(revision 29090)
@@ -0,0 +1,484 @@
+/* gvSIG. Sistema de Informaciï¿½n Geogrï¿½fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibï¿½ï¿½ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.view;
+
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Enumeration;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gui.beans.swing.JButton;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.planets.Planet;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+/**
+ * Dialogo donde se muestran las propiedades de una vista
+ * 
+ * @author Fernando Gonzï¿½lez Cortï¿½s
+ */
+public class InsertPosition extends GridBagLayoutPanel implements
+		SingletonWindow {
+
+	private ProjectView3D view3D;
+
+	private JTextField txtName;
+
+	private JPanel jPanelSelectProjection;
+
+	private ButtonGroup radioButtonGroup;
+
+	private int width = 375;
+
+	private int height = 300;
+
+	private GridBagLayoutPanel okCancelPanel;
+
+	private JButton okButton;
+
+	private JButton cancelButton;
+
+	private GridBagLayoutPanel sphericalPanel;
+
+	private GridBagLayoutPanel cartesianasPanel;
+
+	private GridBagLayoutPanel coordPanel;
+
+	private JTextField coordX;
+
+	private JTextField coordY;
+
+	private JTextField coordZ;
+
+	private JTextField latG;
+
+	private JTextField lonG;
+
+	private JTextField altura;
+
+	private JTextField latH;
+
+	private JTextField lonH;
+
+	private JTextField latM;
+
+	private JTextField lonM;
+
+	private GridBagLayoutPanel cartesianasLatitudPanel;
+
+	private GridBagLayoutPanel cartesianasLongitudPanel;
+
+	/**
+	 * This is the default constructor
+	 * 
+	 * @param f
+	 *            Frame padre del dialogo
+	 * @param v
+	 *            Vista que se representa
+	 */
+	public InsertPosition(IProjectView v) {
+		view3D = (ProjectView3D) v;
+
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		// Inicialize component
+		setName("Insercion de punto 3D");
+		// Introducing the margin
+		setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
+		// Dimension of the panel
+		// setSize(new Dimension(width, height));
+		this.setPreferredSize(new Dimension(width, height));
+
+		// ADDING COMPONENTS
+
+		// Name Component
+		this.addComponent("Nombre:", getTxtName(), new Insets(0, 10, 2, 10));
+
+		// Projection selector (Radio buton group)
+//		this.addComponent("Seleccione proyecciï¿½n:",
+//				getJPanelSelectProjection(), new Insets(2, 10, 2, 10));
+
+//		this.addComponent(getSphericalPanel());
+		this.addComponent(getCoordPanel(), new Insets(2, 10, 2, 10));
+
+		// Accept buton
+		this.addComponent(getOkCancelPanel(), new Insets(2, 150, 2, 0));
+
+		// Inicialicing default values
+		coordX.setEnabled(true);
+		coordY.setEnabled(true);
+		coordZ.setEnabled(true);
+		
+		latG.setText("0");
+		lonG.setText("0");
+		latH.setText("0");
+		lonH.setText("0");
+		latM.setText("0");
+		lonM.setText("0");
+		latG.setEnabled(true);
+		lonG.setEnabled(true);
+		latH.setEnabled(true);
+		lonH.setEnabled(true);
+		latM.setEnabled(true);
+		lonM.setEnabled(true);
+		altura.setText("0");
+		altura.setEnabled(true);
+	}
+
+	private javax.swing.JTextField getTxtName() {
+		if (txtName == null) {
+			txtName = new javax.swing.JTextField();
+			txtName.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return txtName;
+	}
+
+	private JPanel getJPanelSelectProjection() {
+		if (jPanelSelectProjection == null) {
+			// Create JPanel
+			jPanelSelectProjection = new GridBagLayoutPanel();
+
+			if (radioButtonGroup == null) {
+				radioButtonGroup = getRadioButonGroup();
+			}
+			for (Enumeration e = radioButtonGroup.getElements(); e
+					.hasMoreElements();) {
+				JRadioButton b = (JRadioButton) e.nextElement();
+				jPanelSelectProjection.add(b, null);
+			}
+
+		}
+
+		return jPanelSelectProjection;
+	}
+
+	/**
+	 * Method to inicialize the radio button group
+	 * 
+	 * @return the radio button group
+	 */
+	private ButtonGroup getRadioButonGroup() {
+		if (radioButtonGroup == null) {
+
+			// Create an action for each radio button
+			Action sphericalAction = new AbstractAction("spherical") {
+				// This method is called whenever the radio button is pressed,
+				// even if it is already selected; this method is not called
+				// if the radio button was selected programmatically
+				public void actionPerformed(ActionEvent evt) {
+					sphericalPanel.setEnabled(true);
+					cartesianasPanel.setEnabled(false);
+					coordX.setEnabled(true);
+					coordY.setEnabled(true);
+					coordZ.setEnabled(true);
+					latG.setEnabled(false);
+					lonG.setEnabled(false);
+					altura.setEnabled(false);
+
+				}
+			};
+			Action flatAction = new AbstractAction("flat") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					sphericalPanel.setEnabled(false);
+					cartesianasPanel.setEnabled(true);
+					coordX.setEnabled(false);
+					coordY.setEnabled(false);
+					coordZ.setEnabled(false);
+					latG.setEnabled(true);
+					lonG.setEnabled(true);
+					altura.setEnabled(true);
+				}
+			};
+
+			// Create the radio buttons using the actions
+			JRadioButton spherical = new JRadioButton(sphericalAction);
+			JRadioButton flat = new JRadioButton(flatAction);
+
+			// Inicialize the button properties
+			spherical.setName("spherical");
+			spherical.setLabel("Esferica");
+			flat.setName("flat");
+			flat.setLabel("Plana");
+
+			if (view3D.getPlanetType() == Planet.CoordinateSystemType.GEOCENTRIC)
+				spherical.setSelected(true);
+			else
+				flat.setSelected(true);
+
+			// Associate the two buttons with a button group
+			radioButtonGroup = new ButtonGroup();
+			radioButtonGroup.add(spherical);
+			radioButtonGroup.add(flat);
+		}
+
+		return radioButtonGroup;
+	}
+
+	private GridBagLayoutPanel getCoordPanel() {
+		if (coordPanel == null) {
+			coordPanel = new GridBagLayoutPanel();
+			// coordPanel.addComponent(getSphericalPanel());
+			coordPanel.addComponent(getCartesianasPanel());
+			getSphericalPanel();
+		}
+
+		return coordPanel;
+	}
+
+	private GridBagLayoutPanel getSphericalPanel() {
+		if (sphericalPanel == null) {
+			sphericalPanel = new GridBagLayoutPanel();
+			sphericalPanel.setSize(new java.awt.Dimension(200, 100));
+			sphericalPanel.setPreferredSize(new java.awt.Dimension(200, 100));
+			sphericalPanel.addComponent("X ", getCoordX());
+			sphericalPanel.addComponent("Y ", getCoordY());
+			sphericalPanel.addComponent("Z ", getCoordZ());
+		}
+
+		return sphericalPanel;
+	}
+
+	private javax.swing.JTextField getCoordX() {
+		if (coordX == null) {
+			coordX = new javax.swing.JTextField();
+			coordX.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return coordX;
+	}
+
+	private javax.swing.JTextField getCoordY() {
+		if (coordY == null) {
+			coordY = new javax.swing.JTextField();
+			coordY.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return coordY;
+	}
+
+	private javax.swing.JTextField getCoordZ() {
+		if (coordZ == null) {
+			coordZ = new javax.swing.JTextField();
+			coordZ.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return coordZ;
+	}
+
+	private GridBagLayoutPanel getCartesianasPanel() {
+		if (cartesianasPanel == null) {
+			cartesianasPanel = new GridBagLayoutPanel();
+			latG = new JTextField();
+			latG.setPreferredSize(new java.awt.Dimension(40, 23));
+			latG.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			latG.setMargin(new Insets(2, 5, 2, 5));
+			lonG = new JTextField();
+			lonG.setPreferredSize(new java.awt.Dimension(40, 23));
+			lonG.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			lonG.setMargin(new Insets(2, 5, 2, 5));
+			latH = new JTextField();
+			latH.setPreferredSize(new java.awt.Dimension(40, 23));
+			latH.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			lonH = new JTextField();
+			lonH.setPreferredSize(new java.awt.Dimension(40, 23));
+			lonH.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			latM = new JTextField();
+			latM.setPreferredSize(new java.awt.Dimension(40, 23));
+			latM.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			lonM = new JTextField();
+			lonM.setPreferredSize(new java.awt.Dimension(40, 23));
+			lonM.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			altura = new JTextField();
+			altura.setPreferredSize(new java.awt.Dimension(40, 23));
+			altura.setAlignmentX(GridBagLayoutPanel.LEFT_ALIGNMENT);
+			cartesianasPanel.addComponent("Longitud",getCartesianasLongitudPanel());
+			cartesianasPanel.addComponent("Latitud ", getCartesianasLatitudPanel());
+			cartesianasPanel.addComponent("Altura  ", getHeithg());
+		}
+
+		return cartesianasPanel;
+	}
+	
+	private GridBagLayoutPanel getCartesianasLatitudPanel() {
+		if (cartesianasLatitudPanel == null) {
+			cartesianasLatitudPanel = new GridBagLayoutPanel();
+//			latG = new JTextField();
+//			latG.setPreferredSize(new java.awt.Dimension(50, 23));
+//			lonG = new JTextField();
+//			lonG.setPreferredSize(new java.awt.Dimension(50, 23));
+//			latH = new JTextField();
+//			latH.setPreferredSize(new java.awt.Dimension(50, 23));
+			cartesianasLatitudPanel.addComponent(latG,latH,latM);
+		}
+
+		return cartesianasLatitudPanel;
+	}
+	
+	private GridBagLayoutPanel getCartesianasLongitudPanel() {
+		if (cartesianasLongitudPanel == null) {
+			cartesianasLongitudPanel = new GridBagLayoutPanel();
+//			lonG = new JTextField();
+//			lonG.setPreferredSize(new java.awt.Dimension(50, 23));
+//			lonH = new JTextField();
+//			lonH.setPreferredSize(new java.awt.Dimension(50, 23));
+//			lonM = new JTextField();
+//			lonM.setPreferredSize(new java.awt.Dimension(50, 23));
+			cartesianasLongitudPanel.addComponent(lonG,lonH,lonM);
+		}
+
+		return cartesianasLongitudPanel;
+	}
+	
+
+
+	// private javax.swing.JTextField getLat() {
+	// if (latG == null) {
+	// latG = new javax.swing.JTextField();
+	// latG.setPreferredSize(new java.awt.Dimension(150, 23));
+	// }
+	//
+	// return latG;
+	// }
+	//
+	// private javax.swing.JTextField getLon() {
+	// if (lonG == null) {
+	// lonG = new javax.swing.JTextField();
+	// lonG.setPreferredSize(new java.awt.Dimension(150, 23));
+	// }
+	//
+	// return lonG;
+	//	}
+
+	private javax.swing.JTextField getHeithg() {
+		if (altura == null) {
+			altura = new javax.swing.JTextField();
+			altura.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return altura;
+	}
+
+	private GridBagLayoutPanel getOkCancelPanel() {
+		if (okCancelPanel == null) {
+			ActionListener okAction, cancelAction;
+			okAction = new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					//Pulsacion del boton de Aceptar
+					
+					if (latG.isEnabled()){
+						double h = Double.valueOf(altura.getText()).doubleValue();
+						
+						double lati = Double.valueOf(latG.getText()).doubleValue();
+						double longi = Double.valueOf(lonG.getText()).doubleValue();
+						lati = lati + (Double.valueOf(latG.getText()).doubleValue()/60);
+						longi = longi + (Double.valueOf(lonG.getText()).doubleValue()/60);
+						lati = lati + (Double.valueOf(latG.getText()).doubleValue()/3600);
+						longi = longi + (Double.valueOf(lonG.getText()).doubleValue()/3600);
+						
+//						Vec3 posicion = new Vec3(h,lati,longi);
+						Vec3 posicion = new Vec3(lati,longi,h);
+						view3D.insertaText(txtName.getText(),posicion);
+						
+					}
+					PluginServices.getMDIManager().closeWindow(
+							InsertPosition.this);
+				}
+			};
+			cancelAction = new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					PluginServices.getMDIManager().closeWindow(
+							InsertPosition.this);
+				}
+			};
+
+			okCancelPanel = new GridBagLayoutPanel();
+			okCancelPanel.setAlignmentX(GridBagLayoutPanel.RIGHT_ALIGNMENT);
+			okButton = new JButton();
+			okButton.setLabel("Aceptar");
+			okButton.addActionListener(okAction);
+			cancelButton = new JButton();
+			cancelButton.setLabel("Cancelar");
+			cancelButton.addActionListener(cancelAction);
+
+			okCancelPanel.addComponent(okButton, cancelButton);
+		}
+		return okCancelPanel;
+	}
+
+	public Object getWindowModel() {
+		// TODO Auto-generated method stub
+		return view3D;
+	}
+
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo();
+		m_viewinfo.setTitle("Insercion_de_punto_3D");
+		m_viewinfo.setHeight(height);
+		m_viewinfo.setWidth(width);
+		return m_viewinfo;
+	}
+	public Object getWindowProfile() {
+		return WindowInfo.DIALOG_PROFILE;
+	}
+
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewPropertiesExtension3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewPropertiesExtension3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewPropertiesExtension3D.java	(revision 29090)
@@ -0,0 +1,142 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.view;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class ViewPropertiesExtension3D extends Extension {
+	/**
+	 * DOCUMENT ME!
+	 */
+	public void initialize() {
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param s
+	 *            DOCUMENT ME!
+	 */
+	public void execute(String s) {
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+//		System.out.println("RECUPERADA LA VISTA 3D");
+		View3D vista3D = (View3D) view;
+		IProjectView model = vista3D.getModel();
+
+		if (s.equals("PROPERTIES")) {
+			ViewProperties3D viewProperties = new ViewProperties3D(vista3D.getModel(),false);
+			PluginServices.getMDIManager().addWindow(viewProperties);
+		}
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 */
+	public boolean isEnabled() {
+		return true;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 */
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (f == null) {
+			return false;
+		}
+		return (f instanceof View3D);
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewProperties3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewProperties3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/ViewProperties3D.java	(revision 29090)
@@ -0,0 +1,695 @@
+/* gvSIG. Sistema de Informaciï¿½n Geogrï¿½fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibï¿½ï¿½ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.view;
+
+import java.awt.Color;
+import java.awt.Component;
+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.util.Enumeration;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JColorChooser;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import org.cresques.cts.IProjection;
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gui.beans.swing.JButton;
+import org.gvsig.gvsig3d.map3d.layers.FLayers3D;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+import org.gvsig.osgvp.planets.Planet;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.crs.CRSFactory;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
+import com.iver.cit.gvsig.gui.panels.CRSSelectPanel;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+
+/**
+ * Dialogo donde se muestran las propiedades de una vista
+ * 
+ * @author 
+ */
+public class ViewProperties3D extends GridBagLayoutPanel implements
+		SingletonWindow {
+
+	private ProjectView3D view3D;
+
+	private JTextField txtName;
+
+	private JTextField txtDate;
+
+	private JTextField txtOwner;
+
+	private CRSSelectPanel jPanelProj;
+
+	private JPanel jPanelSelectProjection;
+
+	private ButtonGroup radioButtonGroupTypePlanet;
+	
+	private ButtonGroup radioButtonGroupProjection;
+
+	private int width = 700;
+
+	private int height = 600;
+
+	private JButton btnColor;
+
+	private JLabel lblColor;
+
+	private GridBagLayoutPanel panelColor;
+
+	private JScrollPane jScrollPane;
+
+	private JTextArea txtComments;
+	
+	private Color backColor;
+
+	private GridBagLayoutPanel okCancelPanel;
+	
+	private boolean editable;
+
+	private JButton okButton;
+
+	private JButton cancelButton;
+
+	private JTextField verEx;
+
+	private JTabbedPane pestanya;
+
+	private JPanel jPanelSelectProjectionView;
+	
+	private IProjection  proj;
+	
+	private boolean projectEditable = false;
+
+	/**
+	 * This is the default constructor
+	 * 
+	 * @param f
+	 *            Frame padre del dialogo
+	 * @param v
+	 *            Vista que se representa
+	 */
+	public ViewProperties3D(IProjectView v, boolean edit) {
+		projectEditable = edit;
+		view3D = (ProjectView3D) v;
+		proj = view3D.getProjection();
+		setEditable(edit);
+		initialize();
+	}
+
+	private void addComponentGridBag(String label, Component component, int position) {
+		if (label == null) {
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+	        gridBagConstraints.gridx = 0;
+	        gridBagConstraints.gridy = position;
+	        gridBagConstraints.anchor = GridBagConstraints.EAST;
+	        gridBagConstraints.gridwidth = 2;
+	        gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+	        this.add(component, gridBagConstraints);
+		} else {
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+	        gridBagConstraints.gridx = 0;
+	        gridBagConstraints.gridy = position;
+	        gridBagConstraints.anchor = GridBagConstraints.WEST;
+	        gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+	        this.add(new JLabel(label), gridBagConstraints);
+	        
+			gridBagConstraints = new GridBagConstraints();
+	        gridBagConstraints.gridx = 1;
+	        gridBagConstraints.gridy = position;
+	        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+	        gridBagConstraints.weightx = 1.0;
+	        gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+	        this.add(component, gridBagConstraints);
+		}
+	}
+	
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		this.setLayout(new GridBagLayout());
+		
+		// Inicialize component
+		setName(PluginServices.getText(this, "view_3D_properties"));
+		// Introducing the margin 
+		setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
+		// Dimension of the panel
+//		setSize(new Dimension(width, height));
+		this.setPreferredSize(new Dimension(width, height));
+		
+		// ADDING COMPONENTS
+		
+		// Name Component
+		addComponentGridBag(PluginServices.getText(this, "Name"), getTxtName(), 0);
+
+		// Date component
+		addComponentGridBag(PluginServices.getText(this, "Creation_Date"), getTxtDate(), 1);
+
+		// Owner component
+		
+		this.addComponentGridBag(PluginServices.getText(this, "Owner"), getTxtOwner(), 2);
+		// Projection selector (Radio buton group)
+		this.addComponentGridBag(PluginServices.getText(this, "Proyection_Select"), getJPanelSelectProjection(), 3);
+//		this.addComponent(PluginServices.getText(this, "Proyection_Select"),
+//				getJPanelSelectProjectionView(), new Insets(2,10,2,10));
+		this.addComponentGridBag(null, getJPanelProj(), 4);
+		
+		// Description component
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+        gridBagConstraints.gridx = 0;
+        gridBagConstraints.gridy = 5;
+        gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+        gridBagConstraints.anchor = GridBagConstraints.NORTHWEST;
+        this.add(new JLabel(PluginServices.getText(this, "Commentaries")), gridBagConstraints);
+        
+		gridBagConstraints = new GridBagConstraints();
+        gridBagConstraints.gridx = 1;
+        gridBagConstraints.gridy = 5;
+        gridBagConstraints.fill = GridBagConstraints.BOTH;
+        gridBagConstraints.weightx = 1.0;
+        gridBagConstraints.weighty = 1.0;
+        gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+        this.add(getJScrollPane(), gridBagConstraints);
+
+		// Vertical exaggeration
+		this.addComponentGridBag(PluginServices.getText(this, "Vertical_Exageration"), getVerEx(), 6);
+		
+		// Color Panel
+		panelColor = new GridBagLayoutPanel();
+		panelColor.add(getLblColor());
+		panelColor.add(getBtnColor());
+		this.addComponentGridBag(PluginServices.getText(this, "Background_Color"), panelColor, 7);
+		
+		// Accept buton
+		this.addComponentGridBag(null, getOkCancelPanel(), 8);
+		
+		// Inicialicing default values
+		this.txtName.setText(PluginServices.getText(this, "Creation_Date"));
+		txtName.setText(view3D.getName());
+		txtDate.setText(view3D.getCreationDate());
+		txtOwner.setText(view3D.getOwner());
+		txtComments.setText(view3D.getComment());
+		verEx.setText(Float.toString(view3D.getVerticalExaggeration()));
+		backColor = view3D.getBackGroundColor();
+		
+	}
+	
+	private javax.swing.JTextField getVerEx() {
+		if (verEx == null) {
+			verEx = new javax.swing.JTextField();
+			verEx.setHorizontalAlignment(JTextField.RIGHT);
+			verEx.setColumns(2);
+			verEx.setPreferredSize(new java.awt.Dimension(10, 23));
+		}
+
+		return verEx;
+	}
+	
+	
+	
+	private javax.swing.JTextField getTxtName() {
+		if (txtName == null) {
+			txtName = new javax.swing.JTextField();
+			txtName.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return txtName;
+	}
+
+	private javax.swing.JTextField getTxtDate() {
+		if (txtDate == null) {
+			txtDate = new javax.swing.JTextField();
+			txtDate.setPreferredSize(new java.awt.Dimension(150, 23));
+			txtDate.setEditable(false);
+			txtDate.setBackground(java.awt.Color.white);
+		}
+
+		return txtDate;
+	}
+
+	private javax.swing.JTextField getTxtOwner() {
+		if (txtOwner == null) {
+			txtOwner = new javax.swing.JTextField();
+			txtOwner.setPreferredSize(new java.awt.Dimension(150, 23));
+		}
+
+		return txtOwner;
+	}
+
+	private JPanel getJPanelSelectProjection() {
+		if (jPanelSelectProjection == null) {
+			// Create JPanel
+			jPanelSelectProjection = new GridBagLayoutPanel();
+			
+			if (radioButtonGroupTypePlanet == null) {
+				radioButtonGroupTypePlanet = getRadioButonGroupPlanetType();
+			}
+			for (Enumeration e = radioButtonGroupTypePlanet.getElements(); e
+					.hasMoreElements();) {
+				JRadioButton b = (JRadioButton) e.nextElement();
+				b.setEnabled(isEditable());
+				jPanelSelectProjection.add(b, null);
+			}
+
+		}
+
+		return jPanelSelectProjection;
+	}
+	
+	private JPanel getJPanelSelectProjectionView() {
+		if (jPanelSelectProjectionView == null) {
+			// Create JPanel
+			jPanelSelectProjectionView = new GridBagLayoutPanel();
+			
+			if (radioButtonGroupProjection == null) {
+				radioButtonGroupProjection = getRadioButonGroupProjection();
+			}
+			for (Enumeration e = radioButtonGroupProjection.getElements(); e
+					.hasMoreElements();) {
+				JRadioButton b = (JRadioButton) e.nextElement();
+				b.setEnabled(isEditable());
+				jPanelSelectProjectionView.add(b, null);
+			}
+
+		}
+
+		return jPanelSelectProjectionView;
+	}
+
+	/**
+	 * Method to inicialize the radio button group
+	 * 
+	 * @return the radio button group
+	 */
+	private ButtonGroup getRadioButonGroupPlanetType() {
+		if (radioButtonGroupTypePlanet == null) {
+
+			// Create an action for each radio button
+			Action sphericalAction = new AbstractAction("spherical") {
+				// This method is called whenever the radio button is pressed,
+				// even if it is already selected; this method is not called
+				// if the radio button was selected programmatically
+				public void actionPerformed(ActionEvent evt) {
+					view3D.setPlanetType(Planet.CoordinateSystemType.GEOCENTRIC);
+					proj= CRSFactory.getCRS("EPSG:4326");
+					setComponentProjection(proj);
+					
+				}
+			};
+			Action flatAction = new AbstractAction("flat") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					view3D.setPlanetType(Planet.CoordinateSystemType.PROJECTED);
+					proj = view3D.getProjection();
+					setComponentProjection(proj);
+				}
+			};
+			Action orthoAction = new AbstractAction("ortho") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					view3D.getCanvas3d().getOSGViewer().setProjectionMatrixAsOrtho(-10, 10, -10, 10, 1, 1000);
+//					view3D.setPlanetType(Planet.CoordinateSystemType.PROJECTED);
+				}
+			};
+
+			// Create the radio buttons using the actions
+			JRadioButton spherical = new JRadioButton(sphericalAction);
+			JRadioButton flat = new JRadioButton(flatAction);
+			JRadioButton ortho = new JRadioButton(orthoAction);
+
+			// Inicialize the button properties
+			spherical.setName("spherical");
+			spherical.setText(PluginServices.getText(this, "Spherical"));
+			flat.setName("flat");
+			flat.setText(PluginServices.getText(this, "Flat"));
+			ortho.setName("ortho");
+			ortho.setText(PluginServices.getText(this, "Ortho"));
+
+			if (view3D.getPlanetType()== Planet.CoordinateSystemType.GEOCENTRIC) {
+				spherical.setSelected(true);
+				//jPanelProj.setEnabled(false);
+			}
+			else
+				flat.setSelected(true);
+
+			// Associate the two buttons with a button group
+			radioButtonGroupTypePlanet = new ButtonGroup();
+			radioButtonGroupTypePlanet.add(spherical);
+			radioButtonGroupTypePlanet.add(flat);
+			
+			
+	//		}
+//			radioButtonGroupTypePlanet.add(ortho);
+		}
+
+		return radioButtonGroupTypePlanet;
+	}
+	
+
+	/**
+	 * Method to inicialize the radio button group
+	 * 
+	 * @return the radio button group
+	 */
+	private ButtonGroup getRadioButonGroupProjection() {
+		if (radioButtonGroupProjection == null) {
+
+			
+			Action prespectiveAction = new AbstractAction("perspective") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					// Active prespective mode into View 3D
+//					view3D.getCanvas3d().getOSGViewer().setProjectionMatrixAsPerspective(arg0, arg1, arg2, arg3);
+					if (!(view3D.isPrespectiveModeActive())){
+						view3D.setActivePrespectiveMode(true);
+					}	
+				}
+			};
+			Action orthoAction = new AbstractAction("ortho") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					// Active ortho mode into View 3D
+					if (view3D.isPrespectiveModeActive()){
+						view3D.setActivePrespectiveMode(false);
+					}
+//					view3D.getCanvas3d().getOSGViewer().setProjectionMatrixAsOrtho(-10, 10, -10, 10, 1, 1000);
+				}
+			};
+
+			// Create the radio buttons using the actions
+			JRadioButton ortho = new JRadioButton(orthoAction);
+			JRadioButton prespective = new JRadioButton(prespectiveAction);
+			
+			// Inicialize the button properties
+			ortho.setName("ortho");
+			ortho.setText(PluginServices.getText(this, "Ortho"));
+			ortho.setSelected(false);
+			prespective.setName("prespective");
+			prespective.setText(PluginServices.getText(this, "Prespective"));
+			prespective.setSelected(true);
+
+
+			// Associate the two buttons with a button group
+			radioButtonGroupProjection = new ButtonGroup();
+			radioButtonGroupProjection.add(prespective);
+			radioButtonGroupProjection.add(ortho);
+		}
+
+		return radioButtonGroupProjection;
+	}
+
+	private javax.swing.JLabel getLblColor() {
+		if (lblColor == null) {
+			lblColor = new javax.swing.JLabel();
+			lblColor.setText("");
+			lblColor.setPreferredSize(new java.awt.Dimension(30, 16));
+			 Color theColor = view3D.getBackGroundColor();
+			
+			if (theColor == null)
+				theColor = Color.WHITE;
+			lblColor.setBackground(theColor);
+			lblColor.setOpaque(true);
+		}
+
+		return lblColor;
+	}
+
+	private JButton getBtnColor() {
+		if (btnColor == null) {
+			btnColor = new JButton();
+
+			btnColor.setText("...");
+
+			btnColor.addActionListener(new java.awt.event.ActionListener() {
+				
+
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					Color ret = JColorChooser.showDialog(ViewProperties3D.this,
+							PluginServices.getText(this, "Select_Color"), lblColor.getBackground());
+
+					if (ret != null) {
+						lblColor.setBackground(ret);
+						backColor = ret;
+					} else
+						lblColor.setBackground(Color.WHITE);
+				}
+			});
+		}
+
+		return btnColor;
+	}
+
+	
+	private javax.swing.JScrollPane getJScrollPane() {
+		if (jScrollPane == null) {
+			jScrollPane = new javax.swing.JScrollPane();
+			jScrollPane.setViewportView(getTxtComments());
+			jScrollPane.setPreferredSize(new java.awt.Dimension(340, 70));
+		}
+
+		return jScrollPane;
+	}
+	
+	private javax.swing.JTextArea getTxtComments() {
+		if (txtComments == null) {
+			txtComments = new javax.swing.JTextArea();
+			txtComments.setRows(1);
+			txtComments.setColumns(28);
+		}
+
+		return txtComments;
+	}
+	
+	
+	private GridBagLayoutPanel getOkCancelPanel() {
+		if (okCancelPanel == null) {
+			ActionListener okAction, cancelAction;
+			okAction = new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					view3D.setName(txtName.getText());
+					view3D.setCreationDate(txtDate.getText());
+					view3D.setOwner(txtOwner.getText());
+					view3D.setComment(txtComments.getText());
+					view3D.setBackGroundColor(backColor);
+					// TODO: poner la exageracion vertical
+//					view3D.set)
+//					setVerticalExaggeration();
+					
+					proj = jPanelProj.getCurProj();
+					setVerticalEx(Float.parseFloat(verEx.getText()));
+					view3D.setVerticalExaggeration(Float.parseFloat(verEx.getText()));
+					view3D.setProjection(proj);
+					PluginServices.getMDIManager().closeWindow(ViewProperties3D.this);
+				}
+			};
+			cancelAction = new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					PluginServices.getMDIManager().closeWindow(ViewProperties3D.this);
+				}
+			};
+			
+			okCancelPanel = new GridBagLayoutPanel();
+			okCancelPanel.setAlignmentX(GridBagLayoutPanel.RIGHT_ALIGNMENT);
+			okButton = new JButton();
+			okButton.setText(PluginServices.getText(this, "Accept"));
+			okButton.addActionListener(okAction);
+			cancelButton = new JButton();
+			cancelButton.setEnabled(!isEditable());
+			cancelButton.setText(PluginServices.getText(this, "Cancel"));
+			cancelButton.addActionListener(cancelAction);
+			
+			okCancelPanel.addComponent(okButton,cancelButton);
+		}
+		return okCancelPanel;
+	}
+	
+
+	public Object getWindowModel() {
+		return view3D;
+	}
+
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo();
+		m_viewinfo.setTitle(PluginServices.getText(this, "view_3D_properties"));
+		m_viewinfo.setHeight(height);
+		m_viewinfo.setWidth(width);
+		return m_viewinfo;
+	}
+
+	public boolean isEditable() {
+		return editable;
+	}
+
+	public void setEditable(boolean editable) {
+		this.editable = editable;
+	}
+	
+	public void setVerticalEx(float exa){
+		
+		SingleLayerIterator lyrIterator = new SingleLayerIterator((FLayers3D)view3D.getMapContext().getLayers());
+		while (lyrIterator.hasNext()) {
+			FLayer lyr = lyrIterator.next();
+			
+			Layer3DProps props = Layer3DProps.getLayer3DProps(lyr);
+			int type = props.getType();
+			if (exa != props.getVerticalEx()){
+				if (type == Layer3DProps.layer3DElevation){
+					int order = props.getPlanetOrder();
+					props.setVerticalEx(exa);
+					view3D.getPlanet().setVerticalExaggerationLayer(order, props.getVerticalEx());
+				} else if (type == Layer3DProps.layer3DVector){
+					int order = props.getPlanetOrder();
+					props.setVerticalEx(exa);
+				}
+			}
+			
+			
+		}
+	}
+	
+	private CRSSelectPanel getJPanelProj() {
+ 		
+		IProjection projectionAux = null;
+		IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
+		if (activeWindow instanceof View3D) {
+			BaseView activeView = (View3D)activeWindow;
+			projectionAux = activeView.getProjection();
+			activeView.setProjection(proj);
+		}
+
+		jPanelProj = CRSSelectPanel.getPanel(proj);
+
+		if (activeWindow instanceof View3D) {
+			BaseView activeView = (View3D)activeWindow;
+			activeView.setProjection(projectionAux);
+		}
+		
+		
+		jPanelProj.setPreferredSize(new java.awt.Dimension(330,35));
+		
+		
+		jPanelProj.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent e) {
+				if (jPanelProj.isOkPressed()) {
+//					IProjection projectionSelected = jPanelProj.getCurProj();
+//					System.out.println("Proyección seleccionada.: " + projectionSelected.getAbrev());
+//						if (!jPanelProj.getCurProj().isProjected()) {
+////							if (getCmbMapUnits().getItemCount()==MapContext.NAMES.length) {
+////								getCmbMapUnits().addItem(PluginServices.getText(this, Attributes.DEGREES));
+////							}
+//							getCmbMapUnits().setSelectedItem(PluginServices.getText(this, Attributes.DEGREES));
+//							getCmbMapUnits().setEnabled(false);
+//						}else {
+//							if (getCmbMapUnits().getSelectedItem().equals(PluginServices.getText(this, Attributes.DEGREES))) {
+//								getCmbMapUnits().setSelectedIndex(1);
+//								getCmbMapUnits().setEnabled(true);
+//							}
+////							if (!(getCmbMapUnits().getItemCount()==MapContext.NAMES.length)) {
+////								getCmbMapUnits().removeItem(PluginServices.getText(this, Attributes.DEGREES));
+////							}
+//						}
+					
+						//New projection selected.
+						view3D.setProjection(jPanelProj.getCurProj());
+						
+						
+				}
+			}
+		});
+		
+		Component[] cs=jPanelProj.getComponents();
+	//	 Projection options disabled in spherical view.
+		if(view3D.getPlanetType() == Planet.CoordinateSystemType.GEOCENTRIC){
+			proj= CRSFactory.getCRS("EPSG:4326");
+			for (int i = 0; i < cs.length; i++) {
+				cs[i].setEnabled(false);
+			}
+		}
+		// Projection options disabled in flat view.
+		else{
+			if(!projectEditable) {
+				proj = view3D.getProjection();
+				for (int i = 0; i < cs.length; i++) {
+						cs[i].setEnabled(false);
+					}
+				}
+			}
+		
+		
+		return jPanelProj;
+	}
+	
+	private void setComponentProjection(IProjection projection) {
+		proj = projection;
+		this.remove(jPanelProj);
+		jPanelProj = null;
+		
+		this.addComponentGridBag(null, getJPanelProj(), 4);
+		this.validate();
+		
+	}
+	public Object getWindowProfile() {
+		return WindowInfo.PROPERTIES_PROFILE;
+	}
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/Export.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/Export.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/Export.java	(revision 29090)
@@ -0,0 +1,292 @@
+/*
+ * Created on 1-dic-2007
+ *
+ * To change the template for this generated file go to
+ * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ */
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.view;
+
+import java.awt.Component;
+import java.io.File;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileFilter;
+
+import org.gvsig.osgvp.viewer.IViewerContainer;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+
+
+
+/**
+ * Extensión para exportar en algunos formatos raster la vista3D actual.
+ *
+ * @author Ángel Fraile.
+ */
+public class Export extends Extension {
+	private String lastPath = null;
+	private String path = null;
+	private Hashtable cmsExtensionsSupported = null;
+	private Hashtable jimiExtensionsSupported = null;
+	private IViewerContainer m_canvas3d = null;
+	private String arg0;
+
+	/**
+	 * @see com.iver.andami.plugins.IExtension#isEnabled()
+	 */
+	public boolean isEnabled() {
+		
+		View3D f = (View3D) PluginServices.getMDIManager().getActiveWindow();
+
+		if (f == null) {//Si no es una vista3D.
+			return false;
+		}
+		//es una vista 3D, miro sus capas.
+		FLayers layers = f.getModel().getMapContext().getLayers();
+		for (int i=0;i< layers.getLayersCount();i++) {
+			return layers.getLayer(i).isAvailable();
+		}
+		return false;
+
+	}
+
+	/**
+	 * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+	 */
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = (com.iver.andami.ui.mdiManager.IWindow) 
+		PluginServices.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		return (f instanceof View3D);
+	}
+
+	/**
+	 * @see com.iver.andami.plugins.IExtension#initialize()
+	 */
+	public void initialize() {
+	}
+
+	/* (non-Javadoc)
+	 * @see com.iver.andami.plugins.Extension#postInitialize()
+	 */
+	public void postInitialize() {
+		cmsExtensionsSupported = new Hashtable();
+		jimiExtensionsSupported = new Hashtable();
+		jimiExtensionsSupported.put("png",new MyFileFilter("png",
+				PluginServices.getText(this, "png"), "jimi"));
+		cmsExtensionsSupported.put("jpg", new MyFileFilter("jpg",
+				PluginServices.getText(this, "jpg"), "cms"));		
+//		jimiExtensionsSupported.put("bmp",new MyFileFilter("bmp",
+//				PluginServices.getText(this, "bmp"), "jimi"));
+
+
+	}
+
+	/**
+	 * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
+	 */
+	public void execute(String actionCommand) {
+		JFileChooser jfc = new JFileChooser(lastPath);
+		jfc.removeChoosableFileFilter(jfc.getAcceptAllFileFilter());
+		Iterator iter;
+		
+		iter = cmsExtensionsSupported.values().iterator();
+		while (iter.hasNext()){
+			jfc.addChoosableFileFilter((FileFilter)iter.next());
+		}
+
+		iter = jimiExtensionsSupported.values().iterator();
+		while (iter.hasNext()){
+			jfc.addChoosableFileFilter((FileFilter)iter.next());
+		}
+
+		jfc.setFileFilter((FileFilter)jimiExtensionsSupported.get("png"));
+		if (jfc.showSaveDialog((Component) PluginServices.getMainFrame())==JFileChooser.APPROVE_OPTION){
+			
+			com.iver.andami.ui.mdiManager.IWindow activeWindow = PluginServices
+			.getMDIManager().getActiveWindow();
+			File f = jfc.getSelectedFile();
+				if (f.exists()){//file exists in the directory.
+					int resp = JOptionPane.showConfirmDialog(
+							(Component) PluginServices.getMainFrame(),
+							PluginServices.getText(this,
+									"fichero_ya_existe_seguro_desea_guardarlo")+
+									"\n"+
+									f.getAbsolutePath(),
+							PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION);
+					if (resp != JOptionPane.YES_OPTION) {//cancel pressed.
+						return;
+					}
+				}//if exits.
+				if (activeWindow instanceof View3D ) {
+					View3D view3D;
+					view3D = (View3D) activeWindow;
+					MyFileFilter filter = (MyFileFilter)jfc.getFileFilter();// png, jpg
+					f = filter.normalizeExtension(f);//"name" + "." + "png", "name" + "." + "jpg".
+					view3D.getCanvas3d().getOSGViewer().takeScreenshot(f.getAbsolutePath());//screen snapshop.
+			}//if activeWindow.
+		}//If aprove option.
+	}//void execute.
+}//end class.
+
+
+/**
+*
+* @version 14/08/2007
+* @author Borja Sánchez Zamorano (borja.sanchez@iver.es)
+*
+*/
+class MyFileFilter extends FileFilter{
+
+	private String[] extensiones=new String[1];
+	private String description;
+	private boolean dirs = true;
+	private String info= null;
+
+	public MyFileFilter(String[] ext, String desc) {
+		extensiones = ext;
+		description = desc;
+	}
+
+	public MyFileFilter(String[] ext, String desc,String info) {
+		extensiones = ext;
+		description = desc;
+		this.info = info;
+	}
+
+	public MyFileFilter(String ext, String desc) {
+		extensiones[0] = ext;
+		description = desc;
+	}
+
+	public MyFileFilter(String ext, String desc,String info) {
+		extensiones[0] = ext;
+		description = desc;
+		this.info = info;
+	}
+
+	public MyFileFilter(String ext, String desc, boolean dirs) {
+		extensiones[0] = ext;
+		description = desc;
+		this.dirs = dirs;
+	}
+
+	public MyFileFilter(String ext, String desc, boolean dirs,String info) {
+		extensiones[0] = ext;
+		description = desc;
+		this.dirs = dirs;
+		this.info = info;
+	}
+
+	public boolean accept(File f) {
+		if (f.isDirectory()) {
+			if (dirs) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+		for (int i=0;i<extensiones.length;i++){
+			if (extensiones[i].equals("")){
+				continue;
+			}
+			if (getExtensionOfAFile(f).equalsIgnoreCase(extensiones[i])){
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * @see javax.swing.filechooser.FileFilter#getDescription()
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	public String[] getExtensions() {
+		return extensiones;
+	}
+
+	public boolean isDirectory(){
+		return dirs;
+	}
+
+	private String getExtensionOfAFile(File file){
+		String name;
+		int dotPos;
+		name = file.getName();
+		dotPos = name.lastIndexOf(".");
+		if (dotPos < 1){
+			return "";
+		}
+		return name.substring(dotPos+1);
+	}
+
+	public File normalizeExtension(File file){
+		String ext = getExtensionOfAFile(file);
+		if (ext.equals("") || !(this.accept(file))){
+			return new File(file.getAbsolutePath() + "." + extensiones[0]);
+		}
+		return file;
+	}
+
+	public String getInfo(){
+		return this.info;
+	}
+
+	public void setInfo(String info){
+		this.info = info;
+	}
+
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/View3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/View3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/view/View3D.java	(revision 29090)
@@ -0,0 +1,465 @@
+/* Generated by Together */
+
+package org.gvsig.gvsig3dgui.view;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Toolkit;
+import java.awt.geom.Rectangle2D;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.net.URL;
+
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.JSplitPane;
+
+import org.cresques.cts.IProjection;
+import org.gvsig.gvsig3d.listener.canvasListener;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.MapControl3D;
+import org.gvsig.gvsig3d.map3d.ViewPort3D;
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+import org.gvsig.gvsig3dgui.behavior.RectangleBehavior3D;
+import org.gvsig.gvsig3dgui.listener.PointSelectListerner3D;
+import org.gvsig.gvsig3dgui.listener.RectangleSelectListener3D;
+import org.gvsig.osgvp.planets.Planet;
+import org.gvsig.osgvp.planets.RequestLayerListener;
+import org.gvsig.osgvp.viewer.Camera;
+import org.gvsig.osgvp.viewer.DisplaySettings;
+import org.gvsig.osgvp.viewer.IViewerContainer;
+import org.gvsig.osgvp.viewer.OSGViewer;
+
+import com.iver.ai2.gvsig3d.resources.ResourcesFactory;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.ColorEvent;
+import com.iver.cit.gvsig.fmap.ExtentEvent;
+import com.iver.cit.gvsig.fmap.ProjectionEvent;
+import com.iver.cit.gvsig.fmap.ViewPort;
+import com.iver.cit.gvsig.fmap.ViewPortListener;
+import com.iver.cit.gvsig.fmap.MapControl.MapToolListener;
+import com.iver.cit.gvsig.fmap.crs.CRSFactory;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
+import com.iver.cit.gvsig.fmap.tools.Behavior.PointBehavior;
+import com.iver.cit.gvsig.project.documents.view.MapOverview;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.cit.gvsig.project.documents.view.toc.gui.TOC;
+import com.iver.cit.gvsig.project.documents.view.toolListeners.InfoListener;
+
+public class View3D extends BaseView {
+
+	private static final long serialVersionUID = 1L;
+
+	private IViewerContainer m_canvas3d;
+
+	private Planet m_planet;
+
+	private FLayers m_layers;
+
+	private UpdateView3D updateViewThread;
+
+	private NavigationMode navMode = null;
+
+	private String buttonPath;
+
+	public View3D() {
+		this.setName("View3D");
+		
+	}
+
+	public DisplaySettings getDisplaySettings() {
+
+		return ((OSGViewer) getCanvas3d().getOSGViewer()).getDisplaySettings();
+
+	}
+
+	public void setModel(ProjectView3D model) {
+		this.modelo = model;
+
+		initComponents();
+
+		// Se registra como listener de cambios en FMap
+		MapContext3D fmap = (MapContext3D) modelo.getMapContext();
+
+		m_layers = fmap.getLayers();
+		/*
+		 * for (int i=0;i<layers.getLayersCount();i++){ if
+		 * (layers.getLayer(i).isEditing() && layers.getLayer(i) instanceof
+		 * FLyrVect){ this.showConsole(); } }
+		 */
+
+		// Make layers listen to tile requests
+		m_planet.setRequestLayerListener((RequestLayerListener) fmap);
+		// .getTileListener();
+		// tileManager.setTileCreatedListener((TileCreatedListener) fmap);
+		// tileManager.setRequestLayerListener((RequestLayerListener) fmap);
+
+		// set projection for 3D view
+		IProjection projection = null;
+		ViewPort vp = null;
+		Rectangle2D extend;
+		if (m_planet.getCoordinateSystemType() == Planet.CoordinateSystemType.GEOCENTRIC) {
+			projection = CRSFactory.getCRS("EPSG:4326");
+			extend = new Rectangle2D.Double(-180.0, 90.0, 180.0, -90.0);
+		} else {
+			if ((fmap != null) && (fmap.getProjection() != null))
+				projection = fmap.getProjection();
+			else
+				projection = CRSFactory.getCRS("EPSG:23030"); // test
+			// projection = CRSFactory.getCRS("EPSG:4326"); // test
+			// extend = new Rectangle2D.Double(-20000000.0, 10000000.0,
+			// 40000000.0, 20000000.0);
+			extend = new Rectangle2D.Double(20000000.0, 10000000.0,
+					-20000000.0, -10000000.0);
+		}
+		vp = new ViewPort3D(projection);
+		vp.setExtent(extend);
+		fmap.setViewPort(vp);
+		((ViewPort3D) vp).setPlanet(this.m_planet);
+
+		// Add ViewPort3D listener to canvas3D. to refresh locator.
+		m_canvas3d.addMouseListener((ViewPort3D) vp);
+
+		// Pass JOSG objects to MapContext3D
+		fmap.setViewer(m_canvas3d);
+		fmap.setViewProjection(projection);
+		fmap.setPlanet(m_planet);
+
+		// Se configura el mapControl
+
+		canvasListener lis = new canvasListener();
+		lis.setPlanet(m_planet);
+		lis.setCanvas(m_canvas3d);
+		m_canvas3d.addKeyListener(lis);
+		m_canvas3d.addMouseListener(lis);
+
+		MapToolListener mapToolListener = m_MapControl.getMapToolListener();
+		m_canvas3d.addMouseListener(mapToolListener);
+		m_canvas3d.addMouseMotionListener(mapToolListener);
+		m_canvas3d.addMouseWheelListener(mapToolListener);
+
+		m_MapControl.setMapContext(fmap);
+		m_TOC.setMapContext(fmap);
+		m_MapControl.setBackground(new Color(255, 255, 255));
+		if (modelo.getMapOverViewContext() != null) {
+			m_MapLoc.setModel(modelo.getMapOverViewContext());
+		}
+		model.addPropertyChangeListener(new PropertyChangeListener() {
+			public void propertyChange(PropertyChangeEvent evt) {
+				if (evt.getPropertyName().equals("name")) {
+					PluginServices.getMDIManager().getWindowInfo(View3D.this)
+							.setTitle(
+									PluginServices.getText(this, "Vista3D")
+											+ " : "
+											+ (String) evt.getNewValue());
+				}
+			}
+		});
+		if (m_MapControl.getViewPort() != null) {
+			m_MapControl.getViewPort().addViewPortListener(
+					new ViewPortListener() {
+						public void extentChanged(ExtentEvent e) {
+							/*
+							 * if (PluginServices.getMainFrame() != null){
+							 * PluginServices.getMainFrame().getStatusBar().setControlValue("scale",String.valueOf(m_MapControl.getMapContext().getScaleView()));
+							 * PluginServices.getMainFrame().getStatusBar().setMessage("projection",
+							 * getMapControl().getViewPort().getProjection().getAbrev()); }
+							 */
+						}
+
+						public void backColorChanged(ColorEvent e) {
+						}
+
+						public void projectionChanged(ProjectionEvent e) {
+							m_MapLoc.setProjection(e.getNewProjection());
+						}
+					});
+		}
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 */
+	// FALTA CONVERTIR QUE CANVAS3D HAGA EL PAPEL DE m_MapControl
+	protected void initComponents() { // GEN-BEGIN:initComponents
+		m_MapControl = new MapControl3D(this); // Default is paintEnabled =
+												// false.
+		// Remember to activate it
+		m_MapControl.addExceptionListener(mapControlExceptionListener);
+		// modelo.setMapContext(m_MapControl.getMapContext());
+
+		// m_MapControl.setAcceptEvents(true); Lo comento porque ya se hace en
+		// el setModel
+		m_TOC = new TOC();
+
+		// Ponemos el localizador
+		m_MapLoc = new MapOverview(m_MapControl);
+		m_MapLoc.setPreferredSize(new Dimension(150, 200));
+		removeAll();
+		tempMainSplit = new ViewSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+		tempMainSplit.setPreferredSize(new Dimension(500, 300));
+		if (!isPalette()) {
+			JSplitPane tempSplitToc = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+			tempSplitToc.setTopComponent(m_TOC);
+			tempSplitToc.setBottomComponent(m_MapLoc);
+			tempSplitToc.setResizeWeight(0.7);
+			tempMainSplit.setLeftComponent(tempSplitToc);
+		} else {
+			tempMainSplit.setLeftComponent(m_TOC);
+		}
+		m_TOC.setVisible(true);
+		JPanel panel = new JPanel();
+		panel.setLayout(new BorderLayout());
+		panel.add((Component) m_canvas3d /* m_MapControl */);
+		tempMainSplit.setRightComponent(panel);
+		panel.setMinimumSize(new Dimension(100, 100));
+		// split.setBottomComponent(getConsolePanel());
+		// split.setTopComponent(tempMainSplit);
+		// split.setResizeWeight(0.9);
+		this.setLayout(new BorderLayout());
+		this.add(tempMainSplit, BorderLayout.CENTER);
+
+		// default cursor
+
+		String oldPath = ResourcesFactory.getExtPath();// Save the path.
+		ResourcesFactory
+				.setExtPath("/gvSIG/extensiones/com.iver.ai2.gvsig3dgui/images/");// my
+																					// new
+																					// path
+		buttonPath = ResourcesFactory.getResourcesPath();
+		ResourcesFactory.setExtPath(oldPath);// Restore the old path.
+		System.out.println(oldPath);
+		System.out.println(buttonPath);
+
+		URL path;
+		path = this.getClass().getClassLoader().getResource("images/");
+		buttonPath = path.getPath();
+
+		Image navCursorImage = new ImageIcon(buttonPath
+				+ "/NavigationCursor.gif").getImage();
+
+		// Image navCursorImage = new ImageIcon(this.getClass().getResource(
+		// "images/NavigationCursor.gif")).getImage();
+		Cursor navCursor = Toolkit.getDefaultToolkit().createCustomCursor(
+				navCursorImage, new Point(16, 16), "");
+		((Component) m_canvas3d).setCursor(navCursor);
+
+		// hideConsole();
+
+		// //Listener de eventos de movimiento que pone las coordenadas del
+		// ratï¿½n en la barra de estado
+		// StatusBarListener sbl = new StatusBarListener(m_MapControl);
+		//
+		// // Zoom out (pinchas y el mapa se centra y te muestra mï¿½s).
+		// // No es dibujando un rectï¿½ngulo, es solo pinchando.
+		//
+		// ZoomOutListener zol = new ZoomOutListener(m_MapControl);
+		// m_MapControl.addMapTool("zoomOut", new Behavior[]{new
+		// PointBehavior(zol), new MouseMovementBehavior(sbl)});
+		//
+		// // pan
+		//
+		// PanListener pl = new PanListener(m_MapControl);
+		// m_MapControl.addMapTool("pan", new Behavior[]{new MoveBehavior(pl),
+		// new MouseMovementBehavior(sbl)});
+		//
+		// // Medir
+		//
+		// MeasureListener mli = new MeasureListener(m_MapControl);
+		// m_MapControl.addMapTool("medicion", new Behavior[]{new
+		// PolylineBehavior(mli), new MouseMovementBehavior(sbl)});
+		//
+		// // Area
+		//
+		// AreaListener ali = new AreaListener(m_MapControl);
+		// m_MapControl.addMapTool("area", new Behavior[]{new
+		// PolygonBehavior(ali), new MouseMovementBehavior(sbl)});
+		//
+		// Seleccion por punto
+
+		PointSelectListerner3D psl = new PointSelectListerner3D(m_MapControl);
+		m_MapControl.addMapTool("pointSelection",
+				new Behavior[] { new PointBehavior(psl) });
+		//
+		// Info por punto
+		InfoListener il = new InfoListener(m_MapControl);
+		m_MapControl.addMapTool("info",
+				new Behavior[] { new PointBehavior(il) });
+		// new MouseMovementBehavior(sbl)});
+		//
+		// // Link por punto
+		// LinkListener ll = new LinkListener(m_MapControl);
+		// m_MapControl.addMapTool("link", new Behavior[]{new PointBehavior(ll),
+		// new MouseMovementBehavior(sbl)});
+		//
+		// Selecciï¿½n por rectï¿½ngulo
+		RectangleSelectListener3D rsl = new RectangleSelectListener3D(
+				m_MapControl);
+		m_MapControl.addMapTool("rectSelection",
+				new Behavior[] { new RectangleBehavior3D(rsl) });
+		//
+		// //Selecciï¿½n por polï¿½gono
+		// PolygonSelectListener poligSel = new
+		// PolygonSelectListener(m_MapControl);
+		// m_MapControl.addMapTool("polSelection", new Behavior[]{new
+		// PolygonBehavior(poligSel), new MouseMovementBehavior(sbl)});
+		//
+		// // Zoom por rectï¿½ngulo
+		// ZoomOutRightButtonListener zoil = new
+		// ZoomOutRightButtonListener(m_MapControl);
+		// ZoomInListener zil = new ZoomInListener(m_MapControl);
+		// m_MapControl.addMapTool("zoomIn", new Behavior[]{new
+		// RectangleBehavior(zil),
+		// new PointBehavior(zoil), new MouseMovementBehavior(sbl)});
+		//
+		// SelectImageListener sil = new SelectImageListener(m_MapControl);
+		// m_MapControl.addMapTool("selectImage", new Behavior[]{
+		// new PointBehavior(sil), new MouseMovementBehavior(sbl)});
+		//
+		// ZoomPixelCursorListener zp = new
+		// ZoomPixelCursorListener(m_MapControl);
+		// m_MapControl.addMapTool("zoom_pixel_cursor", new Behavior[]{new
+		// PointBehavior(zp), new MouseMovementBehavior(sbl)});
+		//
+		// m_MapControl.setTool("zoomIn"); // Por defecto
+		// m_MapControl.setPaintEnabled(true);
+	}
+
+	public WindowInfo getWindowInfo() {
+		if (m_viewInfo == null) {
+			m_viewInfo = new WindowInfo(WindowInfo.ICONIFIABLE
+					| WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
+
+			m_viewInfo.setWidth(500);
+			m_viewInfo.setHeight(300);
+			m_viewInfo.setTitle(PluginServices.getText(this, "Vista3D") + " : "
+					+ modelo.getName());
+		}
+		return m_viewInfo;
+	}
+
+	public IViewerContainer getCanvas3d() {
+		return m_canvas3d;
+	}
+
+	public void setCanvas3d(IViewerContainer canvas3d) {
+		m_canvas3d = canvas3d;
+
+		// Launching slider update
+		// Create the object with the run() method
+		updateViewThread = new UpdateView3D(30000);
+
+		// Create the thread supplying it with the runnable object
+		Thread thread = new Thread(updateViewThread);
+
+		// Start the thread
+		thread.start();
+	}
+
+	public Planet getPlanet() {
+		return m_planet;
+	}
+
+	public void setPlanet(Planet planet) {
+		if (m_canvas3d == null)
+			return;
+		m_planet = planet;
+
+		// Preguntar a rafa si cuando se hace un setSceneData se cuelga un nodo
+		// nuevo o se destruye el grafo entero y se crea de nuevo
+		// m_canvas3d.setSceneData(m_planet);
+	}
+
+	public void windowActivated() {
+		m_canvas3d.repaint();
+
+	}
+
+	public void windowClosed() {
+		super.windowClosed();
+	}
+
+	public void repaint() {
+		if (m_canvas3d != null)
+			m_canvas3d.repaint();
+		super.repaint();
+	}
+
+	public Camera getCamera() {
+		return getCanvas3d().getOSGViewer().getCamera();
+	}
+
+	public void setCamera(Camera camera) {
+		getCanvas3d().getOSGViewer().setCamera(camera);
+	}
+
+	/**
+	 * Class to repaint canvas 3D. This class implements runnable and contructor
+	 * with time parameter.
+	 * 
+	 * @author julio
+	 * 
+	 */
+	public class UpdateView3D implements Runnable {
+
+		private boolean finish = false;
+
+		private long time;
+
+		public UpdateView3D(long time) {
+			this.time = time;
+		}
+
+		// This method is called when the thread runs
+		public void run() {
+			while (true) {
+				try {
+					Thread.sleep(time);
+					synchronized (this) {
+						if (finish) {
+							break;
+						}
+					}
+				} catch (InterruptedException e) {
+
+					e.printStackTrace();
+				}
+				// Repainting canvas
+				m_canvas3d.repaint();
+			}
+		}
+
+		public synchronized void end() {
+			finish = true;
+		}
+
+		public long getTime() {
+			return time;
+		}
+
+		public void setTime(long time) {
+			this.time = time;
+		}
+
+	}
+
+	public NavigationMode getNavMode() {
+		return navMode;
+	}
+
+	public void setNavMode(NavigationMode navMode) {
+		this.navMode = navMode;
+	}
+
+	public Object getWindowProfile() {
+		return WindowInfo.EDITOR_PROFILE;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/TransparencyPanel.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/TransparencyPanel.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/TransparencyPanel.java	(revision 29090)
@@ -0,0 +1,339 @@
+/* gvSIG. Sistema de Informaciï¿½n Geogrï¿½fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibï¿½ï¿½ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.layer;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.Insets;
+import java.awt.event.ActionListener;
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import javax.swing.JLabel;
+import javax.swing.JSlider;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+import org.gvsig.gui.beans.swing.JButton;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrDefault;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+/**
+ * Dialogo donde se muestran las propiedades de una vista
+ * 
+ * @author Fernando Gonzï¿½lez Cortï¿½s
+ */
+public class TransparencyPanel extends GridBagLayoutPanel implements
+		SingletonWindow, ChangeListener {
+
+	private ProjectView3D view3D;
+
+	private int width = 250;
+
+	private int height = 100;
+
+	private GridBagLayoutPanel okCancelPanel;
+
+	private JButton okButton;
+
+	private JSlider sliderTrans;
+
+	private int order;
+
+	private Layer3DProps layer3DProps;
+
+	private float opacity;
+
+	private SliderUpdate runnable;
+
+	private FLayer lyr3D;
+
+	/**
+	 * This is the default constructor
+	 * 
+	 * @param f
+	 *            Frame padre del dialogo
+	 * @param v
+	 *            Vista que se representa
+	 */
+	public TransparencyPanel(IProjectView v) {
+
+		view3D = (ProjectView3D) v;
+
+		// UpdateOrder();
+		// cogemos la capa q esta seleccionada
+
+		MapContext mapa = view3D.getMapContext();
+
+		// Getting all selected Extent
+		FLayer[] selectedExtent = mapa.getLayers().getActives();
+
+		if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()) {
+
+			lyr3D = (FLayer) selectedExtent[0];
+			layer3DProps = Layer3DProps.getLayer3DProps(lyr3D);
+
+			order = layer3DProps.getPlanetOrder();
+			opacity = layer3DProps.getOpacity();
+
+		}
+		initialize();
+
+	}
+
+	private void UpdateOrder() {
+		// cogemos la capa q esta seleccionada
+
+		MapContext mapa = view3D.getMapContext();
+
+		// Getting all selected Extent
+		FLayer[] selectedExtent = mapa.getLayers().getActives();
+		FLayer lyr3DAux = null;
+
+		if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()) {
+
+			lyr3DAux = (FLayer) selectedExtent[0];
+//			if (!(lyr3DAux.getName().equals(lyr3D.getName()))) {
+//				// sliderTrans.setValue((int) opacity * 255);
+//
+//			}
+			lyr3D = lyr3DAux;
+			layer3DProps = Layer3DProps.getLayer3DProps(lyr3D);
+			
+			order = layer3DProps.getPlanetOrder();
+			// opacity = layer3DProps.getOpacity();
+			opacity = (((FLyrDefault) lyr3D).getTransparency())
+			/ (float) 255;
+		}
+
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+
+		GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+		gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
+		gridBagConstraints1.gridy = 2;
+		gridBagConstraints1.weightx = 1.0;
+		gridBagConstraints1.gridx = 1;
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridheight = 2;
+		gridBagConstraints.gridwidth = 2;
+		gridBagConstraints.insets = new Insets(15, 0, 0, 0);
+		gridBagConstraints.gridy = 3;
+
+		this.add(getSliderTrans(), gridBagConstraints1);
+		this.add(getOkCancelPanel(), gridBagConstraints);
+		// jContentPane = new JPanel();
+		// jContentPane.setLayout(new GridBagLayout());
+		// jContentPane.add(getJButton(), gridBagConstraints);
+		// jContentPane.add(getJSlider(), gridBagConstraints1);
+
+		// Inicialize component
+		setName(PluginServices.getText(this, "Transparency"));
+		// Introducing the margin
+		// setBorder(BorderFactory.createEmptyBorder(6, 6, 6, 6));
+		// Dimension of the panel
+		// setSize(new Dimension(width, height));
+		this.setPreferredSize(new Dimension(width, height));
+		this.setSize(new Dimension(width, height));
+
+		// ADDING COMPONENTS
+
+		// this.addComponent(getSliderTrans(), new Insets(2, 5, 2, 5));
+		//
+		// // Accept buton
+		// this.addComponent(getOkCancelPanel(), new Insets(2, 5, 2, 5));
+
+		// Launching slider update
+		// Create the object with the run() method
+		runnable = new SliderUpdate();
+
+		// Create the thread supplying it with the runnable object
+		Thread thread = new Thread(runnable);
+
+		// Start the thread
+		thread.start();
+
+	}
+
+	private javax.swing.JSlider getSliderTrans() {
+		if (sliderTrans == null) {
+			sliderTrans = new JSlider(JSlider.HORIZONTAL, 0, 255,
+					(int) opacity * 255);
+			// Create the label table
+			Dictionary labelTable = new Hashtable();
+			labelTable.put(new Integer(50), new JLabel("Transparente"));
+			labelTable.put(new Integer(215), new JLabel("Opaco"));
+			// Adding table to slider
+			sliderTrans.setLabelTable(labelTable);
+			// Activate the lables
+			sliderTrans.setPaintLabels(true);
+			// Add Change linstener
+			sliderTrans.addChangeListener(this);
+
+		}
+		int a = (int) (opacity * 255);
+		sliderTrans.setValue(a);
+		return sliderTrans;
+	}
+
+	public void stateChanged(ChangeEvent e) {
+		// this.UpdateOrder();
+		JSlider source = (JSlider) e.getSource();
+		int trans = (int) source.getValue();
+		// System.out.println("valor de la transparencia capturada " + trans);
+		UpdateOrder();
+		// System.out.println("Activado refresco automatico");
+		// Alpha value
+		opacity = (float) trans / 255f;
+		// Setting opaciti in layer properties
+		// layer3DProps.setOpacity(opacity);
+		// Setting opacity in layer
+		((FLyrDefault) lyr3D).setTransparency(trans);
+		// Notify the opacity to planet
+		view3D.getPlanet().setTextureOpacityLayer(order, opacity);
+		// Repainting canvas
+		view3D.getCanvas3d().repaint();
+
+		this.repaint();
+	}
+
+	private GridBagLayoutPanel getOkCancelPanel() {
+		if (okCancelPanel == null) {
+			ActionListener okAction, cancelAction, applyAction;
+			okAction = new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					UpdateOrder();
+					// Alpha value
+					float a = opacity;
+					// Setting opaciti in layer properties
+					layer3DProps.setOpacity(a);
+					// Notify the opacity to planet
+					view3D.getPlanet().setTextureOpacityLayer(order, a);
+					// Repainting canvas
+					view3D.getCanvas3d().repaint();
+					// Stop thread
+					runnable.end();
+					PluginServices.getMDIManager().closeWindow(
+							TransparencyPanel.this);
+				}
+			};
+			okCancelPanel = new GridBagLayoutPanel();
+			okCancelPanel.setAlignmentX(GridBagLayoutPanel.RIGHT_ALIGNMENT);
+			okButton = new JButton();
+			okButton.setLabel(PluginServices.getText(this, "Close"));
+			okButton.addActionListener(okAction);
+
+			okCancelPanel.addComponent(okButton);
+		}
+		return okCancelPanel;
+	}
+
+	public Object getWindowModel() {
+		// TODO Auto-generated method stub
+		return view3D;
+	}
+
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG);
+		m_viewinfo.setTitle(PluginServices.getText(this, "Transparency"));
+		m_viewinfo.setHeight(height);
+		m_viewinfo.setWidth(width);
+		m_viewinfo.setX(100);
+		m_viewinfo.setY(100);
+		return m_viewinfo;
+	}
+
+	public class SliderUpdate implements Runnable {
+
+		private boolean finish = false;
+
+		ProjectView3D view;
+
+		JSlider slider;
+
+		public SliderUpdate() {
+		}
+
+		// This method is called when the thread runs
+		public void run() {
+			while (true) {
+				try {
+					Thread.sleep(250);
+					synchronized (this) {
+						if (finish) {
+							break;
+						}
+					}
+				} catch (InterruptedException e) {
+
+					e.printStackTrace();
+				}
+				// aki codigo de comprobacion
+				UpdateOrder();
+				sliderTrans.setValue((int) (opacity * 255));
+				sliderTrans.repaint();
+			}
+		}
+
+		public synchronized void end() {
+			finish = true;
+		}
+
+	}
+	public Object getWindowProfile() {
+		return WindowInfo.PROPERTIES_PROFILE;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/ViewSelectionControls3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/ViewSelectionControls3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/ViewSelectionControls3D.java	(revision 29090)
@@ -0,0 +1,124 @@
+package org.gvsig.gvsig3dgui.layer;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.MapControl3D;
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.iver.andami.PluginServices;
+import com.iver.andami.messages.NotificationManager;
+import com.iver.andami.plugins.Extension;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FBitSet;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
+import com.iver.cit.gvsig.project.documents.ProjectDocument;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+public class ViewSelectionControls3D extends Extension {
+
+	public void execute(String actionCommand) {
+		// TODO Auto-generated method stub
+		View3D vista = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		IProjectView model = vista.getModel();
+		MapContext3D mapa = (MapContext3D) model.getMapContext();
+		MapControl3D mapCtrl = (MapControl3D) vista.getMapControl();
+		NavigationMode navigator = vista.getNavMode();
+		if (actionCommand.equals("SELRECT")) {
+			mapCtrl.setTool("rectSelection");
+//			((ProjectDocument)vista.getModel()).setModified(true);
+		} else if (actionCommand.equals("SELPOINT")) {
+			mapCtrl.setTool("pointSelection");
+//			((ProjectDocument)vista.getModel()).setModified(true);
+		} else if (actionCommand.equals("SELPOL")) {
+			mapCtrl.setTool("polSelection");
+//			((ProjectDocument)vista.getModel()).setModified(true);
+		} else if (actionCommand.equals("SELECTIONBYSHAPE")) {
+//			SelectionByTheme dlg = new SelectionByTheme();
+//			// FLayer[] layers = mapa.getLayers().getActives();
+//			// int count = 0;
+//			dlg.setModel(new DefaultSelectionByThemeModel());
+//			dlg.addSelectionListener(new MySelectionByThemeListener());
+//			PluginServices.getMDIManager().addWindow(dlg);
+//			((ProjectDocument)vista.getModel()).setModified(true);
+		} else if (actionCommand.equals("INVERT_SELECTION")) {
+			for (int i = 0; i < mapa.getLayers().getActives().length; i++) {
+				FLayer lyr = mapa.getLayers().getActives()[i];
+				if (lyr.isAvailable() && lyr instanceof FLyrVect) {
+					FLyrVect lyrVect = (FLyrVect) lyr;
+					SelectableDataSource sds;
+					try {
+						sds = lyrVect.getRecordset();
+						FBitSet selectedRows = sds.getSelection();
+						selectedRows.flip(0, (int)sds.getRowCount());
+						sds.setSelection(selectedRows);
+					} catch (ReadDriverException e) {
+						e.printStackTrace();
+						NotificationManager.addError(e);
+					}
+
+				}
+			}
+			((ProjectDocument)vista.getModel()).setModified(true);
+			// Disabling All Navigation modes
+		}
+		navigator.removeAllModes();
+	}
+
+	public void initialize() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public boolean isEnabled() {
+		IWindow f = PluginServices.getMDIManager().getActiveWindow();
+		if (f instanceof View3D) {
+
+			View3D vista = (View3D) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			for (int i = 0; i < mapa.getLayers().getActives().length; i++) {
+				FLayer lyr = mapa.getLayers().getActives()[i];
+				if (lyr.isAvailable() && lyr instanceof FLyrVect) {
+					return true;
+				}
+			}
+			return false;
+		}
+		return true;
+	}
+
+	public boolean isVisible() {
+		IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+		if (f != null && f instanceof View3D) {
+			View3D vista = (View3D) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			return hasVectorLayers(mapa.getLayers());
+
+		}
+		return false;
+	}
+	
+	private boolean hasVectorLayers(FLayers layers) {
+		for (int i = 0; i < layers.getLayersCount(); i++) {
+			FLayer lyr =layers.getLayer(i);
+			if (lyr instanceof FLayers){
+				if (hasVectorLayers((FLayers) lyr)){
+					return true;
+				}
+			} else if (lyr instanceof FLyrVect) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerListener3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerListener3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerListener3D.java	(revision 29090)
@@ -0,0 +1,131 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.fmap.raster.layers.FLyrRasterSE;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+
+/**
+* 
+* @version 
+* @author Ángel Fraile Griñán.(angel.fraile@iver.es)
+*/
+
+public class RasterLayerListener3D {
+
+	private Layer3DProps 				props3D;
+	private MapContext3D 				context;
+	private RasterLayerPanel3D 			rasterLayerPanel3D;
+	private FLayer layer;
+	private boolean bCanBeElev;
+	
+	
+	public RasterLayerListener3D() {
+	}
+	
+	public RasterLayerListener3D(RasterLayerPanel3D panel) {
+		this.rasterLayerPanel3D = panel;
+	}
+	/**
+	 * Actions to execute when the accept option is pressed
+	 */
+	public void accept() {
+		
+		context = rasterLayerPanel3D.getMapContext();
+		props3D = rasterLayerPanel3D.getLayer3DProps();
+		
+		if (rasterLayerPanel3D.isElevationOptionSelected()&&(props3D.getType()== Layer3DProps.layer3DImage)) {
+			layer = rasterLayerPanel3D.getLayer();
+			 if (layer instanceof FLyrRasterSE) {
+					FLyrRasterSE rasterLayer = (FLyrRasterSE) layer;
+					if (rasterLayer.getBandCount() == 1) {
+				//		bCanBeElev = true;
+						context.pepareLayerToRefresh(rasterLayerPanel3D.getLayer());
+						props3D.setType(Layer3DProps.layer3DElevation);
+						props3D.setCacheService(null);
+						context.refreshLayer3DProps(rasterLayerPanel3D.getLayer());
+						
+						
+//						int offset = 0,factor = 0;
+//						try {
+//							offset = (int)Double.parseDouble(rasterLayerPanel3D.getJTextFieldOffset());
+//							factor = (int)Double.parseDouble(rasterLayerPanel3D.getJTextFieldFactor());
+//						} catch (NumberFormatException e) {
+//							// TODO: handle exception
+//						}
+//						if (offset > 0 && factor > 0) {
+//							
+//						}
+						
+					}
+					else {
+//						
+						JOptionPane.showMessageDialog(null, "Capa sin propiedades de elevación",
+								"Alertas de prueba", JOptionPane.WARNING_MESSAGE);
+					}
+					
+			 }
+			 else if(rasterLayerPanel3D.isTerrainOptionSelected()) {
+				 
+			 }else if(rasterLayerPanel3D.isDetailOptionSelected()) {
+					
+				}
+				else
+					return;
+		}
+		
+	}
+
+	/**
+	 * Actions to execute when the apply option is pressed
+	 */
+	
+	public void apply() {
+		
+		context = rasterLayerPanel3D.getMapContext();
+		props3D = rasterLayerPanel3D.getLayer3DProps();
+		
+		if (rasterLayerPanel3D.isElevationOptionSelected()&&(props3D.getType()== Layer3DProps.layer3DImage)) {
+			layer = rasterLayerPanel3D.getLayer();
+			
+				props3D.setLayer(layer);
+		
+		
+				context.pepareLayerToRefresh(rasterLayerPanel3D.getLayer());
+				props3D.setType(Layer3DProps.layer3DElevation);
+			//	props3D.setCacheService(null);
+				context.refreshLayer3DProps(rasterLayerPanel3D.getLayer());
+		}
+	}
+
+	/**
+	 * Actions to execute when the cancel option is pressed
+	 */
+	public void cancel() {
+	}
+
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/Module3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/Module3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/Module3D.java	(revision 29090)
@@ -0,0 +1,67 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import com.iver.andami.plugins.Extension;
+import com.iver.utiles.extensionPoints.ExtensionPoint;
+import com.iver.utiles.extensionPoints.ExtensionPoints;
+import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
+
+
+/**
+* El cuadro de Propiedades de visualización de 3D contiene el contenedor
+* base se registran la entrada del menú del TOC y los paneles en el cuadro.
+*
+* @author Ángel Fraile Griñán (angel.fraile@iver.es)
+* 
+*/
+public class Module3D extends Extension {
+
+	public void execute(String arg0) {
+		// TODO Auto-generated method stub
+	}
+
+	public void initialize() {
+		ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
+		
+		if (!extensionPoints.containsKey("PropertiesDialog3D")) {
+			extensionPoints.put(new ExtensionPoint("PropertiesDialog3D", "3D Properties registrable panels"));
+		}
+	
+		extensionPoints.add("View_TocActions", "3DProperties",PropertiesTocMenuEntry3D.getSingleton());
+		extensionPoints.add("PropertiesDialog3D", "infoPanel3D", InfoPanel3D.class);
+		extensionPoints.add("PropertiesDialog3D", "vectorialPanel3D", VectorialLayerPanel3D.class);
+	//	extensionPoints.add("PropertiesDialog3D", "rasterPanel3D", RasterLayerPanel3D.class);
+		
+	}
+
+	public boolean isEnabled() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean isVisible() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	
+}
+	
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerPanel3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerPanel3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerPanel3D.java	(revision 29090)
@@ -0,0 +1,623 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+
+import java.awt.BorderLayout;
+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 javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.border.TitledBorder;
+
+import org.apache.log4j.Logger;
+import org.gvsig.gui.beans.datainput.DataInputContainer;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrWMS;
+
+
+/**
+* Tab with vectorial options in properties 3D panel.
+* @version 
+* @author Ángel Fraile Griñán.(angel.fraile@iver.es)
+*/
+
+public class VectorialLayerPanel3D extends AbstractPanel implements ItemListener {
+
+	private static final long serialVersionUID = -4145789119404234621L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	
+	private JPanel panelOptionsGlob;
+	private JPanel panelOptionsDetail;
+	private JPanel panelOptionsRast;
+	private JCheckBox rasterOption;
+	private JCheckBox zOption;
+	private JCheckBox detailVector;
+	private JCheckBox rangeOption;
+	private Layer3DProps props3D;
+	private TitledBorder borderOptionsRast;
+	private DataInputContainer textFieldHeigth;
+	private VectorialLayerListener3D vectorialLayerListener3D;
+	private DataInputContainer textFieldRangeMin;
+	private DataInputContainer textFieldRangeMax;
+	private TitledBorder borderOptionsDetail;
+	private static Logger logger = Logger.getLogger(VectorialLayerPanel3D.class
+			.getName());
+	
+	final int integerMaxDepth = 2147483647;	//default maximum depth value
+	final int defaultElevation = 100;		//default layer elevation
+	final int integerMaxRange = 2147483647;	//default maximum visibility range
+	final int integerMinRange = 1;			//default minimum depth value
+	
+
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public VectorialLayerPanel3D() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public VectorialLayerPanel3D(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	private VectorialLayerListener3D getVectorialLayerListener3D() {
+		if (vectorialLayerListener3D == null) {
+			vectorialLayerListener3D = new VectorialLayerListener3D(this);
+		}
+		return vectorialLayerListener3D;
+	}
+
+	protected void initialize() {
+		setLabel(PluginServices.getText(this, PluginServices.getText(this, "Capa_Vectorial")));
+		setLabelGroup(PluginServices.getText(this,PluginServices.getText(this, "Propiedades_3D")));
+		setPreferredSize(new Dimension(500, 400));
+		resetChangedStatus();
+		panelOptionsGlob = new JPanel();
+		panelOptionsGlob.setLayout(new GridBagLayout());
+		
+		GridBagConstraints gbc = new GridBagConstraints();
+		gbc.fill = GridBagConstraints.HORIZONTAL;
+		gbc.weightx = 1.0;
+		gbc.insets = new Insets(0, 0, 0, 0);
+		panelOptionsGlob.add(panelRaster(), gbc);
+		
+		gbc = new GridBagConstraints();
+		gbc.gridy = 1;
+		gbc.fill = GridBagConstraints.BOTH;
+		gbc.weighty = 1.0;
+		panelOptionsGlob.add(panelDetail(), gbc);
+		
+		this.setLayout(new BorderLayout());
+		this.add(panelOptionsGlob, BorderLayout.CENTER);
+		
+	}
+	
+	private JPanel panelRaster() {
+		
+		if (panelOptionsRast == null) {
+			panelOptionsRast = new JPanel();
+			borderOptionsRast = new TitledBorder(PluginServices.getText(this, "Opciones"));
+			panelOptionsRast.setLayout(new GridBagLayout());
+			panelOptionsRast.setBorder(this.borderOptionsRast);
+			
+			GridBagConstraints gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.weightx = 1;
+			gbc.insets = new Insets(0, 0, 10, 0);
+			panelOptionsRast.add(getJCheckBoxRaster(),gbc);
+			
+			gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.gridy = 1;
+			gbc.insets = new Insets(0, 0, 10, 0);
+			panelOptionsRast.add(getJCheckBoxValueZ(),gbc);
+			
+			gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.gridy = 2;
+			panelOptionsRast.add(getLabelText(), gbc);
+			
+			gbc = new GridBagConstraints();
+			gbc.weighty = 1.0;
+			gbc.gridy = 3;
+			panelOptionsRast.add(new JPanel(), gbc);
+		}
+		return panelOptionsRast;
+	}
+	
+	
+	
+	private JPanel panelDetail() {
+		
+		if (panelOptionsDetail == null) {
+			
+			panelOptionsDetail = new JPanel();
+			borderOptionsDetail = new TitledBorder(PluginServices.getText(this, "Nivel_de_detalle"));
+			panelOptionsDetail.setLayout(new GridBagLayout());
+			panelOptionsDetail.setBorder(this.borderOptionsDetail);
+			
+			GridBagConstraints gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.weightx = 1;
+			gbc.insets = new Insets(0, 0, 10, 0);
+			panelOptionsDetail.add(getJCheckBoxDetail(),gbc);
+			
+			gbc.gridy = 1;
+			panelOptionsDetail.add(getJCheckBoxRange(),gbc);
+			
+			gbc.gridy = 2;
+			panelOptionsDetail.add(getLabelMinRange(), gbc);
+			
+			gbc.gridy = 3;
+			panelOptionsDetail.add(getLabelMaxRange(), gbc);
+			
+			gbc = new GridBagConstraints();
+			gbc.weighty = 1.0;
+			gbc.gridy = 4;
+			panelOptionsDetail.add(new JPanel(), gbc);
+		}
+		return panelOptionsDetail;
+	}
+	
+	/**
+	 * @return JCheckbox. Return the checkbox of selection of visibility range options
+	 */
+	private JCheckBox getJCheckBoxRange() {
+		if (rangeOption == null) {
+			rangeOption = new JCheckBox(PluginServices.getText(this, "Activar_intervalo"),
+					false);
+			rangeOption.addItemListener(this);
+			rangeOption.setEnabled(false);
+		}
+		return rangeOption;
+	}
+	
+	
+	
+	/**
+	 * @return JCheckbox. Return the checkbox of selection of image options
+	 */
+	private JCheckBox getJCheckBoxDetail() {
+		if (detailVector == null) {
+			detailVector = new JCheckBox(
+					PluginServices.getText(this, "Activar_profundidad_maxima"), false);
+			detailVector.addItemListener(this);
+			detailVector.setEnabled(false);
+		}
+		return detailVector;
+	}
+	
+	
+	/*
+	 * Enabled options depending the Layer3DProps, and the context MapContext
+	 */
+	private void controlEnabled()
+	{
+		if(props3D.getType() == 0) {
+		 if (getLayer() instanceof FLyrWMS) {
+			 	textFieldHeigth.setControlEnabled(false);
+			 	rasterOption.setSelected(true);
+				rasterOption.setEnabled(false);
+				zOption.setEnabled(false);
+			}
+		 else {
+			textFieldHeigth.setControlEnabled(false);
+			rasterOption.setEnabled(true);
+			rasterOption.setSelected(true);
+			zOption.setEnabled(false);
+		 }
+		 
+		 int order = props3D.getTocOrder();
+		 int aux =  this.getMapContext().getPlanet().getMaxTextureResolution(order);
+		 if(aux < integerMaxDepth ) {
+			 detailVector.setEnabled(true);
+			 detailVector.setSelected(true);
+		 }
+		 
+		 int actualRangeMax =  this.getMapContext().getPlanet().getMaxTextureRange(order);
+		 int actualRangeMin =  this.getMapContext().getPlanet().getMinTextureRange(order);
+		 
+		
+		 if((actualRangeMax != integerMaxRange || actualRangeMin != integerMinRange)&& (isRasterOptionSelected() && !isDetailOptionSelected())) {
+			rangeOption.setEnabled(true);
+			rangeOption.setSelected(true);
+			String rangeMinString = Integer.toString(actualRangeMin);
+			textFieldRangeMin.setValue(rangeMinString);
+			String rangeMaxString = Integer.toString(actualRangeMax);
+			textFieldRangeMax.setValue(rangeMaxString);
+			
+		 }
+		}
+		else if(props3D.isZEnable()) {
+			
+				textFieldHeigth.setControlEnabled(false);
+				rasterOption.setEnabled(false);
+				zOption.setEnabled(true);
+				zOption.setSelected(true);
+			}
+			else {						
+				textFieldHeigth.setControlEnabled(true);
+				rasterOption.setEnabled(true);
+				zOption.setEnabled(true);
+			}
+
+	}
+	/*
+	 * Height layer data input container 
+	 */
+	
+	private DataInputContainer getLabelText() {
+		if(textFieldHeigth == null)
+		{
+			textFieldHeigth = new DataInputContainer();
+			textFieldHeigth.setLabelText(PluginServices.getText(this,"Altura_en_metros"));
+			textFieldHeigth.setValue(this.getMyHeight());
+		}
+		
+		return textFieldHeigth;
+	}
+	
+	
+	
+	private DataInputContainer getLabelMaxRange() {
+		if(textFieldRangeMax == null)
+		{
+			textFieldRangeMax = new DataInputContainer();
+			textFieldRangeMax.setLabelText(PluginServices.getText(this,"Rango_maximo"));
+			textFieldRangeMax.setControlEnabled(false);
+			//if(!this.getMyRangeMax().equals(String.valueOf(integerMaxRange)))
+				textFieldRangeMax.setValue(this.getMyRangeMax());
+			//else
+			//	textFieldRangeMax.setValue("0");
+		}	
+		
+		return textFieldRangeMax;
+	}
+	
+	
+	private DataInputContainer getLabelMinRange() {
+		if(textFieldRangeMin == null)
+		{
+			textFieldRangeMin = new DataInputContainer();
+			textFieldRangeMin.setLabelText(PluginServices.getText(this,"Rango_minimo"));
+			textFieldRangeMin.setControlEnabled(false);
+		//	if(!this.getMyRangeMin().equals(String.valueOf(integerMinRange)))
+				textFieldRangeMin.setValue(this.getMyRangeMin());
+		//	else
+		//		textFieldRangeMin.setValue("0");
+		}
+		
+		return textFieldRangeMin;
+	}
+	
+	
+	
+	/*
+	 * @return JCheckbox rasterOption
+	 *
+	 */
+	private JCheckBox getJCheckBoxRaster() {
+		if (rasterOption == null) {
+			rasterOption = new JCheckBox(
+					PluginServices.getText(this, "Raster_layer"), false);
+			rasterOption.addItemListener(this);
+		}
+		return rasterOption;
+	}
+	
+	/*
+	 * @return JCheckbox zOptions
+	 *
+	 */
+	
+	private JCheckBox getJCheckBoxValueZ() {
+		if (zOption == null) {
+			zOption = new JCheckBox(PluginServices.getText(this, "Heigth_Z"),
+					false);
+			zOption.addItemListener(this);
+		}
+		return zOption;
+	}
+
+
+	public void selected() {
+	
+	}
+
+	/**
+	 * Logic with active or inactive options
+	 */
+	
+	public void itemStateChanged(ItemEvent e) {
+		
+		int order = props3D.getTocOrder();
+		int actualDepth =  this.getMapContext().getPlanet().getMaxTextureResolution(order);
+//		int actualRangeMax =  this.getMapContext().getPlanet().getMaxTextureRange(order);
+//		int actualRangeMin =  this.getMapContext().getPlanet().getMinTextureRange(order);
+		
+		zOption.setEnabled(!rasterOption.isSelected());
+		rasterOption.setEnabled(!zOption.isSelected());
+		textFieldHeigth.setControlEnabled(!(zOption.isSelected()) && !(rasterOption.isSelected()));
+		detailVector.setEnabled(rasterOption.isSelected()&& !rangeOption.isSelected());
+		rangeOption.setEnabled(rasterOption.isSelected() && !detailVector.isSelected());
+		textFieldRangeMin.setControlEnabled(rangeOption.isSelected()&& !detailVector.isSelected());
+		textFieldRangeMax.setControlEnabled(rangeOption.isSelected() && !detailVector.isSelected());
+
+		
+		if(detailVector.isSelected()) {
+			 if(actualDepth != integerMaxDepth) {
+					detailVector.setSelected(true);
+			 }
+		}
+		else {
+			detailVector.setSelected(false);
+		}
+		
+		if(rangeOption.isSelected()) {
+			 textFieldRangeMin.setValue(getMyRangeMin());
+			 textFieldRangeMax.setValue(getMyRangeMax());
+		
+//			 if(actualRangeMax != integerMaxRange || actualRangeMin != integerMinRange) {
+//				 String rangeMinString = Integer.toString(actualRangeMin);
+//				 textFieldRangeMin.setValue(rangeMinString);
+//				 String rangeMaxString = Integer.toString(actualRangeMax);
+//				 textFieldRangeMax.setValue(rangeMaxString);
+//			 }
+//				else {
+//					textFieldRangeMin.setValue("0");
+//					textFieldRangeMax.setValue("0");
+//				}
+		}
+		
+	}
+	
+	
+	/*
+	 * Calling the listener
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		getVectorialLayerListener3D().accept();
+	}
+
+	/*
+	 * Calling the listener
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void apply() {
+		getVectorialLayerListener3D().apply();
+	}
+	
+	/*
+	 * Calling the listener
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void cancel() {
+		getVectorialLayerListener3D().cancel();
+	}
+	
+	/**
+	 * Option range detail option selected
+	 * @return boolean
+	 */
+	public boolean isRangeOptionSelected() {
+		return getJCheckBoxRange().isSelected();
+	}
+	
+	
+	/**
+	 * Option raster selected
+	 * @return boolean
+	 */
+	public boolean isRasterOptionSelected() {
+		return getJCheckBoxRaster().isSelected();
+	}
+	
+	/**
+	 * Option to work with Z values
+	 * @return boolean
+	 */
+	public boolean isZValueSelected() {
+		return getJCheckBoxValueZ().isSelected();
+	}
+	
+	/**
+	 * Option level of detail selected
+	 * @return boolean
+	 */
+	public boolean isDetailOptionSelected() {
+		return getJCheckBoxDetail().isSelected();
+	}
+	
+	/**
+	 * Getting the user height introduced 
+	 * @return actual height
+	 */
+	public String getJTextFieldHeight() {
+		return textFieldHeigth.getValue();
+	}
+	
+	
+	public String getJTextFieldRangeMax() {
+		return textFieldRangeMax.getValue();
+	}
+	
+	public String getJTextFieldRangeMin() {
+		return textFieldRangeMin.getValue();
+	}
+	
+	/**
+	 * Getting the 3D properties
+	 * @return Layer3DProps
+	 */
+	public Layer3DProps getLayer3DProps() {
+		return props3D;
+	}
+
+	/**
+	 * Getting the map context
+	 * @return MapContext3D
+	 */
+	public MapContext3D getMapContext() {
+		FLayer fl = (FLayer)this.getReference();
+		MapContext3D mc = (MapContext3D)fl.getMapContext();
+		return mc;
+	}
+	
+	/**
+	 * Getting the selected layer
+	 * @return Flayer
+	 */
+	public FLayer getLayer() {
+		return (FLayer)this.getReference();
+	}
+
+	/**
+	 * Getting the actual layer height
+	 * @return String.
+	 */
+	public String getMyHeight() {
+		String elevation = "0";//default value
+		try {
+			float alt = props3D.getHeigth();
+			elevation = Float.toString(alt);
+		}
+		catch (Exception e) {
+			logger.error("Command: "
+					+ "Error getting layer elevation value.", e);
+		}
+		return elevation;
+	}
+	
+	/*
+	 * Return actual least texture range as String
+	 */
+	private String getMyRangeMax() {
+		String rangeMax = String.valueOf(integerMaxRange);;
+		try {
+			int order = props3D.getTocOrder();
+			int alt =  this.getMapContext().getPlanet().getMaxTextureRange(order);
+			rangeMax = Integer.toString(alt);
+		}
+		catch (Exception e) {
+//			logger.error("Command: "
+//					+ "Error getting maximun range layer elevation value.", e);
+		}
+		return rangeMax;
+	}
+	
+	
+	/*
+	 * Return actual minim texture range as String
+	 */
+	private String getMyRangeMin() {
+		String rangeMin = String.valueOf(integerMinRange);
+		try {
+			int order = props3D.getTocOrder();
+			int alt =  this.getMapContext().getPlanet().getMinTextureRange(order);
+			rangeMin = Integer.toString(alt);
+		}
+		catch (Exception e) {
+//			logger.error("Command: "
+//					+ "Error getting least range layer elevation value.", e);
+		}
+		return rangeMin;
+	}
+	
+	/**
+	 * Getting the actual height in the model
+	 * @return height
+	 */
+	public double getHightLayer() {
+		return props3D.getHeigth();
+	}
+	
+	/**
+	 * Getting the actual texture maxim range in the model
+	 * @return max range
+	 */
+	public int getDefaultMaxRange(){
+		return integerMaxRange;
+	}
+	
+	/**
+	 * Getting the actual texture minim range in the model
+	 * @return height
+	 */
+	public int getDefaultMinRange(){
+		return integerMinRange;
+	}
+	
+	/**
+	 * Getting the actual texture maxim range in the model
+	 * @return height
+	 */
+	public int getDefaultDepth(){
+		return integerMaxDepth;
+	}
+	
+	/**
+	 * Getting the actual layer elevation in the model
+	 * @return elevation
+	 */
+	public int getDefaultElevation(){
+		return defaultElevation;
+	}
+	
+	/**
+	 * Getting the objet(the selected layer). Updating the panel with the 
+	 * actual properties of the model.
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#setReference(java.lang.Object)
+	 */
+	public void setReference(Object arg0) {
+		super.setReference(arg0);
+		props3D = Layer3DProps.getLayer3DProps((FLayer)this.getReference());
+		updatePanel();
+	}
+	
+	/*
+	 * Setting data model when the panel is built
+	 */
+	protected void updatePanel() {
+		textFieldHeigth.setValue(this.getMyHeight());
+		controlEnabled();
+	}
+	
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/PropertiesTocMenuEntry3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/PropertiesTocMenuEntry3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/PropertiesTocMenuEntry3D.java	(revision 29090)
@@ -0,0 +1,166 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import org.gvsig.exceptions.BaseException;
+import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.panelGroup.PanelGroupDialog;
+import com.iver.cit.gvsig.panelGroup.loaders.PanelGroupLoaderFromExtensionPoint;
+import com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction;
+import com.iver.cit.gvsig.project.documents.view.toc.ITocItem;
+
+
+/**
+ * Entrada en del menú contextual del TOC correspondiente al cuadro de
+ * propiedades 3D
+ * 
+ * @author Ángel Fraile Griñán. (angel.fraile@iver.es)
+ */
+
+public class PropertiesTocMenuEntry3D extends AbstractTocContextMenuAction {
+
+	
+
+	static private PropertiesTocMenuEntry3D singleton = null;
+	private PanelGroupDialog properties = null;
+	private FLayer lyr = null;
+
+	/**
+	 * Nadie puede crear una instancia a esta clase única, hay que usar el
+	 * getSingleton()
+	 */
+	private PropertiesTocMenuEntry3D() {
+	}
+
+	/**
+	 * Devuelve un objeto unico a dicha clase
+	 * 
+	 * @return
+	 */
+	static public PropertiesTocMenuEntry3D getSingleton() {
+		if (singleton == null)
+			singleton = new PropertiesTocMenuEntry3D();
+		return singleton;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroup()
+	 */
+	public String getGroup() {
+		return PluginServices.getText(this, "Layer3D");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getGroupOrder()
+	 */
+	public int getGroupOrder() {
+		return 60;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.contextMenu.AbstractContextMenuAction#getOrder()
+	 */
+	public int getOrder() {
+		return 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getText()
+	 */
+	public String getText() {
+		return (PluginServices.getText(this, "Propiedades_3D"));
+	}
+
+	/**
+	 * Enable options
+	 * Is enabled when a view 3D is selected
+	 */
+	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
+		if ((selectedItems == null) || (selectedItems.length != 1))
+			return false;
+		else
+			return true;
+	}
+
+	/**
+	 * Visibility options
+	 * Is visible when a view 3D is selected
+	 *     
+	 */
+	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
+		boolean visible;
+		if ((selectedItems == null) || (selectedItems.length != 1))
+			return false;
+		Layer3DProps prop3D;
+		prop3D = Layer3DProps.getLayer3DProps(selectedItems[0]);
+		visible = (prop3D == null) ? false : true;
+
+		return visible;
+	}
+
+	/**
+	 * Gestiona la apertura del diálogo de propiedades 3D 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];
+
+		try {
+			PanelGroupManager manager = PanelGroupManager.getManager();
+
+			manager.registerPanelGroup(TabbedPanel.class);
+			manager.setDefaultType(TabbedPanel.class);
+
+			TabbedPanel panelGroup = (TabbedPanel) manager.getPanelGroup(lyr);
+			PanelGroupLoaderFromExtensionPoint loader = new PanelGroupLoaderFromExtensionPoint(
+					"PropertiesDialog3D");
+
+			properties = new PanelGroupDialog(lyr.getName(), PluginServices.getText(this, "Propiedades_3D"),
+					550, 450, (byte) (WindowInfo.MODELESSDIALOG
+							| WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE),
+					panelGroup);
+			properties.loadPanels(loader);
+			PluginServices.getMDIManager().addWindow(properties);
+		} catch (BaseException be) {
+			System.out.println(be.getLocalizedMessageStack());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/InfoPanel3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/InfoPanel3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/InfoPanel3D.java	(revision 29090)
@@ -0,0 +1,576 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+
+import javax.swing.JEditorPane;
+import javax.swing.JScrollPane;
+
+import org.gvsig.fmap.raster.layers.FLyrRasterSE;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.raster.dataset.BandAccessException;
+import org.gvsig.raster.dataset.io.RasterDriverException;
+import org.gvsig.raster.dataset.properties.DatasetMetadata;
+import org.gvsig.raster.datastruct.Extent;
+import org.gvsig.raster.hierarchy.IRasterProperties;
+import org.gvsig.raster.util.RasterUtilities;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.utiles.swing.JComboBox;
+/**
+ * Panel de información sobre raster. La información que aparece en este panel
+ * es la siguiente:
+ * <P>
+ * Información básica sobre el dataset:
+ * <UL>
+ * <LI>Fichero/s que forman el dataset</LI>
+ * <LI>Tamaño por fichero</LI>
+ * <LI>Ancho y alto</LI>
+ * <LI>Formato</LI>
+ * <LI>Si tiene georreferenciación o no</LI>
+ * <LI>Número de bandas</LI>
+ * <LI>Tipo de dato.</LI>
+ * </UL>
+ * </P>
+ * <P>
+ * Datos de georreferenciación:
+ * <UL>
+ * <LI>Proyección</LI>
+ * <LI>Coordenadas UTM o geográficas</LI>
+ * <LI>Tamaño de pixel</LI>
+ * </UL>
+ * </P>
+ * <P>
+ * Bandas:
+ * <UL>
+ * <LI>Bandas de todos los datasets asociados con el tipo de dato de cada uno y
+ * banda de visualización asignada (R, G o B)</LI>
+ * <LI>Coordenadas UTM o geográficas</LI>
+ * <LI>Tamaño de pixel</LI>
+ * </UL>
+ * </P>
+ * <P>
+ * Metadatos
+ * </P>
+ *
+ * @author 
+ *
+ */
+public class InfoPanel3D extends AbstractPanel {
+	private static final long serialVersionUID = -3764465947289974528L;
+	private final String      bgColor0        = "\"#FEEDD6\""; // light salmon
+	private final String      bgColor1        = "\"#EAEAEA\""; // light grey
+	private final String      bgColor3        = "\"#FBFFE1\""; // light yellow
+	private final String      bgColor4        = "\"#D6D6D6\""; // Gris
+	private final String      bgColorBody     = "\"#FFFFFF\""; // white
+
+	private JScrollPane       jScrollPane     = null;
+	public JEditorPane        jEditorPane     = null;
+	private JComboBox         jComboBox       = null;
+	private int               selectedDataSet = 0;
+
+	private boolean           jComboBoxEvent  = false;
+
+	/**
+	 * Cabecera de las columnas del dialogo
+	 */
+	public Object[]           columnNames     = { "Propiedad", "Valor" };
+
+	private IRasterProperties op              = null;
+
+	/**
+	 * Booleano que está a true cuando la fila a dibujar es par y a false cuando
+	 * es impar.
+	 */
+	private boolean           rowColor        = true;
+	
+	
+	private Layer3DProps props3D;
+	private FLayer lyr;
+	private FLyrRasterSE lyr2;
+
+	/**
+	 * This is the default constructor
+	 */
+	public InfoPanel3D() {
+		super();
+		
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 * @return void
+	 */
+	protected void initialize() {
+		setLabel(PluginServices.getText(this, "info"));
+		this.setLayout(new BorderLayout(5, 5));
+		this.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
+		this.add(getJScrollPane(), BorderLayout.CENTER);
+		this.add(getJComboBox(), BorderLayout.SOUTH);
+		this.getJEditorPane().repaint();
+
+		getJComboBox().addItemListener(new ItemListener() {
+			public void itemStateChanged(ItemEvent e) {
+				refresh();
+			}
+		});
+		this.setPreferredSize(new Dimension(100, 80));
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#initializeUI()
+	 */
+	public void initializeUI() {
+	}
+
+	/**
+	 * This method initializes jScrollPane
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	private JScrollPane getJScrollPane() {
+		if (jScrollPane == null) {
+			jScrollPane = new JScrollPane();
+			jScrollPane.setViewportView(getJEditorPane());
+		}
+		return jScrollPane;
+	}
+
+	/**
+	 * This method initializes jComboBox
+	 *
+	 * @return javax.swing.JComboBox
+	 */
+	private JComboBox getJComboBox() {
+		if (jComboBox == null) {
+			jComboBox = new JComboBox();
+		}
+		return jComboBox;
+	}
+
+	/**
+	 * This method initializes jEditorPane
+	 *
+	 * @return javax.swing.JEditorPane
+	 */
+	private JEditorPane getJEditorPane() {
+		if (jEditorPane == null) {
+			jEditorPane = new JEditorPane();
+			jEditorPane.setEditable(false);
+			jEditorPane.setContentType("text/html");
+		}
+		return jEditorPane;
+	}
+
+	public void resetTable() {
+		this.jEditorPane = null;
+	}
+
+	/**
+	 * Controla la alternatividad de colores en la tabla.
+	 *
+	 * @return Cadena con el color de la fila siguiente.
+	 */
+	private String getColor() {
+		String color = (rowColor ? bgColor0 : bgColor1);
+		rowColor = !rowColor;
+		return color;
+	}
+
+	/**
+	 * Obtiene una entrada de la tabla en formato HTML a partir de una propiedad,
+	 * un valor y un color.
+	 *
+	 * @param prop
+	 *          Nombre de la propiedad
+	 * @param value
+	 *          Valor
+	 * @param color
+	 *          Color
+	 *
+	 * @return Entrada HTML de la tabla
+	 */
+	private String setHTMLBasicProperty(String prop, String value) {
+		String content = "<tr valign=\"top\">";
+		if (prop != null)
+			content += "<td bgcolor=" + bgColor4 + "align=\"right\" width=\"140\"><font face=\"Arial\" size=\"3\">" + prop + ":&nbsp;</font></td>";
+		content += "<td bgcolor=" + getColor() + "align=\"left\"><font face=\"Arial\" size=\"3\">" + value + "</font></td>";
+		content += "</tr>";
+
+		return content;
+	}
+
+	/**
+	 * Obtiene una cabecera de tabla en formato HTML a partir de un titulo.
+	 *
+	 * @param title
+	 *          Nombre del titulo
+	 * @param colspan
+	 *          Numero de celdas que ocupara el titulo
+	 *
+	 * @return Entrada HTML del titulo
+	 */
+	private String setHTMLTitleTable(String title, int colspan) {
+		return
+			"<tr valign=\"middle\" >" +
+			"<td bgcolor=" + bgColor3 + " align=\"center\" colspan=\"" + colspan + "\"><font face=\"Arial\" size=\"3\"><b> " + title + "</b></font></td>" +
+			"</tr>";
+	}
+
+	/**
+	 * Obtiene una cabecera de tabla en formato HTML a partir de un titulo.
+	 *
+	 * @param content
+	 *          Codigo HTML de las filas que componen la tabla.
+	 *
+	 * @return Entrada HTML de la tabla completa
+	 */
+	private String setHTMLTable(String content) {
+		return "<table cellpadding=\"0\" cellspacing=\"0\" align=\"center\" width=\"100%\">" + content + "</table>";
+	}
+
+	/**
+	 * Genera el HTML para todo el contenido.
+	 *
+	 * @param content
+	 *          Codigo HTML que ira en el <body>...</body>.
+	 *
+	 * @return HTML completo
+	 */
+	private String setHTMLBody(String content) {
+		String html = "<html>";
+		html += "<body bgcolor=" + bgColorBody + " topmargin=\"0\" marginheight=\"0\">";
+		html += content;
+		html += "</body>";
+		html += "</html>";
+		return html;
+	}
+
+	/**
+	 * Método que crea el código HTML para la tabla de información general dentro
+	 * del panel de información de raster
+	 *
+	 * @return String con el cófigo HTML que corresponde con la tabla de
+	 * información general
+	 */
+	public String tablaInfo() {
+		rowColor = true;
+		String cabInfo = PluginServices.getText(this, "general_info");
+		String propiedades = "";
+
+		String cabecera = setHTMLTitleTable(cabInfo, 2);
+		
+		if(op!=null) {
+			
+			op.getFileFormat();
+			
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "archivo"), op.getFileName()[selectedDataSet]);
+			long fileSize = op.getFileSize()[selectedDataSet];
+			if (op instanceof FLyrRasterSE) {
+				FLyrRasterSE rasterSE = (FLyrRasterSE) op;
+				fileSize = rasterSE.getDataSource().getDataset(selectedDataSet)[0].getFileSize();
+			}
+			
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "size"), RasterUtilities.formatFileSize(fileSize) + " ");
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "ancho_alto"), op.getPxWidth() + " X " + op.getPxHeight());
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "formato"), op.getFileFormat());
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "georref"), op.isGeoreferenced() ? PluginServices.getText(this, "si") : PluginServices.getText(this, "no"));
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "nbandas"), new Integer(op.getBandCountFromDataset()[selectedDataSet]).toString());
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "tipo_dato"), RasterUtilities.typesToString(op.getDataType()[0]));
+		}
+		else {
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "archivo"), lyr.getName());
+			if(lyr.getInfoString() != null)
+				propiedades += setHTMLBasicProperty(PluginServices.getText(this, "Informacion"), lyr.getInfoString());
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "Valor_minimo_de_escala"),String.valueOf(lyr.getMinScale()));
+			propiedades += setHTMLBasicProperty(PluginServices.getText(this, "Valor_maximo_de_escala"),String.valueOf(lyr.getMaxScale()));
+		}
+		
+		return setHTMLTable(cabecera + propiedades);
+	}
+
+	/**
+	 * Método que crea el código HTML para la tabla de Coordenadas Geográficas
+	 * dentro del panel de información de raster
+	 *
+	 * @return String con el código HTML que corresponde con la tabla de
+	 *         Coordenadas Geográficas
+	 */
+	public String tablaCoord() {
+		rowColor = true;
+		String cabCoord = PluginServices.getText(this, "coor_geograficas");
+		String propiedades = "";
+
+		String cabecera = setHTMLTitleTable(cabCoord, 2);
+
+		Extent ext = op.getFullRasterExtent();
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "ul"), ext.getULX() + ", " + ext.getULY());
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "lr"), ext.getLRX() + ", " + ext.getLRY());
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "ur"), ext.getURX() + ", " + ext.getURY());
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "ll"), ext.getLLX() + ", " + ext.getLLY());
+
+		double pixelSizeX = op.getAffineTransform().getScaleX();
+		double pixelSizeY = op.getAffineTransform().getScaleY();
+		double rotX = op.getAffineTransform().getShearX();
+		double rotY = op.getAffineTransform().getShearY();
+
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "tamPixX"), String.valueOf(pixelSizeX));
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "tamPixY"), String.valueOf(pixelSizeY));
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "rotX"), String.valueOf(rotX));
+		propiedades += setHTMLBasicProperty(PluginServices.getText(this, "rotY"), String.valueOf(rotY));
+
+		return "<br>" + setHTMLTable(cabecera + propiedades);
+	}
+
+	/**
+	 * Método que crea la tabla de origen de datos dentro del panel
+	 * de Información.
+	 *
+	 * @return String con el código HTML de la tabla.
+	 */
+	public String tablaOrigen() {
+		rowColor = true;
+		String propiedades = "";
+		String bandType = "";
+
+		String cabOrig = PluginServices.getText(this, "origin");
+
+		String cabecera = setHTMLTitleTable(cabOrig, 2);
+
+		for(int j = 0; j < op.getBandCountFromDataset()[selectedDataSet] ; j++) {
+			bandType = RasterUtilities.typesToString(op.getDataType()[j]);
+
+			String data = "";
+			data += "Type=" + bandType;
+			data += ", ";
+			data += "ColorInterp=" + op.getColorInterpretation(j, selectedDataSet);
+			data += ", ";
+			data += "NoData=" + ((FLyrRasterSE) op).getNoDataValue();
+
+			propiedades += setHTMLBasicProperty("Band " + (j + 1), data);
+			
+			if (op instanceof FLyrRasterSE) {
+				FLyrRasterSE rasterSE = (FLyrRasterSE) op;
+				data = "";
+				try {
+					int count = rasterSE.getDataSource().getDataset(selectedDataSet)[0].getOverviewCount(j);
+					if (count > 0) {
+						for (int i = 0; i < count; i++) {
+							if (!data.equals(""))
+								data += ", ";
+					//		data += rasterSE.getDataSource().getDataset(selectedDataSet)[0].getOverviewWidth(j, i);
+							data += "x";
+					//		data += rasterSE.getDataSource().getDataset(selectedDataSet)[0].getOverviewHeight(j, i);
+						}
+						propiedades += setHTMLBasicProperty("Overviews", data);
+					}
+				} catch (BandAccessException e) {
+					// No se obtiene el contador de overviews
+				} catch (RasterDriverException e) {
+					// No se obtiene el contador de overviews
+				}
+			}
+		}
+
+		return "<br>" + setHTMLTable(cabecera + propiedades);
+	}
+
+	/**
+	 * Método para crear la tabla de proyección del raster en el
+	 * panel de información de propiedades de raster.
+	 *
+	 * @return String con el código HTML que genera la tabla de proyección.
+	 */
+	public String tablaProjection() {
+		rowColor = true;
+		String propiedades = "";
+		String projection = null;
+
+		boolean datos = false;
+
+		String cabProjection = PluginServices.getText(this, "projection");
+
+		String cabecera = setHTMLTitleTable(cabProjection, 1);
+
+		String wktProj = null;
+		try {
+			wktProj = op.getWktProjection();
+		} catch (RasterDriverException e) {
+			//No se obtiene la proyección pero no hacemos nada al respecto
+		}
+
+		if(wktProj != null) {
+			projection = RasterUtilities.parserGdalProj(wktProj);
+			if (projection != null){
+				datos = true;
+				propiedades += setHTMLBasicProperty(null, projection);
+			}
+		}
+
+		if (datos == false) return "";
+
+		return "<br>" + setHTMLTable(cabecera + propiedades);
+	//	return null;
+	}
+
+	/**
+	 * Método para crear la tabla de información de 3D en el
+	 * panel de información de propiedades de raster.
+	 *
+	 * @param Vector
+	 *          con los georasterfiles cargados en la capa.
+	 * @return String con el código HTML que genera la tabla.
+	 */
+	public String tablaMetadatos() {
+		rowColor = true;
+		String propiedades = "";
+		String[] metadatos = null;
+
+		DatasetMetadata meta = null;
+		boolean datos = false;
+
+		String cabMeta = PluginServices.getText(this, "metadata");
+
+		String cabecera = setHTMLTitleTable(cabMeta, 2);
+
+		meta = op.getMetadata()[selectedDataSet];
+		if (meta != null){
+			metadatos = meta.getMetadataString();
+			for(int j = 0 ; j<metadatos.length ; j++){
+				datos = true;
+				int index = metadatos[j].indexOf("=");
+
+				propiedades += setHTMLBasicProperty(metadatos[j].substring(0,index), metadatos[j].substring(index+1));
+			}
+		}
+
+		if(datos == false)
+			return "";
+
+		return "<br>" + setHTMLTable(cabecera + propiedades);
+	}
+
+	/**
+	 * Método que dibuja las tablas HTML del panel de información dentro de las
+	 * propiedades de ráster. Se llama cada vez que se actualiza algún dato de las
+	 * tablas.
+	 *
+	 */
+	public void refresh() {
+		boolean refresh = false;
+		
+		if (!jComboBoxEvent) {
+			// Set flag to ensure that an infinite loop is not created
+			jComboBoxEvent = true;
+
+			selectedDataSet = getJComboBox().getSelectedIndex();
+			if (selectedDataSet < 0) selectedDataSet = 0;
+
+			String nameFile = "";
+			getJComboBox().removeAllItems();
+			if(op!=null) {
+				for (int i = 0; i < op.getFileCount(); i++) {
+					nameFile = op.getFileName()[i];
+					nameFile = nameFile.substring(nameFile.lastIndexOf(File.separator) + 1);
+					getJComboBox().addItem(nameFile);
+				}
+				try {
+					// Select previous item
+					getJComboBox().setSelectedIndex(selectedDataSet);
+				} catch (IllegalArgumentException iae) {
+					selectedDataSet = 0;
+				}
+	
+				jComboBoxEvent = false;
+				refresh = true;
+			}
+		}
+
+		String html = "";
+		if ((refresh) && (op.getFileCount() >= 1)) {
+			html = setHTMLBody(tablaInfo() + tablaCoord() + tablaOrigen() + tablaProjection() + tablaMetadatos());
+		}
+		else
+			html = setHTMLBody(tablaInfo());
+
+		this.getJEditorPane().setContentType("text/html");
+		this.getJEditorPane().setText(html);
+		this.getJEditorPane().setCaretPosition(0);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#setReference(java.lang.Object)
+	 */
+	public void setReference(Object ref) {
+		super.setReference(ref);
+
+		if (!(ref instanceof FLayer))
+			return;
+
+
+		lyr = (FLayer) ref;
+		if (lyr instanceof IRasterProperties) {
+			op = (IRasterProperties) lyr;
+			refresh();
+		}
+			
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		refresh();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+	}
+	
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerListener3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerListener3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/VectorialLayerListener3D.java	(revision 29090)
@@ -0,0 +1,180 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import java.awt.geom.Rectangle2D;
+
+import org.apache.log4j.Logger;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.cit.gvsig.exceptions.expansionfile.ExpansionFileReadException;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+
+/**
+* 
+* @version 
+* @author Ángel Fraile Griñán.(angel.fraile@iver.es)
+*/
+
+public class VectorialLayerListener3D {
+
+	private VectorialLayerPanel3D vectorialLayerPanel3D = null;
+	private Layer3DProps props3D;
+	private MapContext3D context;
+	private FLayer flyr;
+	private static Logger logger = Logger.getLogger(VectorialLayerListener3D.class
+			.getName());
+	
+	public VectorialLayerListener3D(VectorialLayerPanel3D panel) {
+		this.vectorialLayerPanel3D = panel;
+	}
+	
+	/**
+	 * Actions to execute when the accept option is pressed
+	 */
+	public void accept() {
+		
+		context = vectorialLayerPanel3D.getMapContext();
+		props3D = vectorialLayerPanel3D.getLayer3DProps();
+		flyr = vectorialLayerPanel3D.getLayer();
+		
+		//Rastering the layer
+		if (vectorialLayerPanel3D.isRasterOptionSelected() && (props3D.getType()!=Layer3DProps.layer3DImage)) {
+			context.pepareLayerToRefresh(flyr);
+			props3D.setType(Layer3DProps.layer3DImage);
+			props3D.setCacheService(null);
+			context.refreshLayer3DProps(flyr);
+		} else if ((!vectorialLayerPanel3D.isZValueSelected())&&(!vectorialLayerPanel3D.isRasterOptionSelected())) {
+					int new_h = 0;
+					int actual_h = 0;
+					
+					try {
+						actual_h = (int)Double.parseDouble(vectorialLayerPanel3D.getMyHeight());
+						new_h = (int)Double.parseDouble(vectorialLayerPanel3D.getJTextFieldHeight());
+					} catch (NumberFormatException e) {
+						logger.error("Command: "
+								+ "Error getting maximun range layer elevation value.", e);
+					}
+					
+					if ((new_h > 0 && new_h!= actual_h) || (actual_h == vectorialLayerPanel3D.getDefaultElevation()) ) //aplicando una altura distinta, si es la misma no se hace nada
+					{
+						context.pepareLayerToRefresh(flyr);
+						props3D.setZEnable(false);
+						props3D.setType(Layer3DProps.layer3DVector);
+						props3D.setCacheService(null);
+						props3D.setHeigth(new_h);
+						context.refreshLayer3DProps(flyr);
+					}//if
+			//else if		
+			} else if(vectorialLayerPanel3D.isZValueSelected() && props3D.getType()!= Layer3DProps.layer3DVector){//Value Z associated to the layer
+				context.pepareLayerToRefresh(flyr);
+				props3D.setType(Layer3DProps.layer3DVector);
+				props3D.setCacheService(null);
+				props3D.setZEnable(true);
+				context.refreshLayer3DProps(flyr);
+				
+			}//else 
+				
+			if(vectorialLayerPanel3D.isDetailOptionSelected()) {
+				Rectangle2D planetExtent = null;
+				Rectangle2D extentLayer = null;
+				
+				try {
+					planetExtent = context.getPlanet().getExtent();
+					extentLayer = flyr.getFullExtent();
+				} catch (ExpansionFileReadException e) {
+					e.printStackTrace();
+				} catch (ReadDriverException e) {
+					e.printStackTrace();
+				}
+				double extPW = planetExtent.getWidth();	// planet width 
+				double extPH = planetExtent.getHeight();// planet hight
+				double extW = extentLayer.getWidth();	// layer width
+				double extH = extentLayer.getHeight();	// layer hight
+				int depth = 0;
+				
+				while(extPW > extW && extPH > extH) {// Calculating level of depth (div x /(2 pow n))
+					
+					extPW = extPW/2;
+					extPH = extPH/2;
+					
+					depth++;//level of depth
+				}//while
+				
+				int order = props3D.getTocOrder();
+ 				context.getPlanet().setMaxTextureResolution(order, depth);//setting new depth to the planet
+			}//if
+			else {
+				int order = props3D.getTocOrder();
+				context.getPlanet().setMaxTextureResolution(order, vectorialLayerPanel3D.getDefaultDepth());
+			}	
+			
+			if(vectorialLayerPanel3D.isRangeOptionSelected()) {
+				
+				int new_max = 0;
+				int new_min = 0;
+				
+				int order = props3D.getTocOrder();
+				try {
+					new_max = (int)Double.parseDouble(vectorialLayerPanel3D.getJTextFieldRangeMax());
+					new_min = (int)Double.parseDouble(vectorialLayerPanel3D.getJTextFieldRangeMin());
+				} catch (NumberFormatException e) {
+					logger.error("Command: "
+							+ "Number format must be a integer.", e);
+				}
+				
+				if ((new_min > vectorialLayerPanel3D.getDefaultMinRange() || new_max < vectorialLayerPanel3D.getDefaultMaxRange())) //aplicando una altura distinta, si es la misma no se hace nada
+				{
+					order = props3D.getTocOrder();
+					
+					context.getPlanet().setMaxTextureRange(order, new_max);
+					context.getPlanet().setMinTextureRange(order, new_min);
+				}//if
+				
+			}//if
+			else {
+				int order = props3D.getTocOrder();
+				context.getPlanet().setMaxTextureRange(order, vectorialLayerPanel3D.getDefaultMaxRange());
+				context.getPlanet().setMinTextureRange(order, vectorialLayerPanel3D.getDefaultMinRange());
+			}//else
+				
+	}
+
+	/**
+	 * Actions to execute when the apply option is pressed
+	 */
+	
+	public void apply() {
+		
+		accept();
+	}
+
+	/**
+	 * Actions to execute when the cancel option is pressed
+	 */
+	public void cancel() {
+		
+	}
+	
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerPanel3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerPanel3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/properties/RasterLayerPanel3D.java	(revision 29090)
@@ -0,0 +1,472 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+
+package org.gvsig.gvsig3dgui.layer.properties;
+
+import java.awt.BorderLayout;
+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 javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.border.TitledBorder;
+
+import org.gvsig.fmap.raster.layers.FLyrRasterSE;
+import org.gvsig.gui.beans.datainput.DataInputContainer;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+
+
+/**
+* 
+* Tab with raster options in properties 3D panel.
+* @version 
+* @author Ángel Fraile Griñán.
+*/
+public class RasterLayerPanel3D extends AbstractPanel implements ItemListener {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -2459859018671566919L;
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	
+	
+	private JPanel panelOptionsRast;
+	private JPanel panelOptionsOff;
+	private JPanel panelOptionsGlob;
+	private TitledBorder borderOptionsRast;
+	private TitledBorder borderOptionsOff;
+	
+	private JCheckBox imageButton;
+	private JCheckBox elevationButton;
+	private Layer3DProps props3D;
+	private DataInputContainer textFieldOffset;
+	private DataInputContainer textFieldFactor;
+	private RasterLayerListener3D rasterLayerListener3D;
+	private JPanel panelOptionsDetail;
+	private JCheckBox detailVector;
+	private TitledBorder borderOptionsDetail;
+	private JCheckBox rangeOption;
+	private DataInputContainer textFieldRangeMin;
+	private DataInputContainer textFieldRangeMax;
+	
+	final int integerMaxRange = 2147483647;	//default maximum visibility range
+	final int integerMinRange = 1;			//default minimum depth value
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public RasterLayerPanel3D() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public RasterLayerPanel3D(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	private RasterLayerListener3D getRasterLayerListener3D() {
+		if (rasterLayerListener3D == null) {
+			rasterLayerListener3D = new RasterLayerListener3D(this);
+		}
+		return rasterLayerListener3D;
+	}
+	
+	/**
+	 * Creating raster 3D properties
+	 */
+	
+	protected void initialize() {
+
+		setLabel(PluginServices.getText(this, PluginServices.getText(this, "Capa_Raster")));
+		setLabelGroup(PluginServices.getText(this, PluginServices.getText(this, "Propiedades_3D")));
+		setPreferredSize(new Dimension(500, 400));
+		resetChangedStatus();
+		
+		panelOptionsGlob = new JPanel();
+		panelOptionsGlob.setLayout(new GridBagLayout());
+
+		GridBagConstraints gbc = new GridBagConstraints();
+		gbc.fill = GridBagConstraints.HORIZONTAL;
+		gbc.weightx = 1.0;
+		gbc.insets = new Insets(0, 0, 0, 0);
+		panelOptionsGlob.add(panelRaster(), gbc);
+		
+		gbc = new GridBagConstraints();
+		gbc.gridy = 1;
+		gbc.fill = GridBagConstraints.BOTH;
+		panelOptionsGlob.add(panelOffset(), gbc);
+
+		gbc = new GridBagConstraints();
+		gbc.fill = GridBagConstraints.BOTH;
+		gbc.gridy = 2;
+		gbc.weighty = 1.0;
+		panelOptionsGlob.add(panelDetail(), gbc);
+
+		this.setLayout(new BorderLayout());
+		this.add(panelOptionsGlob, BorderLayout.CENTER);
+		
+	}
+	
+	
+	/**
+	 * Creating subpanel with representation raster option
+	 * @return JPanel panelOptionRast
+	 */
+	
+	private JPanel panelRaster() {
+		if (panelOptionsRast == null) {
+			
+			panelOptionsRast = new JPanel();
+			borderOptionsRast = new TitledBorder(PluginServices.getText(this, "Opciones_de_imagen"));
+			panelOptionsRast.setLayout(new GridBagLayout());
+			panelOptionsRast.setBorder(this.borderOptionsRast);
+			
+			GridBagConstraints gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.weightx = 1.0;
+			gbc.insets = new Insets(0, 0, 0, 0);
+			panelOptionsRast.add(getJCheckBoxTerrain(),gbc);
+			
+		}
+		return panelOptionsRast;
+	}
+	
+	/**
+	 * Creating subpanel with raster option
+	 * @return JPanel panelOptionRast
+	 */
+	
+	private JPanel panelOffset() {
+		
+		if (panelOptionsOff == null) {
+			
+			panelOptionsOff = new JPanel();
+			borderOptionsOff = new TitledBorder(PluginServices.getText(this, "Opciones_de_elevación"));
+			panelOptionsOff.setLayout(new GridBagLayout());
+			panelOptionsOff.setBorder(this.borderOptionsOff);
+			
+			GridBagConstraints gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.weightx = 1;
+			gbc.insets = new Insets(0, 0, 10, 0);
+			panelOptionsOff.add(getJCheckBoxElevation(),gbc);
+			
+			textFieldOffset = new DataInputContainer();
+			textFieldOffset.setLabelText("Offset");
+			textFieldOffset.setControlEnabled(false);
+			gbc.gridy = 1;
+			panelOptionsOff.add(textFieldOffset, gbc);
+			
+			textFieldFactor = new DataInputContainer();
+			textFieldFactor.setLabelText("Factor");
+			textFieldFactor.setControlEnabled(false);
+			gbc.gridy = 2;
+			panelOptionsOff.add(textFieldFactor, gbc);
+		}
+		return panelOptionsOff;
+	}
+	
+	
+private JPanel panelDetail() {
+		
+		if (panelOptionsDetail == null) {
+			
+			panelOptionsDetail = new JPanel();
+			borderOptionsDetail = new TitledBorder(PluginServices.getText(this, "Nivel_de_detalle"));
+			panelOptionsDetail.setLayout(new GridBagLayout());
+			panelOptionsDetail.setBorder(this.borderOptionsDetail);
+			
+			GridBagConstraints gbc = new GridBagConstraints();
+			gbc.fill = GridBagConstraints.HORIZONTAL;
+			gbc.weightx = 1;
+			gbc.insets = new Insets(0, 0, 10, 0);
+		//	panelOptionsDetail.add(getJCheckBoxDetail(),gbc);
+			
+			gbc.gridy = 1;
+			panelOptionsDetail.add(getJCheckBoxRange(),gbc);
+			
+			gbc.gridy = 2;
+			panelOptionsDetail.add(getLabelMinRange(), gbc);
+			
+			gbc.gridy = 3;
+			panelOptionsDetail.add(getLabelMaxRange(), gbc);
+			
+			gbc = new GridBagConstraints();
+			gbc.weighty = 1.0;
+			gbc.gridy = 4;
+			panelOptionsDetail.add(new JPanel(), gbc);
+		}
+		return panelOptionsDetail;
+	}
+	
+	private JCheckBox getJCheckBoxRange() {
+		if (rangeOption == null) {
+			rangeOption = new JCheckBox(PluginServices.getText(this, "Activar_intervalo"),
+					false);
+			rangeOption.addItemListener(this);
+			rangeOption.setEnabled(true);
+		}
+		return rangeOption;
+	}
+
+	
+	private DataInputContainer getLabelMaxRange() {
+		if(textFieldRangeMax == null)
+		{
+			textFieldRangeMax = new DataInputContainer();
+			textFieldRangeMax.setLabelText(PluginServices.getText(this,"Rango_maximo"));
+			textFieldRangeMax.setControlEnabled(false);
+			//if(!this.getMyRangeMax().equals(String.valueOf(integerMaxRange)))
+				textFieldRangeMax.setValue(this.getMyRangeMax());
+			//else
+			//	textFieldRangeMax.setValue("0");
+		}	
+		
+		return textFieldRangeMax;
+	}
+	
+	
+	/*
+	 * Return actual least texture range as String
+	 */
+	private String getMyRangeMax() {
+		String rangeMax = String.valueOf(integerMaxRange);;
+		try {
+			int order = props3D.getTocOrder();
+			int alt =  this.getMapContext().getPlanet().getMaxTextureRange(order);
+			rangeMax = Integer.toString(alt);
+		}
+		catch (Exception e) {
+//			logger.error("Command: "
+//					+ "Error getting maximun range layer elevation value.", e);
+		}
+		return rangeMax;
+	}
+	
+	private DataInputContainer getLabelMinRange() {
+		if(textFieldRangeMin == null)
+		{
+			textFieldRangeMin = new DataInputContainer();
+			textFieldRangeMin.setLabelText(PluginServices.getText(this,"Rango_minimo"));
+			textFieldRangeMin.setControlEnabled(false);
+		//	if(!this.getMyRangeMin().equals(String.valueOf(integerMinRange)))
+				textFieldRangeMin.setValue(this.getMyRangeMin());
+		//	else
+		//		textFieldRangeMin.setValue("0");
+		}
+		
+		return textFieldRangeMin;
+	}
+	
+	/*
+	 * Return actual minim texture range as String
+	 */
+	private String getMyRangeMin() {
+		String rangeMin = String.valueOf(integerMinRange);
+		try {
+			int order = props3D.getTocOrder();
+			int alt =  this.getMapContext().getPlanet().getMinTextureRange(order);
+			rangeMin = Integer.toString(alt);
+		}
+		catch (Exception e) {
+//			logger.error("Command: "
+//					+ "Error getting least range layer elevation value.", e);
+		}
+		return rangeMin;
+	}
+	
+	
+	/**
+	 * @return JCheckbox. Return the checkbox of selection of image options
+	 */
+	private JCheckBox getJCheckBoxDetail() {
+		if (detailVector == null) {
+			detailVector = new JCheckBox(
+					PluginServices.getText(this, "Activar"), false);
+			detailVector.addItemListener(this);
+		}
+		return detailVector;
+	}
+	
+	/**
+	 * @return JCheckbox. Return the checkbox of selection of image options
+	 */
+	private JCheckBox getJCheckBoxTerrain() {
+		if (imageButton == null) {
+			imageButton = new JCheckBox(
+					PluginServices.getText(this, "Pegado_sobre_el_terreno"), false);
+			imageButton.addItemListener(this);
+		}
+		return imageButton;
+	}
+	
+	/**
+	 * @return JCheckbox. Return the checkbox of selection of elevation options
+	 *
+	 */
+	private JCheckBox getJCheckBoxElevation() {
+		if (elevationButton == null) {
+			elevationButton = new JCheckBox(PluginServices.getText(this, "Elevacion"),
+					false);
+			elevationButton.addItemListener(this);
+		}
+		return elevationButton;
+	}
+		
+	/*
+	 * Calling the listener
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		getRasterLayerListener3D().accept();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		getRasterLayerListener3D().apply();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		getRasterLayerListener3D().cancel();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		
+	}
+
+	/**
+	 * Ekevation option selected.
+	 * @return boolean
+	 */
+	public boolean isElevationOptionSelected() {
+		return getJCheckBoxElevation().isSelected();
+	}
+
+	public boolean isTerrainOptionSelected() {
+		return getJCheckBoxTerrain().isSelected();
+	}
+	
+	/**
+	 * Logic with active or innactive options.
+	 */
+	public void itemStateChanged(ItemEvent e) {
+		
+		elevationButton.setEnabled(!imageButton.isSelected());
+		imageButton.setEnabled(!elevationButton.isSelected());
+		textFieldFactor.setControlEnabled(elevationButton.isSelected());
+		textFieldOffset.setControlEnabled(elevationButton.isSelected());
+		textFieldRangeMin.setControlEnabled(rangeOption.isSelected());
+		textFieldRangeMax.setControlEnabled(rangeOption.isSelected());
+		
+	}
+	
+	public String getJTextFieldOffset() {
+		return textFieldOffset.getValue();
+	}
+	
+	public String getJTextFieldFactor() {
+		return textFieldFactor.getValue();
+	}
+	
+	/**
+	 * Getting the 3D properties
+	 * @return Layer3DProps
+	 */
+	public Layer3DProps getLayer3DProps() {
+		return props3D;
+	}
+	
+	/**
+	 * Getting the map context
+	 * @return MapContext3D
+	 */
+	public MapContext3D getMapContext() {
+		FLayer fl = (FLayer)this.getReference();
+		MapContext3D mc = (MapContext3D)fl.getMapContext();
+		return mc;
+	}
+	
+
+	/**
+	 * Getting the selected layer
+	 * @return Flayer
+	 */
+	public FLayer getLayer() {
+		return (FLayer)this.getReference();
+	}
+	
+	
+	/**
+	 * Option level of detail selected
+	 * @return boolean
+	 */
+	public boolean isDetailOptionSelected() {
+		return getJCheckBoxDetail().isSelected();
+	}
+	
+	/**
+	 * Getting the objet(the selected layer). Updating the panel with the 
+	 * actual properties of the model.
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#setReference(java.lang.Object)
+	 */
+	public void setReference(Object arg0) {
+		super.setReference(arg0);
+		props3D = Layer3DProps.getLayer3DProps((FLayer)this.getReference());
+	//	updatePanel();
+		
+	}
+	private void updatePanel() {
+		if(props3D.getType() == Layer3DProps.layer3DImage) {
+			FLyrRasterSE rasterLayer = (FLyrRasterSE)this.getReference();
+			if (rasterLayer.getBandCount() == 1) {
+				elevationButton.setEnabled(true);
+			}
+			else
+				elevationButton.setEnabled(false);
+		}
+	}
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/MenuZoom3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/MenuZoom3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layer/MenuZoom3D.java	(revision 29090)
@@ -0,0 +1,161 @@
+package org.gvsig.gvsig3dgui.layer;
+
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.JOptionPane;
+
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+
+public class MenuZoom3D extends Extension {
+
+
+	private boolean activa = true;
+
+	public void execute(String actionCommand) {
+		// System.out.println("EXECUTE");
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+		// Casting to View3D
+		View3D vista3D = (View3D) view;
+		IProjectView model = vista3D.getModel();
+		MapContext mapa = model.getMapContext();
+
+		// Action for ZOOM_SELECT
+		if (actionCommand.equals("ZOOM_SELECT")) {
+			// Getting all selected Extent
+			FLayer[] selectedExtent = mapa.getLayers().getActives();
+
+			// If there is not one and is available
+			if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()
+					&& (selectedExtent[0] instanceof FLyrVect)) {
+				// Getting selected layer
+				FLyrVect lyr3D = (FLyrVect) selectedExtent[0];
+				// Gettin extend
+				Rectangle2D ex = mapa.getSelectionBounds();
+				// ex = lyr3D.getFullExtent();
+				if (ex != null)
+					// Doing zoom
+					mapa.zoomToExtent(ex);
+			}
+
+		}
+		// Action for TRANSPARENCY
+		if (actionCommand.equals("TRANSPARENCY")) {
+			FLayer[] selectedExtent = mapa.getLayers().getActives();
+
+			// If there is not one and is available
+			if (selectedExtent.length == 1 && selectedExtent[0].isAvailable()) {
+				// // && (selectedExtent[0] instanceof FLyrVect)) {
+				 FLayer lyr3D = selectedExtent[0];
+				Layer3DProps props = Layer3DProps.getLayer3DProps(lyr3D);
+				if (props.getType() == Layer3DProps.layer3DImage) {
+					// Generating transparency panel
+					TransparencyPanel transparencyPanel = new TransparencyPanel(
+							vista3D.getModel());
+					// Showing it
+					PluginServices.getMDIManager().addWindow(transparencyPanel);
+				} else {
+					JOptionPane.showMessageDialog(null, PluginServices.getText(
+							this, "No_available"));
+				}
+			}
+
+		}
+
+	}
+
+	public void initialize() {
+		
+		// Register new icons
+		// zoom to selection
+		PluginServices.getIconTheme().registerDefault(
+				"zoom-selection-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/ZoomSeleccion.png"));
+		// transparency
+		PluginServices.getIconTheme().registerDefault(
+				"transparency-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/Alpha.png"));
+		
+		
+		this.setActiva(true);
+	}
+
+	public boolean isEnabled() {
+		View3D f = (View3D) PluginServices.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+		try {
+
+			// If the selected layer is instance of FlyrVect isEnable = true
+			FLayer[] selected = f.getModel().getMapContext().getLayers()
+					.getActives();
+			Layer3DProps props = Layer3DProps.getLayer3DProps(selected[0]);
+			if ((selected.length == 1) && (selected[0].isAvailable())) {
+				if ((props.getType() == Layer3DProps.layer3DImage)
+						|| (props.getType() == Layer3DProps.layer3DVector))
+					return true;
+			}
+		} catch (Exception e) {
+			return false;
+		}
+
+		// if (selected.length == 1 && selected[0] instanceof FLyrVect
+		// && selected[0].isAvailable()) {
+		// return true;
+		// }
+		// if (selected.length == 1 && selected[0] instanceof FLyrWMS
+		// && selected[0].isAvailable()) {
+		// return true;
+		// }
+		return false;
+		// return true;
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			return mapa.getLayers().getLayersCount() > 0;
+		}
+		return false;
+	}
+
+	public void terminate() {
+		super.terminate();
+	}
+
+	public boolean isActiva() {
+		return activa;
+	}
+
+	public void setActiva(boolean activa) {
+		this.activa = activa;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/LayoutAddView3DListenerImpl.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/LayoutAddView3DListenerImpl.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/LayoutAddView3DListenerImpl.java	(revision 29090)
@@ -0,0 +1,118 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.layout;
+
+import java.awt.Image;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.gvsig3dgui.layout.fframe.FFrameView3D;
+import org.gvsig.gvsig3dgui.layout.fframe.FFrameView3DFractory;
+import org.gvsig.gvsig3dgui.layout.fframe.gui.dialog.FFrameView3DDialog;
+
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.tools.BehaviorException;
+import com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent;
+import com.iver.cit.gvsig.project.documents.layout.FLayoutUtilities;
+import com.iver.cit.gvsig.project.documents.layout.fframes.FrameFactory;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
+import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
+import com.iver.cit.gvsig.project.documents.layout.tools.listener.LayoutAddRectangleListener;
+
+
+/**
+ * Implementación de la interfaz LayoutRectangleListener como herramienta para
+ * realizar una inserción por rectángulo.
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class LayoutAddView3DListenerImpl extends LayoutAddRectangleListener {
+//	private final Image img = new ImageIcon(MapControl.class.getResource(
+//				"images/RectSelectCursor.gif")).getImage();
+	private final Image img = PluginServices.getIconTheme().get("rect-select-cursor").getImage();
+
+	/**
+	 * Crea un nuevo LayoutAddRectangleListener.
+	 *
+	 * @param l Layout.
+	 */
+	public LayoutAddView3DListenerImpl(Layout l) {
+		super(l);
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.tools.Listeners.RectangleListener#rectangle(com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent)
+	 */
+	public void rectangle(RectangleEvent event) throws BehaviorException {
+		FFrameView3D fframe =(FFrameView3D)FrameFactory.createFrameFromName(FFrameView3DFractory.registerName);
+
+		fframe.setLayout(layout);
+		Rectangle2D r = new Rectangle2D.Double(); //rectOrigin.x+m_PointAnt.x,rectOrigin.y+m_PointAnt.y,m_LastPoint.x-m_PointAnt.x,m_LastPoint.y-m_PointAnt.y);
+
+		r=getRectangle(TOLERANCE);
+		fframe.setBoundBox(FLayoutUtilities.toSheetRect(r, layout.getLayoutControl().getAT()));
+		FFrameView3DDialog fframedialog = new FFrameView3DDialog(layout, fframe);
+		 if (fframedialog != null) {
+	            fframedialog.setRectangle(fframe.getBoundingBox(layout.getLayoutControl().getAT()));
+	            PluginServices.getMDIManager().addWindow(fframedialog);
+	        }
+
+	    IFFrame newFrame= fframedialog.getFFrame();
+		if (newFrame!=null) {
+			layout.getLayoutContext().addFFrame(newFrame, true,true);
+		}
+        PluginServices.getMainFrame().enableControls();
+        layout.getLayoutControl().refresh();
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
+	 */
+	public Image getImageCursor() {
+		return img;
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#cancelDrawing()
+	 */
+	public boolean cancelDrawing() {
+		return false;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/gui/dialog/FFrameView3DDialog.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/gui/dialog/FFrameView3DDialog.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/gui/dialog/FFrameView3DDialog.java	(revision 29090)
@@ -0,0 +1,628 @@
+/*
+ * Created on 01-jun-2004
+ *
+ */
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.layout.fframe.gui.dialog;
+
+import java.awt.Dimension;
+import java.awt.geom.Rectangle2D;
+
+import javax.swing.JList;
+import javax.swing.JPanel;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.ViewPort3D;
+import org.gvsig.gvsig3dgui.layout.fframe.FFrameView3D;
+import org.gvsig.gvsig3dgui.layout.fframe.ListView3DModel;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.project.documents.layout.FLayoutUtilities;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
+import com.iver.cit.gvsig.project.documents.layout.fframes.gui.JPRotation;
+import com.iver.cit.gvsig.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
+import com.iver.cit.gvsig.project.documents.view.ProjectViewBase;
+
+
+/**
+ * Diálogo para añadir una vista al Layout.
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameView3DDialog extends JPanel implements IFFrameDialog {
+	private javax.swing.JPanel jContentPane = null;
+	private javax.swing.JLabel lVistas = null;
+	private javax.swing.JScrollPane jScrollPane = null;
+	private javax.swing.JList liVistas = null; //  @jve:visual-info  decl-index=0 visual-constraint="98,-3"
+	private javax.swing.JCheckBox chbEnlaceVivo = null;
+	private javax.swing.JLabel lEscala = null;
+	private javax.swing.JComboBox cbEscala = null;
+	private javax.swing.JLabel lEscalaNumerica = null;
+	private javax.swing.JTextField tEscalaNumerica = null;
+	private javax.swing.JLabel lExtension = null;
+	private javax.swing.JComboBox cbExtension = null;
+	private javax.swing.JLabel lVisualizacion = null;
+	private javax.swing.JComboBox cbVisualizacion = null;
+	private javax.swing.JButton bAceptar = null;
+	private javax.swing.JButton bCancelar = null;
+	private javax.swing.JLabel lCalidad = null;
+	private javax.swing.JComboBox cbCalidad = null;
+	private ProjectViewBase m_projectView = null;
+	private Rectangle2D rect = new Rectangle2D.Double();
+	private FFrameView3D fframeview = null; //new FFrameView();
+	private Layout m_layout = null;
+	private boolean isAcepted = false;
+	private JPRotation rotation = null;
+	private FFrameView3D newFFrameView=null;
+	/**
+	 * This is the default constructor
+	 *
+	 * @param layout Referencia al Layout.
+	 * @param fframe Referencia al fframe vista.
+	 */
+	public FFrameView3DDialog(Layout layout, FFrameView3D fframe) {
+		super();
+		fframeview = fframe;
+		m_layout = layout;
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		this.setLayout(null);
+		this.add(getJContentPane(), null);
+		this.setSize(463, 222);
+
+		if (fframeview.getTypeScale() == 0 || fframeview.getTypeScale() == 1) {
+				getTEscalaNumerica().setEnabled(false);
+			}else{
+				getTEscalaNumerica().setEnabled(true);
+			}
+		getPRotation().setRotation(fframeview.getRotation());
+	}
+
+	/**
+	 * Inserta el rectángulo que ocupará el fframe vista.
+	 *
+	 * @param r Rectángulo.
+	 */
+	public void setRectangle(Rectangle2D r) {
+		rect.setRect(r);
+	}
+
+	/**
+	 * This method initializes jContentPane
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private javax.swing.JPanel getJContentPane() {
+		if (jContentPane == null) {
+			jContentPane = new javax.swing.JPanel();
+			jContentPane.setLayout(null);
+			jContentPane.add(getLVistas(), null);
+			jContentPane.add(getJScrollPane(), null);
+//			jContentPane.add(getChbEnlaceVivo(), null);
+//			jContentPane.add(getLEscala(), null);
+//			jContentPane.add(getCbEscala(), null);
+//			jContentPane.add(getLEscalaNumerica(), null);
+//			jContentPane.add(getTEscalaNumerica(), null);
+//			jContentPane.add(getLExtension(), null);
+//			jContentPane.add(getCbExtension(), null);
+			jContentPane.add(getLVisualizacion(), null);
+			jContentPane.add(getCbVisualizacion(), null);
+//			jContentPane.add(getLCalidad(), null);
+//			jContentPane.add(getCbCalidad(), null);
+			jContentPane.add(getbAceptar(), null);
+			jContentPane.add(getBCancelar(), null);
+			jContentPane.setSize(462, 220);
+			jContentPane.setPreferredSize(new java.awt.Dimension(60, 60));
+			jContentPane.setLocation(0, 0);
+			jContentPane.add(getPRotation(), null);
+		}
+
+		return jContentPane;
+	}
+
+	/**
+	 * This method initializes lVistas
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLVistas() {
+		if (lVistas == null) {
+			lVistas = new javax.swing.JLabel();
+			lVistas.setSize(85, 19);
+			lVistas.setText(PluginServices.getText(this, "Vista"));
+			lVistas.setLocation(10, 10);
+		}
+
+		return lVistas;
+	}
+
+	/**
+	 * This method initializes jScrollPane
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	private javax.swing.JScrollPane getJScrollPane() {
+		if (jScrollPane == null) {
+			jScrollPane = new javax.swing.JScrollPane();
+			jScrollPane.setViewportView(getLiVistas());
+			jScrollPane.setBounds(99, 8, 224, 64);
+			jScrollPane.setPreferredSize(new java.awt.Dimension(250, 60));
+		}
+
+		return jScrollPane;
+	}
+
+	/**
+	 * This method initializes liVistas
+	 *
+	 * @return javax.swing.JList
+	 */
+	private javax.swing.JList getLiVistas() {
+		if (liVistas == null) {
+			ListView3DModel listmodel = new ListView3DModel();
+			listmodel.addViews();
+			liVistas = new javax.swing.JList();
+			liVistas.setModel(listmodel);
+			for (int i = 0; i < liVistas.getModel().getSize(); i++) {
+				if ((fframeview.getMapContext() != null) && (fframeview.getMapContext() instanceof MapContext3D)){
+
+					ProjectViewBase pvaux= (ProjectViewBase) liVistas.getModel()
+														  .getElementAt(i);
+
+					if (pvaux.getMapContext().equals(fframeview.getMapContext())) {
+						liVistas.setSelectedIndex(i);
+						m_projectView= (ProjectViewBase) liVistas.getModel()
+						  .getElementAt(i);
+					}
+				}
+			}
+
+			liVistas.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+					private int selectIndex=-1;
+					private Rectangle2D boundBox;
+					public void valueChanged(
+						javax.swing.event.ListSelectionEvent e) {
+						int selectInt = ((JList)e.getSource()).getSelectedIndex();
+						if (selectInt!=selectIndex){
+							selectIndex=selectInt;
+							if (selectIndex==-1)
+								return;
+						m_projectView = (ProjectViewBase) liVistas.getModel()
+															  .getElementAt(selectInt);
+
+						getCbEscala().setSelectedItem(PluginServices.getText(this, "automatico"));
+						boundBox=FLayoutUtilities.toSheetRect(rect, m_layout.getLayoutControl().getAT());
+//						fframeview.setBoundBox(FLayoutUtilities.toSheetRect(
+//								rect, m_layout.getAT()));
+
+//						fframeview.setView(m_projectView);
+//
+//						fframeview.setMapUnits(m_projectView.getMapContext()
+//															.getViewPort()
+//															.getMapUnits());
+						ViewPort3D vp=(ViewPort3D) m_projectView.getMapContext().getViewPort();//.cloneViewPort();
+						vp.setImageSize(new Dimension((int)rect.getWidth(),(int)rect.getHeight()));
+						getTEscalaNumerica().setText(String.valueOf(FLayoutUtilities.getScaleView(vp,
+				                boundBox.getWidth(), FLayoutUtilities.fromSheetDistance(boundBox.getWidth(),m_layout.getLayoutControl().getAT()))));
+//						getTEscalaNumerica().setText(String.valueOf(
+//								fframeview.getScale()));
+					}
+					}
+				});
+		}
+
+		return liVistas;
+	}
+
+	/**
+	 * This method initializes chbEnlaceVivo
+	 *
+	 * @return javax.swing.JCheckBox
+	 */
+	private javax.swing.JCheckBox getChbEnlaceVivo() {
+		if (chbEnlaceVivo == null) {
+			chbEnlaceVivo = new javax.swing.JCheckBox();
+			chbEnlaceVivo.setSize(88, 24);
+			chbEnlaceVivo.setText(PluginServices.getText(this, "enlace_vivo"));
+			chbEnlaceVivo.setSelected(fframeview.getLinked());
+			chbEnlaceVivo.setLocation(10, 75);
+			chbEnlaceVivo.setEnabled(true);
+			chbEnlaceVivo.addActionListener(new java.awt.event.ActionListener() {
+					public void actionPerformed(java.awt.event.ActionEvent e) {
+						System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
+					}
+				});
+		}
+
+		return chbEnlaceVivo;
+	}
+
+	/**
+	 * This method initializes lEscala
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLEscala() {
+		if (lEscala == null) {
+			lEscala = new javax.swing.JLabel();
+			lEscala.setSize(86, 16);
+			lEscala.setText(PluginServices.getText(this, "escala"));
+			lEscala.setLocation(10, 105);
+		}
+
+		return lEscala;
+	}
+
+	/**
+	 * This method initializes cbEscala
+	 *
+	 * @return javax.swing.JComboBox
+	 */
+	private javax.swing.JComboBox getCbEscala() {
+		if (cbEscala == null) {
+			//String[] s={"Automático","Conservar escala de visualización","Escala especificada por el usuario"};
+			cbEscala = new javax.swing.JComboBox();
+			cbEscala.setSize(220, 20);
+			cbEscala.addItem(PluginServices.getText(this, "automatico"));
+			cbEscala.addItem(PluginServices.getText(this,
+					"conservar_escala_visualizacion"));
+			cbEscala.addItem(PluginServices.getText(this, "escala_usuario"));
+			cbEscala.setSelectedIndex(fframeview.getTypeScale());
+
+			if (fframeview.getTypeScale() == 0 || fframeview.getTypeScale() == 1) {
+				getTEscalaNumerica().setEnabled(false);
+			}else{
+				getTEscalaNumerica().setEnabled(true);
+			}
+
+			cbEscala.setPreferredSize(new java.awt.Dimension(200, 20));
+			cbEscala.setLocation(100, 105);
+			cbEscala.addActionListener(new java.awt.event.ActionListener() {
+					public void actionPerformed(java.awt.event.ActionEvent e) {
+						if (cbEscala.getSelectedIndex() == 2) {
+							getTEscalaNumerica().setEnabled(true);
+						} else {
+							getTEscalaNumerica().setEnabled(false);
+						}
+					}
+				});
+		}
+
+		return cbEscala;
+	}
+
+	/**
+	 * This method initializes lEscalaNumerica
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLEscalaNumerica() {
+		if (lEscalaNumerica == null) {
+			lEscalaNumerica = new javax.swing.JLabel();
+			lEscalaNumerica.setSize(86, 16);
+			lEscalaNumerica.setText("1:");
+			lEscalaNumerica.setLocation(10, 130);
+		}
+
+		return lEscalaNumerica;
+	}
+
+	/**
+	 * This method initializes tEscalaNumerica
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	private javax.swing.JTextField getTEscalaNumerica() {
+		if (tEscalaNumerica == null) {
+			tEscalaNumerica = new javax.swing.JTextField();
+			tEscalaNumerica.setSize(220, 20);
+			tEscalaNumerica.setPreferredSize(new java.awt.Dimension(200, 20));
+
+			if (m_projectView != null) {
+				tEscalaNumerica.setText(String.valueOf(fframeview.getScale()));
+			}
+			tEscalaNumerica.setLocation(100, 130);
+			tEscalaNumerica.setEnabled(false);
+		}
+
+		return tEscalaNumerica;
+	}
+
+	/**
+	 * This method initializes lExtension
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLExtension() {
+		if (lExtension == null) {
+			lExtension = new javax.swing.JLabel();
+			lExtension.setSize(86, 16);
+			lExtension.setText(PluginServices.getText(this, "extension"));
+			lExtension.setLocation(10, 155);
+			lExtension.setVisible(false);
+		}
+
+		return lExtension;
+	}
+
+	/**
+	 * This method initializes cbExtension
+	 *
+	 * @return javax.swing.JComboBox
+	 */
+	private javax.swing.JComboBox getCbExtension() {
+		if (cbExtension == null) {
+			//String[] s={"Rellenar marco de la vista","Recorte a vista"};
+			cbExtension = new javax.swing.JComboBox();
+			cbExtension.setSize(220, 20);
+			cbExtension.addItem(PluginServices.getText(this,
+					"rellenar_marco_vista"));
+			cbExtension.addItem(PluginServices.getText(this, "recorte_vista"));
+
+			cbExtension.setPreferredSize(new java.awt.Dimension(200, 20));
+			cbExtension.setLocation(100, 155);
+			cbExtension.setEnabled(false);
+			cbExtension.setVisible(false);
+		}
+
+		return cbExtension;
+	}
+
+	/**
+	 * This method initializes jLabel4
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLVisualizacion() {
+		if (lVisualizacion == null) {
+			lVisualizacion = new javax.swing.JLabel();
+			lVisualizacion.setSize(86, 16);
+			lVisualizacion.setText(PluginServices.getText(this, "visualizacion"));
+			lVisualizacion.setLocation(10, 155);
+			lVisualizacion.setVisible(false);
+		}
+
+		return lVisualizacion;
+	}
+
+	/**
+	 * This method initializes cbVisualizacion
+	 *
+	 * @return javax.swing.JComboBox
+	 */
+	private javax.swing.JComboBox getCbVisualizacion() {
+		if (cbVisualizacion == null) {
+			//String[] s={"Cuando activo","Siempre"};
+			cbVisualizacion = new javax.swing.JComboBox();
+			cbVisualizacion.setSize(220, 20);
+			cbVisualizacion.addItem(PluginServices.getText(this, "cuando_activo"));
+			cbVisualizacion.addItem(PluginServices.getText(this, "siempre"));
+			cbVisualizacion.setSelectedIndex(fframeview.getViewing());
+			cbVisualizacion.setPreferredSize(new java.awt.Dimension(200, 20));
+			cbVisualizacion.setLocation(100, 180);
+			cbVisualizacion.setEnabled(false);
+			cbVisualizacion.setVisible(false);
+		}
+
+		return cbVisualizacion;
+	}
+
+	/**
+	 * This method initializes jButton
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getbAceptar() {
+		if (bAceptar == null) {
+			bAceptar = new javax.swing.JButton();
+			bAceptar.setSize(85, 26);
+			bAceptar.setText(PluginServices.getText(this, "Aceptar"));
+			bAceptar.setLocation(55, 179);
+			bAceptar.addActionListener(new java.awt.event.ActionListener() {
+					public void actionPerformed(java.awt.event.ActionEvent e) {
+						newFFrameView=(FFrameView3D)fframeview.cloneFFrame(m_layout);
+						newFFrameView.setBoundBox(FLayoutUtilities.toSheetRect(
+								rect, m_layout.getLayoutControl().getAT()));
+						newFFrameView.setRotation(getPRotation().getRotation());
+						if (m_projectView != null) {
+							newFFrameView.setLinked(getChbEnlaceVivo().isSelected());
+							newFFrameView.setName(m_projectView.getName());
+
+							newFFrameView.setTypeScale(getCbEscala()
+														.getSelectedIndex());
+							newFFrameView.setScale(Double.parseDouble(
+									getTEscalaNumerica().getText()));
+							newFFrameView.setView(m_projectView);
+
+							//fframeview.setFMap(m_projectView.getMapContext());
+							newFFrameView.setExtension(getCbExtension()
+														.getSelectedIndex());
+							newFFrameView.setViewing(getCbVisualizacion()
+													  .getSelectedIndex());
+							newFFrameView.setQuality(getCbCalidad()
+													  .getSelectedIndex());
+							newFFrameView.setBoundBox(FLayoutUtilities.toSheetRect(
+									rect, m_layout.getLayoutControl().getAT()));
+
+							/*        for (int i=0;i<m_layout.getFFrames().size();i++){
+							   IFFrame fframe=(IFFrame)m_layout.getFFrames().get(i);
+							   if (fframe instanceof FFrameScaleBar){
+							           if (((FFrameScaleBar)fframe).getFFrameView()==fframeview){
+							           if (getJComboBox().getSelectedIndex()!=0){
+							           ((FFrameScaleBar)fframe).setIsFixed(true);
+							           ((FFrameScaleBar)fframe).setScaleView(Long.parseLong(getJTextField().getText()));
+							           }else{
+							                   ((FFrameScaleBar)fframe).setIsFixed(false);
+							           }
+
+							           }
+							   }
+
+
+							   }
+							 */
+						}
+
+						isAcepted = true;
+
+						//}else{
+						//	isAcepted=false;
+						//}
+						PluginServices.getMDIManager().closeWindow(FFrameView3DDialog.this);
+					}
+				});
+		}
+
+		return bAceptar;
+	}
+
+	/**
+	 * This method initializes bCancelar
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBCancelar() {
+		if (bCancelar == null) {
+			bCancelar = new javax.swing.JButton();
+			bCancelar.setSize(85, 26);
+			bCancelar.setText(PluginServices.getText(this, "Cancelar"));
+			bCancelar.setLocation(195, 179);
+			bCancelar.addActionListener(new java.awt.event.ActionListener() {
+					public void actionPerformed(java.awt.event.ActionEvent e) {
+						newFFrameView=null;
+						PluginServices.getMDIManager().closeWindow(FFrameView3DDialog.this);
+					}
+				});
+		}
+
+		return bCancelar;
+	}
+
+	/**
+	 * This method initializes lCalidad
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	private javax.swing.JLabel getLCalidad() {
+		if (lCalidad == null) {
+			lCalidad = new javax.swing.JLabel();
+			lCalidad.setSize(86, 16);
+			lCalidad.setText(PluginServices.getText(this, "calidad"));
+			lCalidad.setLocation(10, 155);
+		}
+
+		return lCalidad;
+	}
+
+	/**
+	 * This method initializes cbCalidad
+	 *
+	 * @return javax.swing.JComboBox
+	 */
+	private javax.swing.JComboBox getCbCalidad() {
+		if (cbCalidad == null) {
+			//String[] s={"Presentación","Borrador"};
+			cbCalidad = new javax.swing.JComboBox();
+			cbCalidad.setSize(220, 20);
+			cbCalidad.addItem(PluginServices.getText(this, "presentacion"));
+			cbCalidad.addItem(PluginServices.getText(this, "borrador"));
+			cbCalidad.setSelectedIndex(fframeview.getQuality());
+			cbCalidad.setPreferredSize(new java.awt.Dimension(200, 20));
+			cbCalidad.setLocation(100, 155);
+		}
+
+		return cbCalidad;
+	}
+
+	/* (non-Javadoc)
+	 * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
+	 */
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG);
+
+		//vi.setResizable(false);
+		m_viewinfo.setTitle(PluginServices.getText(this,
+				"propiedades_marco_vista"));
+
+		return m_viewinfo;
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.project.documents.layout.fframes.gui.dialogs.IFFrameDialog#getIsAcepted()
+	 */
+	public boolean getIsAcepted() {
+		return isAcepted;
+	}
+
+	/**
+	 * @see com.iver.mdiApp.ui.MDIManager.IWindow#windowActivated()
+	 */
+	public void viewActivated() {
+	}
+
+	/**
+	 * This method initializes rotation
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPRotation getPRotation() {
+		if (rotation == null) {
+			rotation = new JPRotation();
+			rotation.setBounds(330, 90, 120, 120);
+		}
+		return rotation;
+	}
+
+	public IFFrame getFFrame() {
+		return newFFrameView;
+	}
+	public Object getWindowProfile() {
+		return WindowInfo.DIALOG_PROFILE;
+	}
+}  //  @jve:decl-index=0:visual-constraint="10,10"
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3DFractory.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3DFractory.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3DFractory.java	(revision 29090)
@@ -0,0 +1,42 @@
+package org.gvsig.gvsig3dgui.layout.fframe;
+
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.project.documents.layout.fframes.FrameFactory;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
+
+public class FFrameView3DFractory extends FrameFactory {
+	public static String registerName = "FFrameView3D";
+
+	@Override
+	public IFFrame createFrame() {
+		FFrameView3D ffView3D = new FFrameView3D();
+		ffView3D.setFrameLayoutFactory(this);
+		return ffView3D;
+	}
+
+	@Override
+	public String getRegisterName() {
+		// TODO Auto-generated method stub
+		return registerName;
+	}
+
+	/**
+	 * Returns the name of IFFrame.
+	 * 
+	 * @return Name of IFFrame.
+	 */
+	public String getNameType() {
+		return PluginServices.getText(this, "FFrameView3D");
+	}
+
+	/**
+	 * Registers in the points of extension the Factory with alias.
+	 * 
+	 */
+	public static void register() {
+		register(registerName, new FFrameView3DFractory(),
+				"org.gvsig.gvsig3dgui.layout.FFrameView3D");
+
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/ListView3DModel.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/ListView3DModel.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/ListView3DModel.java	(revision 29090)
@@ -0,0 +1,151 @@
+/*
+ * Created on 02-jun-2004
+ *
+ */
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.layout.fframe;
+
+import java.util.ArrayList;
+
+import javax.swing.AbstractListModel;
+import javax.swing.JOptionPane;
+
+import org.gvsig.gvsig3dgui.ProjectView3D;
+
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.ProjectExtension;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
+import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
+import com.iver.cit.gvsig.project.documents.view.ProjectViewBase;
+ 
+
+/**
+ * Modelo de la Lista de vistas a seleccionar.
+ *
+ * @author Vicente Caballero Navarro
+ */
+public class ListView3DModel extends AbstractListModel {
+	private ArrayList views = new ArrayList();
+
+	/**
+	 * Añade las vistas que tiene el proyecto a la lista.
+	 */
+//	public void addViews() {
+//		ProjectExtension projectextension = (ProjectExtension) PluginServices.getExtension(com.iver.cit.gvsig.ProjectExtension.class);
+//		views = projectextension.getProject().getDocumentsByType(ProjectViewFactory.registerName);
+//	}
+	
+	
+	public void addViews() {
+		ProjectExtension projectextension = (ProjectExtension) PluginServices
+				.getExtension(com.iver.cit.gvsig.ProjectExtension.class);
+		// views =
+		// projectextension.getProject().getDocumentsByType(ProjectViewFactory.registerName);
+		ArrayList todos = projectextension.getProject().getDocuments();
+		views.clear();
+		String vistas = "Las siguientes vistas que se muestran a continuacion no pueden "
+				+ "introducirse en el mapa si no estan abiertas\n";
+		boolean exits = false;
+		for (int i = 0; i < todos.size(); i++) {
+			if (todos.get(i) instanceof ProjectView3D) {
+				ProjectView3D projectView3D = (ProjectView3D) todos.get(i);
+				if (projectView3D.getCanvas3d() != null)
+					views.add(projectView3D);
+				else {
+					exits = true;
+					vistas += " " + projectView3D.getName() + "\n";
+				}
+			}
+		}
+		if (exits) {
+			JOptionPane.showMessageDialog(null, vistas);
+		}
+	}
+
+	/**
+	 * Add all fframeviews into a list.
+	 * 
+	 * @param l
+	 *            Layout.
+	 */
+	public void addViews(Layout l) {
+		int num = 0;
+		l.getLayoutContext().updateFFrames();
+		IFFrame[] fframes=l.getLayoutContext().getFFrames();
+		for (int i = 0; i < fframes.length; i++) {
+			IFFrame f = fframes[i];
+
+			if (f instanceof FFrameView3D) {
+				//((FFrameView)f).getView().setName("FFrameView "+num+((FFrameView)f).getName());
+				views.add(f);
+				((FFrameView3D) f).setNum(num);
+				num++;
+			}
+		}
+
+		//ProjectExtension projectextension =(ProjectExtension)App.instance.getPc().getExtension(com.iver.cit.gvsig.ProjectExtension.class);
+		//views=projectextension.getProject().getViews();
+	}
+
+	/**
+	 * Devuelve el ArrayList con las FFrameView.
+	 *
+	 * @return DOCUMENT ME!
+	 */
+	//public ArrayList getViews() {
+	//	return views;
+	//}
+
+	/**
+	 * @see javax.swing.ListModel#getSize()
+	 */
+	public int getSize() {
+		return views.size();
+	}
+
+	/**
+	 * @see javax.swing.ListModel#getElementAt(int)
+	 */
+	public Object getElementAt(int index) {
+		return views.get(index);
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/fframe/FFrameView3D.java	(revision 29090)
@@ -0,0 +1,1079 @@
+/*
+ * Created on 20-feb-2004
+ *
+ */
+/* gvSIG. Sistema de Informaciï¿½n Geogrï¿½fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibï¿½ï¿½ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.layout.fframe;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+
+import javax.print.attribute.PrintRequestAttributeSet;
+
+import org.cresques.cts.IProjection;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.map3d.ViewPort3D;
+import org.gvsig.gvsig3dgui.ProjectView3D;
+import org.gvsig.gvsig3dgui.ProjectView3DFactory;
+import org.gvsig.gvsig3dgui.layout.fframe.gui.dialog.FFrameView3DDialog;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.viewer.ISlaveComponent;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.iver.andami.PluginServices;
+import com.iver.andami.messages.NotificationManager;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.cit.gvsig.ProjectExtension;
+import com.iver.cit.gvsig.fmap.ColorEvent;
+import com.iver.cit.gvsig.fmap.ExtentEvent;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.ProjectionEvent;
+import com.iver.cit.gvsig.fmap.ViewPortListener;
+import com.iver.cit.gvsig.fmap.core.FShape;
+import com.iver.cit.gvsig.fmap.layers.LegendChangedEvent;
+import com.iver.cit.gvsig.fmap.layers.XMLException;
+import com.iver.cit.gvsig.fmap.rendering.LegendListener;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.cit.gvsig.project.documents.exceptions.SaveException;
+import com.iver.cit.gvsig.project.documents.layout.FLayoutUtilities;
+import com.iver.cit.gvsig.project.documents.layout.LayoutControl;
+import com.iver.cit.gvsig.project.documents.layout.fframes.FFrame;
+import com.iver.cit.gvsig.project.documents.layout.fframes.FrameFactory;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrameUseFMap;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrameUseProject;
+import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrameViewDependence;
+import com.iver.cit.gvsig.project.documents.layout.fframes.gui.dialogs.IFFrameDialog;
+import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
+import com.iver.cit.gvsig.project.documents.view.ProjectViewBase;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.utiles.XMLEntity;
+
+/**
+ * FFrame para introducir una vista en el Layout.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class FFrameView3D extends FFrame implements ViewPortListener,
+		LegendListener, IFFrameUseProject, IFFrameUseFMap, ISlaveComponent {
+	// private static Logger logger =
+	// Logger.getLogger(FFrameView.class.getName());
+	public static final int PRESENTACION = 0;
+	public static final int BORRADOR = 1;
+	protected int m_Mode;
+	protected int m_typeScale = AUTOMATICO;
+	protected int m_extension = 0;
+	protected int m_quality = PRESENTACION;
+	protected int m_viewing = 0;
+	protected boolean m_bLinked = true;
+	protected ProjectViewBase view = null;
+	protected MapContext3D m_fmap = null;
+	protected double m_Scale = 0;
+	protected int m_mapUnits = 1; // Metros.
+
+	private BufferedImage m_image = null;
+	private AffineTransform at = null;
+	private Project project = null;
+	private double scaleAnt;
+	private boolean refresh = false;
+	private Point origin;
+	private Point2D p1;
+	private Point2D p2;
+	private String titleWindow;
+	private String className = this.getClass().getName();
+
+	/**
+	 * Creates a new FFrameView object.
+	 */
+	public FFrameView3D() {
+		num++;
+	}
+
+	public String getClassName() {
+		return className;
+	}
+	
+	/**
+	 * Devuelve una descripciï¿½n del FFrameView.
+	 * 
+	 * @return Descripciï¿½n.
+	 */
+	public String toString() {
+		if (getView() == null) {
+			return "FFrameView " + num + ": " + "Vacio";
+		}
+
+		return "FFrameView " + num + ": " + getView().getName();
+	}
+
+	/**
+	 * Rellena la escala de la vista que contiene el fframe.
+	 * 
+	 * @param d
+	 *            escala de la vista.
+	 */
+	public void setScale(double d) {
+		m_Scale = d;
+	}
+
+	/**
+	 * Inserta el nuevo extent a la FFrameView.
+	 * 
+	 * @param r
+	 *            Rectï¿½ngulo a ocupar por el FFrameView.
+	 */
+	public void setNewExtent(Rectangle2D r) {
+		getMapContext().getViewPort().setExtent(r);
+		refresh = true;
+		m_Scale = FLayoutUtilities.getScaleView(getMapContext().getViewPort(),
+				getBoundBox().width, getBoundingBox(null).width
+						/ getBoundBox().width);
+	}
+
+	/**
+	 * Devuelve el FMap de la vista o una clonaciï¿½n de este si se utiliza una
+	 * escala fija.
+	 * 
+	 * @return FMap.
+	 */
+	public MapContext3D getMapContext() {
+		return m_fmap;
+	}
+
+	/**
+	 * Rellena la calidad que se quiere aplicar.
+	 * 
+	 * @param q
+	 *            entero que representa la calidad a aplicar.
+	 */
+	public void setQuality(int q) {
+		m_quality = q;
+	}
+
+	/**
+	 * Devuelve un entero que representa la calidad que estï¿½ seleccionada.
+	 * 
+	 * @return tipo de calidad selccionada.
+	 */
+	public int getQuality() {
+		return m_quality;
+	}
+
+	/**
+	 * Devuelve un entero que representa la forma en que se actualiza la vista.
+	 * 
+	 * @return forma que se actualiza la vista.
+	 */
+	public int getViewing() {
+		return m_viewing;
+	}
+
+	/**
+	 * Rellena la forma de actualizar la vista(cuando activo o siempre). De
+	 * momento esta opciï¿½n esta deshabilitada.
+	 * 
+	 * @param v
+	 *            entero que representa la forma de actualizar la vista.
+	 */
+	public void setViewing(int v) {
+		m_viewing = v;
+	}
+
+	/**
+	 * Inserta el ProjectView de donde obtener las propiedades de la vista a
+	 * mostrar.
+	 * 
+	 * @param v
+	 *            Modelo de la vista.
+	 */
+	public void setView(ProjectViewBase v) {
+		view = v;
+		m_fmap = (MapContext3D) v.getMapContext();
+		if(m_fmap.getCanvas3d() != null)
+			m_fmap.getCanvas3d().addSlaveComponent(this);
+	
+	}
+	
+	
+	
+
+	/**
+	 * Devuelve el modelo de la vista.
+	 * 
+	 * @return Modelo de la vista.
+	 */
+	public ProjectViewBase getView() {
+		return view;
+	}
+
+	/**
+	 * Devuelve un Rectï¿½ngulo que representa el extent de la vista que se
+	 * requiere a partir de una escala.
+	 * 
+	 * @param scale
+	 *            Escala a mostrar.
+	 * 
+	 * @return Rectï¿½ngulo.
+	 */
+	protected Rectangle2D getNewExtent(long scale) {
+		double hview = getBoundBox().getHeight();
+		double wview = getBoundBox().getWidth();
+		double hextent = (scale * hview) / 100.0;
+		double wextent = (scale * wview) / 100.0;
+
+		if (m_fmap.getViewPort().getExtent() == null)
+			return new Rectangle2D.Double();
+		double newx = m_fmap.getViewPort().getExtent().getCenterX()
+				- (wextent / 2.0);
+		double newy = m_fmap.getViewPort().getExtent().getCenterY()
+				- (hextent / 2.0);
+		IProjection proj = m_fmap.getViewPort().getProjection();
+		Rectangle2D r = new Rectangle2D.Double(newx, newy, wextent, hextent);
+		if (!proj.isProjected()) {
+			r = m_fmap.getViewPort().getProjection().getExtent(r, scale, wview,
+					hview, 1, 100, 2.54);
+		}
+		return r;
+	}
+
+	/**
+	 * Mï¿½todo que dibuja sobre el graphics que se le pasa como parï¿½metro, segï¿½n
+	 * la transformada afin que se debe de aplicar y el rectï¿½ngulo que se debe
+	 * de dibujar.
+	 * 
+	 * @param g
+	 *            Graphics2D
+	 * @param at
+	 *            Transformada afï¿½n.
+	 * @param rv
+	 *            rectï¿½ngulo sobre el que hacer un clip.
+	 * @param imgBase
+	 *            Imagen para acelerar el dibujado.
+	 */
+	public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv,
+			BufferedImage imgBase) {
+
+		Rectangle2D.Double r = getBoundingBox(at);
+		if (getRotation() != 0)
+			g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), r.y
+					+ (r.height / 2));
+		if (intersects(rv, r)) {
+			if (getMapContext() == null) {
+				drawEmpty(g);
+			} else {
+				if (rv != null) {
+					// Dibujamos en pantalla
+					Rectangle rclip = (Rectangle) g.getClipBounds().clone();
+					g.clipRect((int) r.getMinX(), (int) r.getMinY(), (int) r
+							.getWidth(), (int) r.getHeight());
+
+					if (getQuality() == PRESENTACION) {
+						if (rv.intersects(r)) {
+							ViewPort3D viewPort = (ViewPort3D) this
+									.getMapContext().getViewPort();
+							Color theBackColor = viewPort.getBackColor();
+
+							if (origin != null
+									&& origin
+											.equals(getLayout()
+													.getLayoutControl()
+													.getRectOrigin())
+									&& getLayout() != null
+									&& getLayout().getLayoutControl().getAT()
+											.getScaleX() == scaleAnt
+									&& m_image != null
+									&& !refresh
+									&& !(r.getWidth() > getLayout().getWidth() || r
+											.getHeight() > getLayout()
+											.getHeight())) {
+								if (theBackColor != null) {
+									g.setColor(theBackColor);
+									g.fillRect((int) r.x, (int) r.y, viewPort
+											.getImageWidth(), viewPort
+											.getImageHeight());
+								}
+								g.translate(r.getX(), r.getY());
+								g.drawImage(m_image, 0, 0, getLayout()
+										.getLayoutControl());
+								g.translate(-r.getX(), -r.getY());
+								scaleAnt = getLayout().getLayoutControl()
+										.getAT().getScaleX();
+								origin = (Point) getLayout().getLayoutControl()
+										.getRectOrigin().clone();
+							} else {
+
+								// System.err.println("r : " + r);
+								if (r.getWidth() > getLayout().getWidth()
+										|| r.getHeight() > getLayout()
+												.getHeight()) {
+									getMapContext().getViewPort().setOffset(
+											new Point2D.Double(r.getX(), r
+													.getY()));
+									getMapContext().getViewPort().setImageSize(
+											new Dimension((int) r.getWidth(),
+													(int) r.getHeight()));
+//									MapContext3D fmap = (MapContext3D) getMapContext()
+//											.cloneToDraw();
+									ViewPort3D viewp =(ViewPort3D)this.getMapContext().getViewPort();//.cloneViewPort();
+									viewp.setImageSize(new Dimension(
+											getLayout().getWidth(), getLayout()
+													.getHeight()));
+									Rectangle2D r1 = calculateExtent();
+									double width = getLayout()
+											.getLayoutContext().getAtributes()
+											.getSizeInUnits().getAncho();
+									double scale = FLayoutUtilities
+											.getScaleView(viewp, width, r1
+													.getWidth()
+													/ width);
+									viewp.setExtent(r1);
+
+									getMapContext().setViewPort(viewp);
+									g.translate(-r.getX(), -r.getY());
+									if (theBackColor != null) {
+										g.setColor(theBackColor);
+										g.fillRect((int) r.x, (int) r.y, viewp
+												.getImageWidth(), viewp
+												.getImageHeight());
+									}
+									try {
+										getMapContext().draw(imgBase, g, scale);
+									} catch (ReadDriverException e) {
+										NotificationManager.showMessageError("Problems with driver rendering", e);
+									}
+									g.translate(r.getX(), r.getY());
+
+								} else {
+									getMapContext().getViewPort().setOffset(
+											new Point2D.Double(r.x, r.y));
+									getMapContext().getViewPort().setImageSize(
+											new Dimension((int) r.width,
+													(int) r.height));
+									m_image = new BufferedImage((int) r
+											.getWidth(), (int) r.getHeight(),
+											BufferedImage.TYPE_INT_ARGB);
+									Graphics2D gimg = (Graphics2D) m_image
+											.getGraphics();
+									gimg.translate(-((int) r.getX()), -((int) r
+											.getY()));
+									try {
+										getMapContext().draw(m_image, gimg,
+												getScale());
+									} catch (ReadDriverException e) {
+										NotificationManager.showMessageError("Problems with driver rendering", e);
+									}
+									gimg.translate(((int) r.getX()), ((int) r
+											.getY()));
+									if (theBackColor != null) {
+										g.setColor(theBackColor);
+										g.fillRect((int) r.x, (int) r.y,
+												viewPort.getImageWidth(),
+												viewPort.getImageHeight());
+									}
+									g.drawImage(m_image, (int) r.getX(),
+											(int) r.getY(), getLayout());
+								}
+								scaleAnt = getLayout().getLayoutControl()
+										.getAT().getScaleX();
+								origin = (Point) getLayout().getLayoutControl()
+										.getRectOrigin().clone();
+								refresh = false;
+							}
+						}
+					} else {
+						drawDraft(g);
+					}
+					if (rclip != null) {
+						g.setClip(rclip.x, rclip.y, rclip.width, rclip.height);
+					}
+				} else {
+					printX(g, at);
+				}
+			}
+		}
+		if (getRotation() != 0)
+			g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), r.y
+					+ (r.height / 2));
+
+		if (getMapContext() != null) {
+			setATMap(getMapContext().getViewPort().getAffineTransform());
+
+		}
+	}
+
+	private Rectangle2D calculateExtent() {
+		Rectangle2D.Double r = new Rectangle2D.Double();
+		if (p1 == null || p2 == null)
+			return r;
+		r.setFrameFromDiagonal(p1, p2);
+		return r;
+	}
+
+	public void print(Graphics2D g, AffineTransform at, FShape shape,
+			PrintRequestAttributeSet prroperties) {
+		draw(g, at, null, null);
+	}
+
+	private void printX(Graphics2D g, AffineTransform at) {
+		Rectangle2D.Double r = getBoundingBox(at);
+
+		// Dibujamos en impresora
+		Rectangle rclip = g.getClipBounds();
+		g.clipRect((int) r.getMinX(), (int) r.getMinY(), (int) r.getWidth(),
+				(int) r.getHeight());
+		this.getMapContext().getViewPort().setOffset(
+				new Point2D.Double(r.x, r.y));
+		this.getMapContext().getViewPort().setImageSize(
+				new Dimension((int) r.width, (int) r.height));
+
+		Dimension imageSize = this.getMapContext().getViewPort().getImageSize();
+
+		try {
+			this.getMapContext().print(g, getScale(), null);
+		} catch (ReadDriverException e) {
+			NotificationManager.addError(e.getMessage(), e);
+		}
+
+		g.setClip(rclip.x, rclip.y, rclip.width, rclip.height);
+
+		// this.getMapContext().draw(
+		// g,
+		// (new Rectangle((int) r.getMinX(), (int) r.getMinY(), (int) r
+		// .getWidth(), (int) r.getHeight())));
+		// this.getMapContext().draw(image ,g,null,0);
+
+	}
+
+	/**
+	 * Rellena la unidad de medida en la que estï¿½ la vista.
+	 * 
+	 * @param i
+	 *            entero que representa la unidad de medida de la vista.
+	 */
+	public void setMapUnits(int i) {
+		m_mapUnits = i;
+	}
+
+	/**
+	 * Obtiene la unidad de medida en la que estï¿½ la vista.
+	 * 
+	 * @return Unidad de medida.
+	 */
+	public int getMapUnits() {
+		return m_mapUnits;
+	}
+
+	/**
+	 * Devuelve la escala segï¿½n el tipo de escala que se haya seleccionado al
+	 * aï¿½adida la vista.
+	 * 
+	 * @return escala.
+	 */
+	public long getScale() {
+		/*
+		 * if (m_bLinked){ return getScaleView1(METROS); }
+		 */
+		if (getMapContext() == null)
+			return 0;
+		if (getTypeScale() == AUTOMATICO) {
+			return FLayoutUtilities.getScaleView(getMapContext().getViewPort(),
+					getBoundBox().width, getBoundingBox(null).width);
+		} else if (getTypeScale() == CONSTANTE) {
+			return (long) m_Scale;
+		} else if (getTypeScale() == MANUAL) {
+			return (long) m_Scale;
+		}
+
+		return (long) m_Scale;
+	}
+
+	/**
+	 * Seleccionar si la vista esta relacionada o no con la original.
+	 * 
+	 * @param b
+	 *            true si estï¿½ ligada y false si no lo estï¿½.
+	 */
+	public void setLinked(boolean b) {
+		m_bLinked = b;
+	}
+
+	/**
+	 * Devuelve si estï¿½ ligada o no el FFrameView con la vista.
+	 * 
+	 * @return True si la vista estï¿½ ligada.
+	 */
+	public boolean getLinked() {
+		return m_bLinked;
+	}
+
+	/**
+	 * Devuelve la opciï¿½n seleccionada:Rellenar marco de la vista o recorte a la
+	 * vista.
+	 * 
+	 * @return entero que representa la opciï¿½n elegida.
+	 */
+	public int getExtension() {
+		return m_extension;
+	}
+
+	/**
+	 * Devuelve el tipo de escala que estï¿½ seleccionada AUTOMATICO,CONSTANTE o
+	 * MANUAL.
+	 * 
+	 * @return entero que representa el tipo seleccionado.
+	 */
+	public int getTypeScale() {
+		return m_typeScale;
+	}
+
+	/**
+	 * Rellenar si se quiere:Rellenar marco de la vista o recorte a la vista.
+	 * 
+	 * @param i
+	 *            entero que representa la opciï¿½n elegida.
+	 */
+	public void setExtension(int i) {
+		m_extension = i;
+	}
+
+	/**
+	 * Rellenar el tipo de escala que se desea.
+	 * 
+	 * @param i
+	 *            entero que representa el tipo de escala.
+	 */
+	public void setTypeScale(int i) {
+		m_typeScale = i;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 * 
+	 * @throws SaveException
+	 * 
+	 * @see com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame#getXMLEntity()
+	 */
+	public XMLEntity getXMLEntity() throws SaveException {
+		XMLEntity xml = super.getXMLEntity();
+
+		try {
+			// xml.putProperty("type", Layout.RECTANGLEVIEW);
+		//	xml.putProperty("className", this.getClassName());
+		
+			xml.putProperty("m_Mode", m_Mode);
+			xml.putProperty("m_typeScale", m_typeScale);
+			xml.putProperty("m_extension", m_extension);
+			xml.putProperty("m_quality", m_quality);
+			xml.putProperty("m_viewing", m_viewing);
+			xml.putProperty("m_bLinked", m_bLinked);
+			xml.putProperty("m_mapUnits", m_mapUnits);
+			xml.putProperty("m_Scale", m_Scale);
+
+			ProjectExtension pe = (ProjectExtension) PluginServices
+					.getExtension(ProjectExtension.class);
+			ArrayList views = pe.getProject().getDocumentsByType(
+					ProjectView3DFactory.registerName);
+
+			boolean hasIndex = false;
+
+			if (view != null) {
+				xml.putProperty("viewName", view.getName());
+				for (int i = 0; i < views.size(); i++) {
+					if (view.getName().equals(
+							((ProjectViewBase) views.get(i)).getName())) {
+						xml.putProperty("indice", i);
+						hasIndex = true;
+						break;
+					}
+				}
+				
+			}
+			
+//			titleWindow = ((ProjectView3D) view).getView().getWindowInfo().getTitle();
+//			xml.putProperty("titleWindow", titleWindow);
+
+			if (!hasIndex) {
+				xml.putProperty("indice", -1);
+			}
+
+			if (getMapContext() != null
+					&& getMapContext().getViewPort().getExtent() != null) {
+				xml.putProperty("extentX", getMapContext().getViewPort()
+						.getExtent().getX());
+				xml.putProperty("extentY", getMapContext().getViewPort()
+						.getExtent().getY());
+				xml.putProperty("extentW", getMapContext().getViewPort()
+						.getExtent().getWidth());
+				xml.putProperty("extentH", getMapContext().getViewPort()
+						.getExtent().getHeight());
+
+				xml.addChild(getMapContext().getXMLEntity());
+			}
+		} catch (Exception e) {
+			throw new SaveException(e, this.getClass().getName());
+		}
+
+		return xml;
+	}
+
+	/**
+	 * Inserta la imagen para repintar el FFrameView.
+	 * 
+	 * @param bi
+	 *            Imagen para repintar.
+	 */
+	public void setBufferedImage(BufferedImage bi) {
+		m_image = bi;
+	}
+
+	/**
+	 * Devuelve la imagen para repintar.
+	 * 
+	 * @return Imagen para repintar.
+	 */
+	public BufferedImage getBufferedImage() {
+		return m_image;
+	}
+
+	/**
+	 * Devuelve la MAtriz de transformaciï¿½n utilizada por la FFrameView.
+	 * 
+	 * @return MAtriz de transformaciï¿½n.
+	 */
+	public AffineTransform getATMap() {
+		return at;
+	}
+
+	/**
+	 * Inserta la matriz de transformaciï¿½n.
+	 * 
+	 * @param transform
+	 *            Matriz de transformaciï¿½n.
+	 */
+	public void setATMap(AffineTransform transform) {
+		at = transform;
+	}
+
+	/**
+	 * Inserta el proyecto.
+	 * 
+	 * @param p
+	 *            Proyecto.
+	 */
+	public void setProject(Project p) {
+		project = p;
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame#setXMLEntity(com.iver.utiles.XMLEntity,
+	 *      com.iver.cit.gvsig.project.Project)
+	 */
+	public void setXMLEntity03(XMLEntity xml, Layout l) {
+		if (xml.getIntProperty("m_Selected") != 0) {
+			this.setSelected(true);
+		} else {
+			this.setSelected(false);
+		}
+
+		this.setName(xml.getStringProperty("m_name"));
+		this.setBoundBox(new Rectangle2D.Double(xml.getDoubleProperty("x"), xml
+				.getDoubleProperty("y"), xml.getDoubleProperty("w"), xml
+				.getDoubleProperty("h")));
+
+		this.m_Mode = xml.getIntProperty("m_Mode");
+		this.m_typeScale = xml.getIntProperty("m_typeScale");
+		this.m_extension = xml.getIntProperty("m_extension");
+		this.m_quality = xml.getIntProperty("m_quality");
+		this.m_viewing = xml.getIntProperty("m_viewing");
+		this.m_bLinked = xml.getBooleanProperty("m_bLinked");
+		this.m_mapUnits = xml.getIntProperty("m_mapUnits");
+
+		// ProjectExtension pe = (ProjectExtension)
+		// PluginServices.getExtension(ProjectExtension.class);
+		this.m_Scale = xml.getDoubleProperty("m_Scale");
+
+		int indice = xml.getIntProperty("indice");
+
+		if (indice != -1) {
+			ArrayList views = project
+					.getDocumentsByType(ProjectView3DFactory.registerName);
+
+			ProjectViewBase view = (ProjectViewBase) views.get(indice);
+			this.m_fmap = (MapContext3D) view.getMapContext();
+			this.setView(view);
+
+			try {
+				if (m_bLinked) {
+					this.getMapContext().getViewPort().setExtent(
+							new Rectangle2D.Double(xml
+									.getDoubleProperty("extentX"), xml
+									.getDoubleProperty("extentY"), xml
+									.getDoubleProperty("extentW"), xml
+									.getDoubleProperty("extentH")));
+				} else if (!m_bLinked) {
+					this.m_fmap = (MapContext3D) MapContext.createFromXML03(xml
+							.getChild(0));
+				}
+			} catch (XMLException e) {
+				NotificationManager.addError(
+						"Pasando las propiedades del XMLEntity al objeto", e);
+			}
+		}
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame#getNameFFrame()
+	 */
+	public String getNameFFrame() {
+		return PluginServices.getText(this, "Vista") + num;
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.ExtentListener#extentChanged(com.iver.cit.gvsig.fmap.ExtentEvent)
+	 */
+	public void extentChanged(ExtentEvent e) {
+		if (getTypeScale() == AUTOMATICO) {
+			m_fmap.getViewPort().setExtent(e.getNewExtent());
+			if (getLayout() != null) {
+				getLayout().getLayoutControl().setStatus(
+						LayoutControl.DESACTUALIZADO);
+			}
+		}
+		refresh = true;
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.ViewPortListener#backColorChanged(com.iver.cit.gvsig.fmap.ColorEvent)
+	 */
+	public void backColorChanged(ColorEvent e) {
+		if (getLinked()) {
+			m_fmap.getViewPort().setBackColor(e.getNewColor());
+			getLayout().getLayoutControl().setStatus(
+					LayoutControl.DESACTUALIZADO);
+
+			// setBufferedImage(null);
+		}
+	}
+
+	/**
+	 * @see com.iver.cit.gvsig.fmap.ViewPortListener#projectionChanged(com.iver.cit.gvsig.fmap.ProjectionEvent)
+	 */
+	public void projectionChanged(ProjectionEvent e) {
+		if (getTypeScale() == AUTOMATICO) {
+			m_fmap.getViewPort().setProjection(e.getNewProjection());
+
+			if (getLayout() != null) {
+				getLayout().getLayoutControl().setStatus(
+						LayoutControl.DESACTUALIZADO);
+			}
+		}
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param e
+	 *            DOCUMENT ME!
+	 */
+	public void legendChanged(LegendChangedEvent e) {
+		if (getLinked()) {
+			getLayout().getLayoutControl().setStatus(
+					LayoutControl.DESACTUALIZADO);
+			refresh = true;
+			// setBufferedImage(null);
+		}
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param xml
+	 *            DOCUMENT ME!
+	 */
+	public void setXMLEntity(XMLEntity xml) {
+		
+//		
+		if (xml.getIntProperty("m_Selected") != 0) {
+			this.setSelected(true);
+		} else {
+			this.setSelected(false);
+		}
+
+		this.setName(xml.getStringProperty("m_name"));
+		this.setBoundBox(new Rectangle2D.Double(xml.getDoubleProperty("x"), xml
+				.getDoubleProperty("y"), xml.getDoubleProperty("w"), xml
+				.getDoubleProperty("h")));
+
+		this.m_Mode = xml.getIntProperty("m_Mode");
+		this.m_typeScale = xml.getIntProperty("m_typeScale");
+		this.m_extension = xml.getIntProperty("m_extension");
+		this.m_quality = xml.getIntProperty("m_quality");
+		this.m_viewing = xml.getIntProperty("m_viewing");
+		this.m_bLinked = xml.getBooleanProperty("m_bLinked");
+		this.m_mapUnits = xml.getIntProperty("m_mapUnits");
+		setRotation(xml.getDoubleProperty("m_rotation"));
+
+		this.m_Scale = xml.getDoubleProperty("m_Scale");
+
+		int indice = xml.getIntProperty("indice");
+
+		ProjectViewBase view = null;
+
+		if (xml.contains("viewName")) {
+			view = (ProjectViewBase) project.getProjectDocumentByName(xml
+					.getStringProperty("viewName"),
+					ProjectView3DFactory.registerName);
+			
+	//		if (xml.contains("className"))
+//				this.className=	xml.getStringProperty("className");
+			
+		} else {
+			if (indice != -1) {
+				try {
+					ArrayList views = project
+							.getDocumentsByType(ProjectView3DFactory.registerName);
+
+					view = (ProjectViewBase) views.get(indice);
+				} catch (IndexOutOfBoundsException e) {
+					NotificationManager.addError(
+							"No se ha encontrado la vista de indice " + indice,
+							e);
+				}
+			}
+		}
+
+//		if (xml.contains("titleWindow"))
+//			this.titleWindow = xml.getStringProperty("titleWindow");
+		
+		if (view != null) {
+			this.setView(view);
+
+			try {
+				if (xml.contains("extentX")) {
+					if (m_bLinked) {
+						this.getMapContext().getViewPort().setExtent(
+								new Rectangle2D.Double(xml
+										.getDoubleProperty("extentX"), xml
+										.getDoubleProperty("extentY"), xml
+										.getDoubleProperty("extentW"), xml
+										.getDoubleProperty("extentH")));
+					} else if (!m_bLinked) {
+						this.m_fmap = (MapContext3D) MapContext
+								.createFromXML(xml.getChild(0));
+					}
+				}
+			} catch (XMLException e) {
+				NotificationManager.addError(
+						"Pasando las propiedades del XMLEntity al objeto", e);
+			}
+		} else if (!m_bLinked) {
+			try {
+				this.m_fmap = (MapContext3D) MapContext.createFromXML(xml
+						.getChild(0));
+			} catch (XMLException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param arg0
+	 *            DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 */
+	public boolean compare(Object arg0) {
+		if (!(arg0 instanceof FFrameView3D)) {
+			return false;
+		}
+
+		if (!this.getName().equals(((FFrameView3D) arg0).getName())) {
+			return false;
+		}
+
+		if (Math.abs(this.getBoundBox().getWidth()
+				- (((FFrameView3D) arg0).getBoundBox().getWidth())) > 0.05) {
+			return false;
+		}
+		if (Math.abs(this.getBoundBox().getHeight()
+				- (((FFrameView3D) arg0).getBoundBox().getHeight())) > 0.05) {
+			return false;
+		}
+
+		if (!this.toString().equals(((FFrameView3D) arg0).toString())) {
+			return false;
+		}
+
+		if (this.getMapContext() != null
+				&& !this.getMapContext().equals(
+						((FFrameView3D) arg0).getMapContext())) {
+			return false;
+		}
+
+		if (this.getRotation() != ((FFrameView3D) arg0).getRotation()) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 * 
+	 * @param arg0
+	 *            DOCUMENT ME!
+	 * 
+	 * @return DOCUMENT ME!
+	 */
+	public boolean equals(Object arg0) {
+		return this.compare(arg0);
+	}
+
+	public void refresh() {
+		if (view != null
+				&& (getTypeScale() == MANUAL || getTypeScale() == CONSTANTE))
+			getMapContext().getViewPort().setExtent(getNewExtent(getScale()));
+		refresh = true;
+	}
+
+	public void fullExtent() throws ReadDriverException {
+		setNewExtent(getMapContext().getFullExtent());
+	}
+
+	public void setPointsToZoom(Point2D px1, Point2D px2) {
+		p1 = px1;
+		p2 = px2;
+	}
+
+	public void movePoints(Point2D px1, Point2D px2) {
+		double difX = -px2.getX() + px1.getX();
+		double difY = -px2.getY() + px1.getY();
+		if (p1 != null) {
+			p1.setLocation(p1.getX() + difX, p1.getY() + difY);
+			p2.setLocation(p2.getX() + difX, p2.getY() + difY);
+		}
+	}
+
+	public void cloneActions(IFFrame frame) {
+		if (view == null || view.getMapContext() == null)
+			return;
+		if (m_bLinked) {
+			if (getTypeScale() == AUTOMATICO) {
+				view.getMapContext().getViewPort().addViewPortListener(this);
+				view.getMapContext().addLayerListener(this);
+			} else if (getTypeScale() == CONSTANTE) {
+				view.getMapContext().getViewPort().removeViewPortListener(this);
+				view.getMapContext().addLayerListener(this);
+			} else if (getTypeScale() == MANUAL) {
+				view.getMapContext().getViewPort().removeViewPortListener(this);
+				view.getMapContext().addLayerListener(this);
+			}
+		} else if (!m_bLinked) {
+			if (getTypeScale() == AUTOMATICO) {
+				view.getMapContext().getViewPort().addViewPortListener(this);
+			} else if (getTypeScale() == CONSTANTE) {
+				view.getMapContext().getViewPort().removeViewPortListener(this);
+			} else if (getTypeScale() == MANUAL) {
+				view.getMapContext().getViewPort().removeViewPortListener(this);
+			}
+		}
+		((FFrameView3D) frame).view.getMapContext().removeLayerListener(
+				(FFrameView3D) frame);
+		((FFrameView3D) frame).view.getMapContext().getViewPort()
+				.removeViewPortListener((FFrameView3D) frame);
+
+	}
+
+	public IFFrame cloneFFrame(Layout layout) {
+		FFrameView3D frame = (FFrameView3D) FrameFactory
+				.createFrameFromName(FFrameView3DFractory.registerName);
+		frame.setLevel(this.getLevel());
+		frame.setNum(this.num);
+		frame.setName(this.getName());
+		frame.setBoundBox(this.getBoundBox());
+		frame.setTag(this.getTag());
+		frame.m_Mode = this.m_Mode;
+		frame.m_typeScale = this.m_typeScale;
+		frame.m_extension = this.m_extension;
+		frame.m_quality = this.m_quality;
+		frame.m_viewing = this.m_viewing;
+		frame.m_bLinked = this.m_bLinked;
+		frame.m_mapUnits = this.m_mapUnits;
+		frame.setRotation(this.getRotation());
+
+		frame.m_Scale = this.m_Scale;
+		frame.view = this.getView();
+		frame.m_fmap = this.getMapContext();
+		frame.setSelected(this.getSelected() != IFFrame.NOSELECT);
+		frame.setLayout(layout);
+		if ((frame.view != null) && (frame.m_fmap != null))
+			frame.m_fmap.getCanvas3d().addSlaveComponent(frame);
+
+		if (frame instanceof IFFrameViewDependence) {
+			((IFFrameViewDependence) frame).initDependence(layout
+					.getLayoutContext().getAllFFrames());
+			frame.getMapContext().setRenewCanvasOff(true);
+		}
+		cloneActions(frame);
+		return frame;
+	}
+
+	public IFFrameDialog getPropertyDialog() {
+		return new FFrameView3DDialog(getLayout(), this);
+	}
+
+	public void repaint() {
+		refresh = true;
+		this.getLayout().getLayoutControl().refresh();
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/layout3DExtension.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/layout3DExtension.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/layout/layout3DExtension.java	(revision 29090)
@@ -0,0 +1,82 @@
+package org.gvsig.gvsig3dgui.layout;
+
+import org.gvsig.gvsig3dgui.layout.fframe.FFrameView3DFractory;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.cit.gvsig.gui.preferencespage.LayoutPage;
+import com.iver.cit.gvsig.project.documents.layout.FLayoutZooms;
+import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
+import com.iver.cit.gvsig.project.documents.layout.tools.behavior.LayoutRectangleBehavior;
+
+public class layout3DExtension extends Extension {
+	private Layout layout = null;
+	private static LayoutPage layoutPropertiesPage = new LayoutPage();
+
+	// private static Logger logger =
+	// Logger.getLogger(LayoutExtension.class.getName());
+
+	public void execute(String s) {
+		// TODO Auto-generated method stub
+		layout = (Layout) PluginServices.getMDIManager().getActiveWindow();
+		
+		LayoutAddView3DListenerImpl lavl = new LayoutAddView3DListenerImpl(layout);
+		
+		layout.getLayoutControl().addLayoutTool("view3Dinsert", new LayoutRectangleBehavior(lavl));
+		
+		FLayoutZooms zooms = new FLayoutZooms(layout);
+		// logger.debug("Comand : " + s);
+
+		if (s.equals("INSERT_3D_VIEW")) {
+			layout.getLayoutControl().setTool("view3Dinsert");
+		}
+	}
+
+	public void initialize() {
+		FFrameView3DFractory.register();
+		
+		
+		// Registering icons
+		
+		PluginServices.getIconTheme().registerDefault(
+				"insert_3d_view_map",
+				this.getClass().getClassLoader().getResource(
+				"images/layout-insert-view3D.png"));
+	}
+	
+	
+
+	@Override
+	public void postInitialize() {
+		super.postInitialize();
+		// Registering types
+		
+		
+//		layout = (Layout) PluginServices.getMDIManager().getActiveWindow();
+//		
+//		LayoutAddViewListenerImpl lavl = new LayoutAddViewListenerImpl(layout);
+//		
+//		layout.getLayoutControl().addLayoutTool("view3Dinsert", new LayoutRectangleBehavior(lavl));
+		// register the icons
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isVisible() {
+		IWindow f = PluginServices.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		if (f instanceof Layout) {
+			return true; // layout.m_Display.getMapControl().getMapContext().getLayers().layerCount()
+							// > 0;
+		}
+		return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/AboutExtension3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/AboutExtension3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/AboutExtension3D.java	(revision 29090)
@@ -0,0 +1,38 @@
+package org.gvsig.gvsig3dgui;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.About;
+import com.iver.cit.gvsig.gui.panels.FPanelAbout;
+
+public class AboutExtension3D extends Extension {
+
+	public void postInitialize() {
+		About about = (About) PluginServices.getExtension(About.class);
+		FPanelAbout panelAbout = about.getAboutPanel();
+		java.net.URL aboutURL = this.getClass().getResource("/about.htm");
+		panelAbout.addAboutUrl(PluginServices.getText(this, "Extension3D"),
+				aboutURL);
+	}
+
+	public void execute(String actionCommand) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void initialize() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public boolean isEnabled() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean isVisible() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+}

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/AboutExtension3D.java
___________________________________________________________________
Added: svn:executable
   + *

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Extension3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Extension3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/Extension3D.java	(revision 29090)
@@ -0,0 +1,53 @@
+package org.gvsig.gvsig3dgui;
+
+import javax.swing.JPopupMenu;
+
+import org.gvsig.gvsig3dgui.preferences.View3DPreferences;
+import org.gvsig.gvsig3dgui.tocMenu.TocEditingLayer;
+import org.gvsig.gvsig3dgui.tocMenu.TocRefreshLayer;
+import org.gvsig.gvsig3dgui.tocMenu.TocTransparencyPanel;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.utiles.extensionPoints.ExtensionPoints;
+import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
+
+
+public class Extension3D extends Extension {
+
+	public void execute(String actionCommand) {
+	}
+
+	public void initialize() {
+    	JPopupMenu.setDefaultLightWeightPopupEnabled(false);
+		ProjectView3DFactory.register();
+		
+		// TODO: registrar aki las opciones del menu contestual del toc
+		ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
+	    extensionPoints.add("View_TocActions",PluginServices.getText(this, "Transparency"),new TocTransparencyPanel());
+	    extensionPoints.add("View_TocActions",PluginServices.getText(this, "Layer_Refresh"),new TocRefreshLayer());
+	    extensionPoints.add("View_TocActions",PluginServices.getText(this, "Editing_layer"),new TocEditingLayer());
+
+	    // Registering preferences dialog
+	    extensionPoints.add("AplicationPreferences","View3DPreferences", new View3DPreferences());
+	}
+	
+	
+
+	public void postInitialize() {
+		super.postInitialize();
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isVisible() {
+		return false;
+	}
+
+	public void terminate() {
+		super.terminate();
+	}
+	
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/InitialWarningExtension3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/InitialWarningExtension3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/InitialWarningExtension3D.java	(revision 29090)
@@ -0,0 +1,258 @@
+/* gvSIG. Sistema de Informaciï¿½n Geogrï¿½fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibï¿½ï¿½ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id: InitialWarningExtension.java 15921 2007-11-05 16:14:10Z vcaballero $
+* $Log$
+* Revision 1.4  2006-10-02 13:52:34  jaume
+* organize impots
+*
+* Revision 1.3  2006/08/29 07:56:27  cesar
+* Rename the *View* family of classes to *Window* (ie: SingletonView to SingletonWindow, ViewInfo to WindowInfo, etc)
+*
+* Revision 1.2  2006/08/29 07:13:53  cesar
+* Rename class com.iver.andami.ui.mdiManager.View to com.iver.andami.ui.mdiManager.IWindow
+*
+* Revision 1.1  2006/05/25 16:27:21  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gvsig3dgui;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Window;
+import java.util.prefs.Preferences;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JWindow;
+import javax.swing.border.TitledBorder;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.utiles.XMLEntity;
+
+public class InitialWarningExtension3D extends Extension {
+//	public static Preferences fPrefs = Preferences.userRoot().node( "gvsig.initial_warkning" );
+//	private boolean show = fPrefs.getBoolean( "show_panel", true);
+	private DlgWaring dlgWarning;
+
+	private boolean compatibilitySwing;
+
+	private boolean showDialog;
+
+	private String message;
+	
+	private static Preferences prefs = Preferences.userRoot().node( "gvsig.configuration.3D" );
+    /**
+	 * @see com.iver.andami.plugins.IExtension#isEnabled()
+	 */
+	public boolean isEnabled() {
+		return true;
+	}
+
+	/**
+	 * @see com.iver.mdiApp.plugins.IExtension#isVisible()
+	 */
+	public boolean isVisible() {
+		return true;
+	}
+
+	/**
+	 * @see com.iver.andami.plugins.IExtension#initialize()
+	 */
+	public void initialize() {
+		
+		showDialog = false;
+		message = PluginServices.getText(this, "initial_warning_3D");
+		
+		String skinName = "";
+		PluginServices ps = PluginServices.getPluginServices("com.iver.core");
+		if(ps == null) return;
+		XMLEntity xml = ps.getPersistentXML();
+		if (xml.contains("Skin-Selected")) {
+			skinName = xml.getStringProperty("Skin-Selected");
+		}
+		
+		if (skinName.equals("com.iver.core.mdiManager.NewSkin")) {
+			message += PluginServices.getText(this, "initial_skin_warning");
+			showDialog = true;
+		}
+		
+		if (!skinName.equals("org.gvsig.mdiManager.DockingManager")){
+			compatibilitySwing = prefs.getBoolean("compatibilitySwing", compatibilitySwing);
+			
+			if (!compatibilitySwing){
+				message += PluginServices.getText(this, "initial_canvas_warning");
+				showDialog = true;
+			}
+		}
+		
+//		if (showDialog){
+//			dlgWarning = new DlgWaring();
+//			dlgWarning.setText(message);
+//			dlgWarning.setVisible(true);
+//		}
+
+	}
+
+	/**
+	 * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
+	 */
+	public void execute(String actionCommand) {
+
+	}
+
+	private class DlgWaring extends JWindow{
+
+		private JButton btnOk = null;
+		private JCheckBox chkBoxShowAgain = null;
+		private JLabel lblText = null;
+		private JPanel panel=null;
+		private JPanel panel2;
+		/**
+		 * This is the default constructor
+		 */
+		public DlgWaring() {
+			super((Window)PluginServices.getMainFrame());
+			Window window=(Window)PluginServices.getMainFrame();
+			setLocation(window.getWidth()/2+window.getX()-150,window.getHeight()/2+window.getY()-150);
+			initialize();
+			this.setAlwaysOnTop(true);
+		}
+
+		public void setText(String string) {
+			lblText.setText(string);
+		}
+
+		/**
+		 * This method initializes this
+		 *
+		 * @return void
+		 */
+		private void initialize() {
+			panel=new JPanel();
+			panel.setBackground(Color.black);
+			panel.setLayout(null);
+			panel.setBounds(0,0,300,300);
+			panel2=new JPanel();
+			panel2.setLayout(null);
+			panel2.setBounds(2,2,298,298);
+			lblText = new JLabel();
+			lblText.setBounds(15, 15, 271, 200);
+			lblText.setText("JLabel");
+			lblText.setBorder(new TitledBorder(PluginServices.getText(this, "warning")));
+			panel2.add(lblText);
+			panel2.setSize((int)(panel.getSize().getWidth()-4),(int)(panel.getSize().getHeight()-4));
+			panel.add(panel2);
+			this.setLayout(null);
+			this.setSize(300, 300);
+			this.add(getBtnOk(), null);
+//			this.add(getChkBoxShowAgain(), null);
+			this.add(panel, null);
+		}
+
+		/**
+		 * This method initializes btnOk
+		 *
+		 * @return javax.swing.JButton
+		 */
+		private JButton getBtnOk() {
+			if (btnOk == null) {
+				btnOk = new JButton();
+				btnOk.setBounds(100, 250, 100, 20);
+				btnOk.setText(PluginServices.getText(this, "aceptar"));
+				btnOk.addActionListener(new java.awt.event.ActionListener() {
+					public void actionPerformed(java.awt.event.ActionEvent e) {
+						dlgWarning.setVisible(false);
+						dlgWarning.dispose();
+						//						PluginServices.getMDIManager().closeWindow(dlgWarning);
+					}
+				});
+			}
+			return btnOk;
+		}
+
+		/**
+		 * This method initializes chkBoxShowAgain
+		 *
+		 * @return javax.swing.JCheckBox
+		 */
+//		private JCheckBox getChkBoxShowAgain() {
+//			if (chkBoxShowAgain == null) {
+//				chkBoxShowAgain = new JCheckBox();
+//				chkBoxShowAgain.setBounds(44, 116, 241, 21);
+//				chkBoxShowAgain.setSelected(true);
+//				chkBoxShowAgain.setText(PluginServices.getText(this, "show_this_dialog_next_startup"));
+//			}
+//			return chkBoxShowAgain;
+//		}
+
+		public WindowInfo getWindowInfo() {
+			WindowInfo vi = new WindowInfo(WindowInfo.MODALDIALOG);
+			vi.setWidth(300+8);
+			vi.setHeight(250);
+			vi.setTitle(PluginServices.getText(this, "warning"));
+			return vi;
+		}
+
+	}  //  @jve:decl-index=0:visual-constraint="10,10"
+
+	@Override
+	public void postInitialize() {
+		// TODO Auto-generated method stub
+		super.postInitialize();
+		if (showDialog){
+			dlgWarning = new DlgWaring();
+			dlgWarning.setText(message);
+			dlgWarning.setVisible(true);
+		}
+		
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/PointSelectListerner3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/PointSelectListerner3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/PointSelectListerner3D.java	(revision 29090)
@@ -0,0 +1,116 @@
+package org.gvsig.gvsig3dgui.listener;
+
+import java.awt.geom.Point2D;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.viewer.Intersections;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.messages.NotificationManager;
+import com.iver.cit.gvsig.exceptions.visitors.VisitorException;
+import com.iver.cit.gvsig.fmap.MapControl;
+import com.iver.cit.gvsig.fmap.layers.FBitSet;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.fmap.tools.BehaviorException;
+import com.iver.cit.gvsig.fmap.tools.Events.PointEvent;
+import com.iver.cit.gvsig.project.documents.view.toolListeners.PointSelectListener;
+
+public class PointSelectListerner3D extends PointSelectListener {
+
+	public PointSelectListerner3D(MapControl mapCtrl) {
+		super(mapCtrl);
+		// TODO Auto-generated constructor stub
+
+	}
+
+	@Override
+	public void point(PointEvent event) throws BehaviorException {
+		// TODO Auto-generated method stub
+		// super.point(event);
+		// MapControl3D mapControl3D = (MapControl3D) this.mapCtrl;
+		MapContext3D mapContext = (MapContext3D) mapCtrl.getMapContext();
+
+		try {
+			// mapCtrl.getMapContext().selectByPoint(event.getPoint(), 1);
+			Point2D p = event.getPoint();
+			Vec3 mapPoint = coordinatesIntersection(p);
+
+			// Tolerancia de 3 pixels
+			// double tol = mapCtrl.getViewPort().toMapDistance(3);
+			double tol = 0.20;
+			FLayer[] actives = mapCtrl.getMapContext().getLayers().getActives();
+			for (int i = 0; i < actives.length; i++) {
+				if (actives[i] instanceof FLyrVect) {
+					FLyrVect lyrVect = (FLyrVect) actives[i];
+					Layer3DProps props = Layer3DProps.getLayer3DProps(lyrVect);
+					float heigth = props.getHeigth();
+					if (Math.abs(heigth - mapPoint.z()) <= 3000){
+						FBitSet oldBitSet = lyrVect.getSource().getRecordset()
+						.getSelection();
+						Point2D pointInter = new Point2D.Double();
+						pointInter.setLocation(mapPoint.x(), mapPoint.y());
+						FBitSet newBitSet = lyrVect.queryByPoint(pointInter, tol);
+//						FBitSet newBitSet = lyrVect.queryByPoint(p, tol);
+						if (event.getEvent().isControlDown())
+							newBitSet.xor(oldBitSet);
+						lyrVect.getRecordset().setSelection(newBitSet);
+					}
+				}
+			}
+
+		} catch (ReadDriverException e) {
+			throw new BehaviorException("No se pudo hacer la selección");
+		} catch (VisitorException e) {
+			throw new BehaviorException("No se pudo hacer la selección");
+		}
+//		mapContext.selectionChanged(new SelectionEvent());
+	}
+
+	@Override
+	public void pointDoubleClick(PointEvent event) throws BehaviorException {
+		// TODO Auto-generated method stub
+		// super.pointDoubleClick(event);
+	}
+
+	public Vec3 coordinatesIntersection(Point2D pScreen) {
+		Vec3 intersection;
+	
+		// System.err.println("Coordenadas de pantalla " + pScreen.getX() + ","+
+		// pScreen.getY());
+		MapContext3D mcontext = (MapContext3D) this.mapCtrl.getMapContext();
+		int heigth = mcontext.getCanvas3d().getHeight();
+		Intersections hits = mcontext.getCanvas3d().getOSGViewer().rayPick(
+				(int) pScreen.getX(),(int) pScreen.getY());
+		Point2D pWorld = new Point2D.Double();
+		if (hits.containsIntersections()) {
+			// get XYZ coordinates on planet
+			Vec3 hit = hits.getFirstIntersection().getIntersectionPoint();
+			// convert to geo coordinates
+
+			// System.err.println("Interseccion de osg " + hit.x() + ","+
+			// hit.y());
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase("EPSG:4326") == 0) {
+				Vec3 geoPt = mcontext.getPlanet().convertXYZToLatLongHeight(hit);
+				// Swap the coordinates X and Y, because they are invert.
+				intersection = new Vec3(geoPt.y(),geoPt.x(),geoPt.z());
+//				intersection = geoPt;
+			} else {
+				intersection = hit;
+			}
+		} else {
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase("EPSG:4326") == 0) {
+				pWorld.setLocation(360, 120);
+				intersection = new Vec3(360,120,0);
+			} else{
+				intersection = new Vec3(1e100,1e100,0);
+//				pWorld.setLocation(1e100, 1e100);
+			}
+		}
+		NotificationManager.addInfo("Obteniendo punto de informacion "+ intersection.x() + "    ,   " + intersection.y() +"  ,  "+ intersection.z());
+		return intersection;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/RectangleSelectListener3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/RectangleSelectListener3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/listener/RectangleSelectListener3D.java	(revision 29090)
@@ -0,0 +1,108 @@
+package org.gvsig.gvsig3dgui.listener;
+
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.viewer.Intersections;
+
+import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
+import com.iver.andami.messages.NotificationManager;
+import com.iver.cit.gvsig.exceptions.visitors.VisitorException;
+import com.iver.cit.gvsig.fmap.MapControl;
+import com.iver.cit.gvsig.fmap.layers.FBitSet;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.fmap.tools.BehaviorException;
+import com.iver.cit.gvsig.fmap.tools.RectangleSelectionListener;
+import com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent;
+
+public class RectangleSelectListener3D extends RectangleSelectionListener {
+
+	private MapControl mapControl;
+
+	public RectangleSelectListener3D(MapControl mc) {
+		super(mc);
+		// TODO Auto-generated constructor stub
+		mapControl = mc;
+	}
+
+	@Override
+	public void rectangle(RectangleEvent event) throws BehaviorException {
+		try {
+			// mapCtrl.getMapContext().selectByRect(event.getWorldCoordRect());
+			Rectangle2D rect = event.getWorldCoordRect();
+			Point2D up = new Point2D.Double();
+			up.setLocation(rect.getX(), rect.getY());
+			Vec3 upLeft = coordinatesIntersection(up);
+//			Point2D down = new Point2D.Double();
+//			down.setLocation(rect.getMaxX(), rect.getMaxY());
+//			Vec3 downRight = coordinatesIntersection(down);
+
+			Rectangle2D newRect = new Rectangle2D.Double(upLeft.x(),
+					upLeft.y(), rect.getHeight(), rect.getWidth());
+
+			FLayer[] actives = mapControl.getMapContext().getLayers()
+					.getActives();
+			for (int i = 0; i < actives.length; i++) {
+				if (actives[i] instanceof FLyrVect) {
+					FLyrVect lyrVect = (FLyrVect) actives[i];
+					FBitSet oldBitSet = lyrVect.getSource().getRecordset()
+							.getSelection();
+//					FBitSet newBitSet = lyrVect.queryByRect(newRect);
+					FBitSet newBitSet = lyrVect.queryByRect(rect);
+					if (event.getEvent().isControlDown())
+						newBitSet.xor(oldBitSet);
+					lyrVect.getRecordset().setSelection(newBitSet);
+				}
+			}
+
+		} catch (ReadDriverException e) {
+			throw new BehaviorException("No se pudo hacer la selección");
+		} catch (VisitorException e) {
+			throw new BehaviorException("No se pudo hacer la selección");
+		}
+	}
+
+	public Vec3 coordinatesIntersection(Point2D pScreen) {
+		Vec3 intersection;
+
+		// System.err.println("Coordenadas de pantalla " + pScreen.getX() + ","+
+		// pScreen.getY());
+		MapContext3D mcontext = (MapContext3D) this.mapControl.getMapContext();
+		Intersections hits = mcontext.getCanvas3d().getOSGViewer().rayPick(
+				(int) pScreen.getX(), (int) pScreen.getY());
+		Point2D pWorld = new Point2D.Double();
+		if (hits.containsIntersections()) {
+			// get XYZ coordinates on planet
+			Vec3 hit = hits.getFirstIntersection().getIntersectionPoint();
+			// convert to geo coordinates
+
+			// System.err.println("Interseccion de osg " + hit.x() + ","+
+			// hit.y());
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+					"EPSG:4326") == 0) {
+				Vec3 geoPt = mcontext.getPlanet()
+						.convertXYZToLatLongHeight(hit);
+				intersection = geoPt;
+			} else {
+				intersection = hit;
+			}
+		} else {
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+					"EPSG:4326") == 0) {
+				pWorld.setLocation(360, 120);
+				intersection = new Vec3(360, 120, 0);
+			} else {
+				intersection = new Vec3(1e100, 1e100, 0);
+				// pWorld.setLocation(1e100, 1e100);
+			}
+		}
+		NotificationManager.addInfo("Obteniendo punto de informacion "
+				+ intersection.x() + "    ,   " + intersection.y() + "  ,  "
+				+ intersection.z());
+		return intersection;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Menu3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Menu3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Menu3D.java	(revision 29090)
@@ -0,0 +1,140 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.camera;
+
+import org.gvsig.gvsig3dgui.view.InsertPosition;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.ProjectExtension;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+import com.iver.cit.gvsig.project.documents.view.gui.FPanelExtentSelector;
+
+public class Menu3D extends Extension {
+
+
+	private boolean activa = true;
+
+	public void execute(String actionCommand) {
+//		System.out.println("EXECUTE");
+		
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+//		System.out.println("RECUPERADA LA VISTA 3D");
+		View3D vista3D =(View3D)view;
+
+		if (actionCommand.equals("ENCUADRE")) {
+//			System.out.println("DEBUG: Mostrando herramienta de encuadre");
+			// create and show the modal fopen dialog
+
+			FPanelExtentSelector l = new FPanelExtentSelector();
+
+			ProjectExtension p = (ProjectExtension) PluginServices.getExtension(com.iver.cit.gvsig.ProjectExtension.class);
+			Project project = p.getProject();
+			ExtentListSelectorModel3D modelo = new ExtentListSelectorModel3D(project);
+			project.addPropertyChangeListener(modelo);
+			l.setModel(modelo);
+			l.addSelectionListener(new Encuadrator3D(project, null, vista3D));
+//			l.addSelectionListener(new Encuadrator(project, mapa, vista));
+			PluginServices.getMDIManager().addWindow(l);
+			
+//			GUI g = new GUI();
+//			//g.setVisible(true);
+//			PluginServices.getMDIManager().addWindow((IWindow) g);
+		} else if (actionCommand.equals("POINT3D")) {
+			InsertPosition insertPosition = new InsertPosition(vista3D.getModel());
+			PluginServices.getMDIManager().addWindow(insertPosition);
+		}
+	}
+
+	public void initialize() {
+		// Register new icons
+		// extent manegement 
+		PluginServices.getIconTheme().registerDefault(
+				"encuadrator-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/encuadre.png"));
+		
+		
+		
+		this.setActiva(true);
+
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		if (f instanceof View3D) {
+			BaseView vista = (BaseView) f;
+			IProjectView model = vista.getModel();
+			MapContext mapa = model.getMapContext();
+
+			return mapa.getLayers().getLayersCount() > 0;
+		}
+		return false;
+	}
+
+	public void terminate() {
+		super.terminate();
+	}
+
+	public boolean isActiva() {
+		return activa;
+	}
+
+	public void setActiva(boolean activa) {
+		this.activa = activa;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/ExtentListSelectorModel3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/ExtentListSelectorModel3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/ExtentListSelectorModel3D.java	(revision 29090)
@@ -0,0 +1,109 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.camera;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+
+import javax.swing.ListModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+import com.iver.cit.gvsig.project.Project;
+
+
+
+public class ExtentListSelectorModel3D implements ListModel, PropertyChangeListener {
+
+	private Project project;
+	private ArrayList listeners = new ArrayList();
+
+	public ExtentListSelectorModel3D(Project p){
+		project = p;
+	}
+
+	/**
+	 * @see javax.swing.ListModel#getSize()
+	 */
+	public int getSize() {
+		return this.project.getCameras().length;
+	}
+
+	/**
+	 * @see javax.swing.ListModel#getElementAt(int)
+	 */
+	public Object getElementAt(int arg0) {
+		return this.project.getCameras()[arg0];
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.ListModel#addListDataListener(javax.swing.event.ListDataListener)
+	 */
+	public void addListDataListener(ListDataListener arg0) {
+		listeners.add(arg0);
+	}
+
+	/**
+	 * @see javax.swing.ListModel#removeListDataListener(javax.swing.event.ListDataListener)
+	 */
+	public void removeListDataListener(ListDataListener arg0) {
+		listeners.remove(arg0);
+	}
+
+	/* (non-Javadoc)
+	 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+	 */
+	public void propertyChange(PropertyChangeEvent change) {
+		if (change.getPropertyName().equals("addCamera")){
+			ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, 0, getSize());
+			for (int i = 0; i < listeners.size(); i++){
+				((ListDataListener) listeners.get(i)).intervalAdded(event);
+			}
+		}else{
+			ListDataEvent event = new ListDataEvent(this, ListDataEvent.INTERVAL_ADDED, 0, getSize());
+			for (int i = 0; i < listeners.size(); i++){
+				((ListDataListener) listeners.get(i)).intervalRemoved(event);
+			}
+		}
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Encuadrator3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Encuadrator3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/camera/Encuadrator3D.java	(revision 29090)
@@ -0,0 +1,155 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.camera;
+
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.viewer.Camera;
+
+import com.iver.ai2.gvsig3d.camera.ProjectCamera;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.cit.gvsig.project.documents.view.ListSelectorListener;
+import com.iver.cit.gvsig.project.documents.view.gui.BaseView;
+
+public class Encuadrator3D implements ListSelectorListener {
+
+	private Project project;
+
+	private BaseView vista;
+
+	private MapContext mapa;
+
+	public Encuadrator3D(Project project, MapContext map, View3D vista) {
+		this.project = project;
+		this.vista = vista;
+		mapa = map;
+	}
+
+	/**
+	 * @see com.iver.utiles.ListSelectorListener#indexesSelected(int[])
+	 */
+	public void indexesSelected(int[] indices) {
+		// mapa.getViewPort().setExtent(project.getExtents()[indices[0]].getExtent());
+		
+		View3D vi = (View3D) this.vista;
+		Object[] l = project.getCameras();
+
+		Camera ca = (Camera) ((ProjectCamera) l[indices[0]]).getCamera();
+
+		vi.setCamera(ca);	
+		vi.getCanvas3d().repaint();
+		
+		
+//		ca = null;
+//		ca = vi.getCamera();
+//		System.out.println("******************************************");
+//		System.out.println("INFORMACION DE LA CAMARA");
+//		System.out.println("Centro::X " + ca.getCenter().x() + ";Y "
+//				+ ca.getCenter().y() + ";Z " + ca.getCenter().z());
+//		System.out.println("Ojo::X " + ca.getEye().x() + ";Y " + ca.getEye().y()
+//				+ ";Z " + ca.getEye().z());
+//		System.out.println("Up::X " + ca.getUp().x() + ";Y " + ca.getUp().y()
+//				+ ";Z " + ca.getUp().z());
+//		System.out.println("******************************************");
+	}
+
+	/**
+	 * @see com.iver.utiles.ListSelectorListener#indexesRemoved(int[])
+	 */
+	public void indexesRemoved(int[] indices) {
+//		System.out
+//				.println("!!!!!!!!!!!!!!!!!!!!!ENTANDO EN LA FUNCION BORRAR INDICE!!!!");
+		for (int i = 0; i < indices.length; i++) {
+			this.project.removeCamera(indices[i]);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.iver.utiles.ListSelectorListener#newElement(java.lang.String)
+	 */
+	public void newElement(String name) {
+//		System.out
+//				.println("!!!!!!!!!!!!!!!!!!!!!ENTANDO EN LA FUNCION NUEVO ELEMENTO!!!!");
+//		System.out.println("nombre del encuadre ---->" + name);
+
+		View3D vi = (View3D) this.vista;
+		Camera ca = vi.getCamera();
+
+		ProjectCamera camera = new ProjectCamera();
+		camera.setDescription(name);
+		camera.setCamera(ca);
+		Object[] l = project.getCameras();
+		
+		boolean exits = false;
+		for (int i = 0; i < l.length; i++) {
+			ProjectCamera cam = (ProjectCamera) l[i];
+			if (cam.getDescription().equals(camera.getDescription())){
+				exits = true;
+			}
+		}
+		
+		if (!exits){
+			project.addCamera(camera);
+		}
+		
+		
+//		System.out.println("******************************************");
+//		System.out.println("INFORMACION DE LA CAMARA");
+//		System.out.println("Centro.... " + ca.getCenter());
+//		System.out.println("X " + ca.getCenter().x() + ";Y "
+//				+ ca.getCenter().y() + ";Z " + ca.getCenter().z());
+//		System.out.println("Ojo....... " + ca.getEye());
+//		System.out.println("X " + ca.getEye().x() + ";Y " + ca.getEye().y()
+//				+ ";Z " + ca.getEye().z());
+//		System.out.println("Up........ " + ca.getUp());
+//		System.out.println("X " + ca.getUp().x() + ";Y " + ca.getUp().y()
+//				+ ";Z " + ca.getUp().z());
+//		System.out.println("******************************************");
+
+		// ProjectExtent extent = ProjectFactory.createExtent();
+		// extent.setDescription(name);
+		// // extent.setExtent(mapa.getViewPort().getExtent());
+		// project.addExtent(extent);
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/manipulator/Manipulator3DExtension.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/manipulator/Manipulator3DExtension.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/manipulator/Manipulator3DExtension.java	(revision 29090)
@@ -0,0 +1,124 @@
+package org.gvsig.gvsig3dgui.manipulator;
+
+import java.awt.Component;
+
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.manipulator.EditionManager;
+import org.gvsig.osgvp.manipulator.Manipulator.DraggerType;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+public class Manipulator3DExtension extends Extension {
+
+	private NavigationMode navMode;
+	private EditionManager em;
+
+	public void execute(String actionCommand) {
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+		// Casting to View3D
+		View3D vista3D = (View3D) view;
+		Component viewer = (Component) vista3D.getCanvas3d();
+
+		// remove active tool in MapControl
+		boolean resetCursor = true;
+
+//		navMode = vista3D.getNavMode();
+//		navMode.removeAllModes();
+
+		IProjectView model = vista3D.getModel();
+		MapContext mapa = model.getMapContext();
+		FLayer[] activeLayers = mapa.getLayers().getActives();
+		if (activeLayers.length > 0) {
+			FLayer layer = activeLayers[0];
+
+			Layer3DProps props3D = Layer3DProps.getLayer3DProps(layer);
+			OSGCacheService osgCacheService = (OSGCacheService) props3D
+					.getCacheService();
+
+			em = osgCacheService.getEditionManager();
+			if (actionCommand.equals("ROTATION_MANIPULATOR")) {
+//				em.changeDragger(DraggerType.ROTATE_SPHERE_DRAGGER);
+				em.changeDragger(DraggerType.TABBOX_DRAGGER);
+			} else if (actionCommand.equals("TABBOX_MANIPULATOR")) {
+				em.changeDragger(DraggerType.TRACKBALL_DRAGGER);
+			} 
+		}
+
+	}
+
+	public void initialize() {
+		// TODO Auto-generated method stub
+		
+		//Registering icons.
+		PluginServices.getIconTheme().registerDefault(
+				"tabbox_manipulator",
+				this.getClass().getClassLoader().getResource(
+				"images/rotation_manipulator.png"));
+		
+		PluginServices.getIconTheme().registerDefault(
+				"rotation_manipulator",
+				this.getClass().getClassLoader().getResource(
+				"images/tabbox_manipulator.gif"));
+
+	}
+
+	public boolean isEnabled() {
+		boolean result = false;
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+		.getMDIManager().getActiveWindow();
+		if ((view instanceof View3D)){
+			// Casting to View3D
+			View3D vista3D = (View3D) view;
+			
+			IProjectView model = vista3D.getModel();
+			MapContext mapa = model.getMapContext();
+			FLayer[] activeLayers = mapa.getLayers().getActives();
+			if (activeLayers.length > 0) {
+				FLayer layer = activeLayers[0];
+				Layer3DProps props3D = Layer3DProps.getLayer3DProps(layer);
+				if (props3D.getType() == Layer3DProps.layer3DOSG){
+					result = true;
+				}
+			}
+		}
+		return result;
+	}
+
+	public boolean isVisible() {
+		// Getting view3
+		boolean result = false;
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+		.getMDIManager().getActiveWindow();
+		if ((view instanceof View3D)){
+			// Casting to View3D
+			View3D vista3D = (View3D) view;
+			
+			IProjectView model = vista3D.getModel();
+			MapContext mapa = model.getMapContext();
+			FLayer[] activeLayers = mapa.getLayers().getActives();
+			if (activeLayers.length > 0) {
+				FLayer layer = activeLayers[0];
+				Layer3DProps props3D = Layer3DProps.getLayer3DProps(layer);
+				if (props3D.getType() == Layer3DProps.layer3DOSG){
+					result = true;
+				}
+			}
+		}
+		return result;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/legend/Legend3DExtension.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/legend/Legend3DExtension.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/legend/Legend3DExtension.java	(revision 29090)
@@ -0,0 +1,60 @@
+package org.gvsig.gvsig3dgui.legend;
+
+import java.util.ArrayList;
+
+import com.iver.ai2.gvsig3d.legend.extrusion.ExtrusionLegendPanel;
+import com.iver.ai2.gvsig3d.legend.symbols.Object3DMarker;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.core.FShape;
+import com.iver.cit.gvsig.gui.styling.SymbolEditor;
+import com.iver.cit.gvsig.project.documents.view.legend.gui.LegendManager;
+
+
+public class Legend3DExtension extends Extension{
+	
+	public void execute(String actionCommand) {
+		
+//		com.iver.andami.ui.mdiManager.IWindow window = PluginServices.getMDIManager().getActiveWindow();
+//		Table table = (Table)window;
+//		if (operators.isEmpty()) {
+//			PluginServices.cancelableBackgroundExecution(new EvalOperatorsTask());
+//        }else{
+//        	 EvalExpressionDialog eed=new EvalExpressionDialog(table,EvalOperatorsTask.interpreter,operators);
+//		     PluginServices.getMDIManager().addWindow(eed);
+//        }
+		
+	}
+
+	public void initialize() {
+		// TODO Auto-generated method stub
+		
+	}
+	
+	
+
+	@Override
+	public void postInitialize() {
+		// TODO Auto-generated method stub
+		
+		//LegendManager.addLegendPage(ExtrusionProve.class);
+		LegendManager.addLegendPage(ExtrusionLegendPanel.class);
+//		LegendManager.addLegendPage(SingleSymbolLegend3D.class);
+		SymbolEditor.addSymbolEditorPanel(Object3DMarker.class,  FShape.POINT);
+		
+		// Register operation of expresion
+//		Prove.registerOperations();
+		
+	}
+	
+
+	public boolean isEnabled() {
+		// TODO Auto-generated method stub
+		return true;
+	}
+
+	public boolean isVisible() {
+		// TODO Auto-generated method stub
+		return true;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/behavior/RectangleBehavior3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/behavior/RectangleBehavior3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/behavior/RectangleBehavior3D.java	(revision 29090)
@@ -0,0 +1,198 @@
+package org.gvsig.gvsig3dgui.behavior;
+
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.apache.log4j.Logger;
+import org.gvsig.gvsig3d.map3d.GraphicLayer3D;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.exceptions.OSGVPException;
+import org.gvsig.osgvp.exceptions.node.NodeException;
+import org.gvsig.osgvp.features.SelectionRectangle;
+import org.gvsig.osgvp.features.Polygon.PolygonType;
+import org.gvsig.osgvp.planets.PlanetViewer;
+import org.gvsig.osgvp.viewer.Intersections;
+
+import com.iver.andami.messages.NotificationManager;
+import com.iver.cit.gvsig.fmap.tools.BehaviorException;
+import com.iver.cit.gvsig.fmap.tools.Behavior.RectangleBehavior;
+import com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent;
+import com.iver.cit.gvsig.fmap.tools.Listeners.RectangleListener;
+
+public class RectangleBehavior3D extends RectangleBehavior {
+
+	private Point2D m_FirstPoint;
+	private Point2D m_LastPoint;
+	private RectangleListener listener;
+	private SelectionRectangle rectangle;
+	private int height;
+	private int width;
+
+	private static Logger logger = Logger.getLogger(GraphicLayer3D.class
+			.getName());
+
+	public RectangleBehavior3D(RectangleListener zili) {
+		super(zili);
+		// TODO Auto-generated constructor stub
+		listener = zili;
+		try {
+			rectangle = new SelectionRectangle();
+		} catch (OSGVPException e) {
+			logger.error("Command: "
+					+ "Error creating new selection rectangle.", e);
+		}
+
+	}
+
+	@Override
+	public void mouseDragged(MouseEvent e) {
+		// TODO Auto-generated method stub
+		// super.mouseDragged(e);
+		// Painting
+		rectangle.setMouseCoords((int) e.getPoint().getX(), height
+				- (int) e.getPoint().getY());
+		try {
+			rectangle.update();
+		} catch (OSGVPException e1) {
+			logger.error("Command: " + "Error updating rectangle selection.",
+					e1);
+		}
+
+		rectangle.setType(PolygonType.FILLED_POLYGON);
+
+	}
+
+	@Override
+	public void mousePressed(MouseEvent e) {
+		// TODO Auto-generated method stub
+		MapContext3D mcontext = (MapContext3D) getMapControl().getMapContext();
+		try {
+			((PlanetViewer) mcontext.getCanvas3d().getOSGViewer())
+					.addNodeToHUD(rectangle);
+		} catch (NodeException e1) {
+			logger.error("Command: "
+					+ "Error adding the rectangle selecton to the hud node.",
+					e1);
+		}
+		height = mcontext.getCanvas3d().getHeight();
+		width = mcontext.getCanvas3d().getWidth();
+
+		if (e.getButton() == MouseEvent.BUTTON1) {
+			m_FirstPoint = e.getPoint();
+			// Put here the code to star drawing the rectangle
+			rectangle.setFirstPoint((int) m_FirstPoint.getX(), height
+					- (int) m_FirstPoint.getY());
+			rectangle.setMouseCoords((int) m_FirstPoint.getX(), height
+					- (int) m_FirstPoint.getY());
+
+			try {
+				rectangle.update();
+			} catch (OSGVPException e1) {
+				logger.error("Command: "
+						+ "Error updating rectangle selection.", e1);
+			}
+			rectangle.setType(PolygonType.EMPTY_POLYGON);
+		}
+	}
+
+	@Override
+	public void mouseReleased(MouseEvent e) throws BehaviorException {
+
+		if (m_FirstPoint == null)
+			return;
+		Point2D p1 = new Point2D.Double();
+		Point2D p2 = new Point2D.Double();
+		Point pScreen = e.getPoint();
+
+		// ViewPort vp = getMapControl().getMapContext().getViewPort();
+
+		// p1 = vp.toMapPoint(m_FirstPoint);
+		// p2 = vp.toMapPoint(pScreen);
+		Vec3 p1Vec = coordinatesIntersection(m_FirstPoint);
+		p1.setLocation(p1Vec.x(), p1Vec.y());
+		Vec3 p2Vec = coordinatesIntersection(pScreen);
+		p2.setLocation(p2Vec.x(), p2Vec.y());
+
+		if (e.getButton() == MouseEvent.BUTTON1) {
+			// Fijamos el nuevo extent
+			Rectangle2D.Double r = new Rectangle2D.Double();
+			r.setFrameFromDiagonal(p1, p2);
+
+			Rectangle2D rectPixel = new Rectangle();
+			rectPixel.setFrameFromDiagonal(m_FirstPoint, pScreen);
+
+			RectangleEvent event = new RectangleEvent(r, e, rectPixel);
+			listener.rectangle(event);
+
+		}
+
+		// Deleted rectangle
+		rectangle.setMouseCoords((int) m_FirstPoint.getX(), height
+				- (int) m_FirstPoint.getY());
+		try {
+			rectangle.update();
+		} catch (OSGVPException e1) {
+			logger.error("Command: " + "Error updating rectangle selection.",
+					e1);
+		}
+		rectangle.setType(PolygonType.EMPTY_POLYGON);
+
+		m_FirstPoint = null;
+		m_LastPoint = null;
+	}
+
+	@Override
+	public void paintComponent(Graphics g) {
+		// TODO Auto-generated method stub
+		// super.paintComponent(g);
+		MapContext3D mcontext = (MapContext3D) getMapControl().getMapContext();
+		mcontext.getCanvas3d().repaint();
+	}
+
+	public Vec3 coordinatesIntersection(Point2D pScreen) {
+		Vec3 intersection;
+
+		// System.err.println("Coordenadas de pantalla " + pScreen.getX() + ","+
+		// pScreen.getY());
+		MapContext3D mcontext = (MapContext3D) getMapControl().getMapContext();
+		Intersections hits = mcontext.getCanvas3d().getOSGViewer().rayPick(
+				(int) pScreen.getX(), (int) pScreen.getY());
+		Point2D pWorld = new Point2D.Double();
+		if (hits.containsIntersections()) {
+			// get XYZ coordinates on planet
+			Vec3 hit = hits.getFirstIntersection().getIntersectionPoint();
+			// convert to geo coordinates
+
+			// System.err.println("Interseccion de osg " + hit.x() + ","+
+			// hit.y());
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+					"EPSG:4326") == 0) {
+				Vec3 geoPt = mcontext.getPlanet()
+						.convertXYZToLatLongHeight(hit);
+				// Swap the coordinates X and Y, because they are invert.
+				intersection = new Vec3(geoPt.y(), geoPt.x(), geoPt.z());
+			} else {
+				intersection = hit;
+			}
+		} else {
+			if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+					"EPSG:4326") == 0) {
+				pWorld.setLocation(360, 120);
+				intersection = new Vec3(360, 120, 0);
+			} else {
+				intersection = new Vec3(1e100, 1e100, 0);
+				// pWorld.setLocation(1e100, 1e100);
+			}
+		}
+		NotificationManager.addInfo("Obteniendo punto de informacion "
+				+ intersection.x() + "    ,   " + intersection.y() + "  ,  "
+				+ intersection.z());
+		return intersection;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/navigation/NavigationMenu3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/navigation/NavigationMenu3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/navigation/NavigationMenu3D.java	(revision 29090)
@@ -0,0 +1,400 @@
+package org.gvsig.gvsig3dgui.navigation;
+
+import java.awt.Component;
+import java.awt.Cursor;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Toolkit;
+import java.awt.geom.Rectangle2D;
+import java.io.File;
+import java.net.URL;
+
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3d.navigation.NavigationMode;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.planets.CustomTerrainManipulator;
+import org.gvsig.osgvp.planets.Planet;
+import org.gvsig.osgvp.planets.PlanetViewer;
+import org.gvsig.osgvp.viewer.Camera;
+import org.gvsig.osgvp.viewer.OSGViewer;
+
+import com.iver.ai2.gvsig3d.resources.ResourcesFactory;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.andami.ui.mdiFrame.JMenuItem;
+import com.iver.andami.ui.mdiFrame.JToolBarButton;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.project.documents.view.gui.FPanelLocConfig;
+
+public class NavigationMenu3D extends Extension {
+
+	private boolean activa = true;
+
+	private NavigationMode navMode;
+
+	private boolean wireAct = false;
+
+	JMenuItem myMenu = null;
+
+	Icon iconVis = null;
+
+	Icon iconNoVis = null;
+
+	private ImageIcon iconButtonVis;
+
+	private ImageIcon iconButtonNoVis;
+
+	// cursors
+	private Cursor navCursor;
+
+	private Cursor zoomCursor;
+
+	private Cursor panCursor;
+
+	private Cursor azimCursor;
+
+	private String buttonPath;
+
+	private String imagesPath;
+
+	public void execute(String actionCommand) {
+		// System.out.println("EXECUTE");
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+		if (!(view instanceof View3D))
+			return;
+		// Casting to View3D
+		View3D vista3D = (View3D) view;
+		Component viewer = (Component) vista3D.getCanvas3d();
+
+		// remove active tool in MapControl
+		boolean resetCursor = true;
+
+		navMode = vista3D.getNavMode();
+
+		// Action for ZOOM_SELECT
+		if (actionCommand.equals("PAN_SELECT")) {
+			if (navMode != null) {
+				viewer.setCursor(panCursor);
+				navMode.SetRollMode();
+			}
+		} else if (actionCommand.equals("ZOOM_SELECT")) {
+			if (navMode != null) {
+				viewer.setCursor(zoomCursor);
+				navMode.SetZoomMode();
+			}
+		} else if (actionCommand.equals("AZIMUT_SELECT")) {
+			if (navMode != null) {
+				viewer.setCursor(azimCursor);
+				navMode.SetAzimutMode();
+			}
+		} else if (actionCommand.equals("DEFAULT_SELECT")) {
+			if (navMode != null) {
+				viewer.setCursor(navCursor);
+				navMode.SetDefaultMode();
+			}
+		} else if (actionCommand.equals("WIRE_FRAME")) {
+			resetCursor = false;
+			wireAct = !wireAct;
+			if (wireAct)
+				vista3D.getCanvas3d().getOSGViewer().setPolygonMode(
+						OSGViewer.PolygonModeType.GL_LINE);
+			else
+				vista3D.getCanvas3d().getOSGViewer().setPolygonMode(
+						OSGViewer.PolygonModeType.GL_FILL);
+			vista3D.getCanvas3d().repaint();
+		} else if (actionCommand.equals("RESET_VIEW")) {
+			resetCursor = false;
+			MapContext3D map3D = (MapContext3D) vista3D.getMapControl()
+					.getMapContext();
+			FLayers layers = map3D.getLayers();
+			Rectangle2D ext = layers.getFullExtent();
+			if (ext == null) {
+				// ext = new Rectangle2D.Double(-90,-180,90,180);
+				Camera cam;
+				cam = vista3D.getCamera();
+
+				if (vista3D.getPlanet().getCoordinateSystemType() != Planet.CoordinateSystemType.PROJECTED) {
+					cam.setViewByLookAt(vista3D.getPlanet()
+							.getRadiusEquatorial() * 8.0, 0, 0, 0, 0, 0, 0, 0,
+							1);
+
+				} else {
+					cam.setViewByLookAt(0, 0, 5000000 * 4.6, 0, 0, 0, 0, 1, 0);
+				}
+				vista3D.getCanvas3d().getOSGViewer().setCamera(cam);
+			} else {
+				map3D.zoomToExtent(ext);
+			}
+			vista3D.repaint();
+
+
+			// UtilCoord.imprimeCamara(vista3D.getCamera());
+			// System.out.println("CAMBIANDO CAMARAAAAAAAAA!!!!!!!!!");s
+		} else if (actionCommand.equals("ACTIVE")) {
+			resetCursor = false;
+			if (vista3D.getPlanet().getCoordinateSystemType() != Planet.CoordinateSystemType.PROJECTED) {
+
+				CustomTerrainManipulator ctm = ((PlanetViewer) vista3D
+						.getCanvas3d().getOSGViewer())
+						.getCustomTerrainManipulator();
+
+				JToolBarButton b = (JToolBarButton) PluginServices
+						.getMainFrame().getComponentByName("NORTH");
+				if ((!ctm.getNorthOrientation()) && (myMenu != null)) {
+					myMenu.setIcon(iconVis);
+
+					if (b != null) {
+						b.setIcon(iconButtonVis);
+						b.setToolTip(PluginServices.getText(this, "Des_north")
+								+ " "
+								+ PluginServices.getText(this, "Active_north"));
+					}
+				} else {
+					myMenu.setIcon(iconNoVis);
+
+					if (b != null) {
+						b.setIcon(iconButtonNoVis);
+						b.setToolTip(PluginServices.getText(this, "Ac_north")
+								+ " "
+								+ PluginServices.getText(this, "Active_north"));
+					}
+				}
+
+				ctm.setEnabledNorthOrientation(!ctm.getNorthOrientation());
+
+				// System.out.println("orientacion " +
+				// ctm.getNorthOrientation());
+
+				vista3D.getCanvas3d().repaint();
+			} else {
+				JOptionPane.showMessageDialog(null, PluginServices.getText(
+						this, "North_plane"));
+			}
+
+		}
+		if (actionCommand.equals("CONFIG_LOCATOR")) {
+			// Set up the map overview
+			FPanelLocConfig m_panelLoc = new FPanelLocConfig(vista3D
+					.getMapOverview());
+			PluginServices.getMDIManager().addWindow(m_panelLoc);
+			m_panelLoc.setPreferredSize(m_panelLoc.getSize());
+		}
+
+		// OJOOOOOOOOO CON ESTO Q ESTA COMENTADO PARA Q COMPILE HAY Q MIRAR COMO
+		// ARREGLARLO
+		if (resetCursor)
+			vista3D.getMapControl().setCurrentMapTool(null);
+	}
+
+	public void initialize() {
+
+		// Register new icons
+		// Default manipulator
+		
+		PluginServices.getIconTheme().registerDefault(
+				"default-manipulator-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/DefaultManipulator.png"));
+		// Roll manipulator
+		PluginServices.getIconTheme().registerDefault(
+				"roll-manipulator-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/RollManipulator.png"));
+		// Zoom manipulator
+		PluginServices.getIconTheme()
+		.registerDefault(
+				"zoom-manipulator-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/zoom.png"));
+		// Azimut manipulator
+		PluginServices.getIconTheme().registerDefault(
+				"azimut-manipulator-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/AzimutManipulator.png"));
+		// North disable
+		PluginServices.getIconTheme().registerDefault(
+				"north-disable-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/NorthDes.png"));
+		// North disable
+		PluginServices.getIconTheme().registerDefault(
+				"global-zoom-icon",
+				this.getClass().getClassLoader().getResource(
+				"images/Global.png"));
+		
+		
+		this.setActiva(true);
+
+		String oldPath = ResourcesFactory.getExtPath();// Save the path.
+		ResourcesFactory
+				.setExtPath("/gvSIG/extensiones/com.iver.ai2.gvsig3dgui/images/");// my
+		// new
+		// path
+		buttonPath = ResourcesFactory.getResourcesPath();
+		ResourcesFactory.setExtPath(oldPath);// Restore the old path.
+		System.out.println(oldPath);
+		System.out.println(buttonPath);
+		
+		URL path;
+		path = this.getClass().getClassLoader().getResource("images/");
+		buttonPath = path.getPath(); 
+
+		Image cursorImage = new ImageIcon(buttonPath + "/NavigationCursor.gif")
+				.getImage();
+
+		navCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImage,
+				new Point(16, 16), "");
+		cursorImage = new ImageIcon(buttonPath + "/ZoomCursor.gif").getImage();
+		zoomCursor = Toolkit.getDefaultToolkit().createCustomCursor(
+				cursorImage, new Point(16, 16), "");
+		cursorImage = new ImageIcon(buttonPath + "/PanCursor.gif").getImage();
+		panCursor = Toolkit.getDefaultToolkit().createCustomCursor(cursorImage,
+				new Point(16, 16), "");
+		cursorImage = new ImageIcon(buttonPath + "/AzimuthCursor.gif")
+				.getImage();
+		azimCursor = Toolkit.getDefaultToolkit().createCustomCursor(
+				cursorImage, new Point(16, 16), "");
+
+		// Getting view3
+		com.iver.andami.ui.mdiManager.IWindow view = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		// JMenuBar jMenuBar = PluginServices.getMainFrame().getJMenuBar();
+
+		// Iterate over menu bar to get children menus
+		// for (int i = 0; i < jMenuBar.getMenuCount(); i++) {
+		// // Getting children
+		// JMenu menu = jMenuBar.getMenu(i);
+		// if (menu.getText().equalsIgnoreCase(aux.getText("Vista"))) {
+		// // Getting children components
+		// Component[] subMenus = menu.getMenuComponents();
+		// // Iterate over children menu bar to get children menus
+		// for (int t = 0; t < subMenus.length; t++) {
+		// // Getting all children components
+		// Component component = subMenus[t];
+		// // Only get instance of JMenu
+		// if (component instanceof JMenu) {
+		// JMenu subMenuItem = (JMenu) component;
+		// // Is "navegacion" menu
+		// if (subMenuItem.getText().equalsIgnoreCase(
+		// aux.getText("navegacion"))) {
+		// // Search north option
+		// for (int j = 0; j < subMenuItem.getItemCount(); j++) {
+		// if (subMenuItem.getItem(j).getText()
+		// .equalsIgnoreCase(
+		// PluginServices.getText(this,
+		// "Active_north"))) {
+		// myMenu = (JMenuItem) subMenuItem.getItem(j);
+		// }
+		// }
+		// }
+		// }
+		// }
+		// }
+		// }
+		// This condition are always true.
+		if (!(view instanceof View3D))
+			return;
+		// // Casting to View3D
+		// View3D vista3D = (View3D) view;
+		// //vista3D.getMapControl().setCurrentMapTool(null);
+		// Component viewer = (Component)vista3D.getCanvas3d();
+		// viewer.setCursor(navCursor);
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		// Only isVisible = true, where the view3D have layers
+		if (f instanceof View3D) {
+			/*******************************************************************
+			 * This code don`t work because andami activate all buttons when the
+			 * return value is true
+			 ******************************************************************/
+			View3D vista3D = (View3D) f;
+			JToolBarButton b = (JToolBarButton) PluginServices.getMainFrame()
+					.getComponentByName("NORTH");
+			if ((vista3D.getPlanet().getCoordinateSystemType() != Planet.CoordinateSystemType.GEOCENTRIC)
+					&& (b != null)) {
+				b.setEnabled(false);
+			}
+			/* **************************************************************** */
+			return true;
+		}
+		return false;
+	}
+
+	public void terminate() {
+		super.terminate();
+	}
+
+	public boolean isActiva() {
+		return activa;
+	}
+
+	public void setActiva(boolean activa) {
+		this.activa = activa;
+	}
+
+	public void postInitialize() {
+		// Getting Main menu bar
+		
+		PluginServices aux = PluginServices
+		.getPluginServices("com.iver.cit.gvsig");
+		
+		String[] menuPath = new String[3];
+		menuPath[0] = new String("Vista");
+		menuPath[1] = new String("navegacion");
+		menuPath[2] = new String("Active_north");
+		this.myMenu = (JMenuItem) PluginServices.getMainFrame().getMenuEntry(
+				menuPath);
+
+		if (myMenu != null) {
+
+			File file = new File(this.getClass().getClassLoader().getResource(
+					"images").getFile());
+			String path1 = file.getPath() + "/mini_check_2.png";
+			String path2 = file.getPath() + "/mini_no_check_2.png";
+
+			iconVis = new ImageIcon(path1);
+			iconNoVis = new ImageIcon(path2);
+
+			myMenu.setIcon(iconNoVis);
+
+			String path1B = file.getPath() + "/norte.png";
+			String path2B = file.getPath() + "/NorthDes.png";
+			iconButtonVis = new ImageIcon(path1B);
+			iconButtonNoVis = new ImageIcon(path2B);
+
+			JToolBarButton b = (JToolBarButton) PluginServices.getMainFrame()
+					.getComponentByName("NORTH");
+			if (b != null) {
+				b.setToolTip(PluginServices.getText(this, "Ac_north") + " "
+						+ PluginServices.getText(this, "Active_north"));
+
+				// if (vista3D.getPlanet().getType() !=
+				// PlanetType.SPHERICAL_MODE) {
+				// b.setEnabled(false);
+				// }
+			}
+
+		}
+
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3DFactory.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3DFactory.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/ProjectView3DFactory.java	(revision 29090)
@@ -0,0 +1,288 @@
+package org.gvsig.gvsig3dgui;
+
+import java.awt.Component;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+import javax.swing.ImageIcon;
+import javax.swing.JOptionPane;
+
+import org.gvsig.gvsig3d.map3d.ViewPort3D;
+import org.gvsig.gvsig3d.map3d.layers.FLayers3D;
+import org.gvsig.gvsig3dgui.view.ViewProperties3D;
+
+import com.iver.andami.PluginServices;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.ViewPort;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.project.Project;
+import com.iver.cit.gvsig.project.documents.ProjectDocument;
+import com.iver.cit.gvsig.project.documents.ProjectDocumentFactory;
+import com.iver.cit.gvsig.project.documents.table.ProjectTableFactory;
+import com.iver.utiles.XMLEntity;
+
+/**
+ * Factory of View3D.
+ * 
+ * @author Vicente Caballero Navarro
+ */
+public class ProjectView3DFactory extends ProjectDocumentFactory {
+	public static String registerName = "ProjectView3D";
+
+	private boolean createFromGUI = false;
+
+	/**
+	 * Returns image of button.
+	 * 
+	 * @return Image button.
+	 */
+	public ImageIcon getButtonIcon() {
+		return new ImageIcon(this.getClass().getClassLoader().getResource(
+				"images/ProjectView3D.png"));
+	}
+
+	/**
+	 * Returns image of selected button.
+	 * 
+	 * @return Image button.
+	 */
+	public ImageIcon getSelectedButtonIcon() {
+		return new ImageIcon(this.getClass().getClassLoader().getResource(
+				"images/ProjectView3DSel.png"));
+	}
+
+	public ProjectDocument createFromGUI(Project project) {
+		createFromGUI = true;
+		ProjectDocument doc = create(project);
+		createFromGUI = false;
+		return doc;
+	}
+
+	/**
+	 * Create a new ProjectDocument.
+	 * 
+	 * @param project
+	 *            Opened project.
+	 * 
+	 * @return ProjectDocument.
+	 */
+	public ProjectDocument create(Project project) {
+		String viewName = "";
+        String aux = PluginServices.getText(this, "untitled");
+        int numViews=((Integer)ProjectDocument.NUMS.get(registerName)).intValue();
+
+        viewName = aux + " - " + numViews++;
+
+        if (project != null) {
+            // Buscamos si alguna vista ya tenía este nombre:
+            while (existName(project, viewName)) {
+                viewName = aux + " - " + numViews++;
+            }
+        }
+
+        ProjectDocument.NUMS.put(registerName,new Integer(numViews));
+		ProjectView3D vista = createView(viewName);
+		
+		if (vista != null)
+			vista.setProject(project, 0);
+
+		
+		return vista;
+	}
+
+	/**
+	 * Create a new ProjectView.
+	 * 
+	 * @param baseName
+	 *            name
+	 * 
+	 * @return ProjectView.
+	 */
+	private ProjectView3D createView(String viewName) {
+		ProjectView3D v = new ProjectView3D();
+
+		// in the case of 3D layers, the map context is created by the FLayers'
+		// constructor
+		ViewPort vp = new ViewPort3D(Project.getDefaultProjection());
+		FLayers layers = new FLayers3D(null, null, vp);
+		v.setMapContext(layers.getMapContext());
+		v.setMapOverViewContext(new MapContext(null));
+		v.getMapOverViewContext().setProjection(
+				v.getMapContext().getProjection());
+		v.setName(viewName);
+		v.setCreationDate(DateFormat.getInstance().format(new Date()));
+
+		if (createFromGUI)
+			setView3DProperties(v);
+
+		return v;
+	}
+
+	private void setView3DProperties(ProjectView3D prView) {
+
+		ViewProperties3D viewProperties = new ViewProperties3D(prView, true);
+		PluginServices.getMDIManager().addWindow(viewProperties);
+
+		// // choose spherical or flat view
+		// int option = JOptionPane.showConfirmDialog(
+		// (Component)PluginServices.getMainFrame(),
+		// /*"<html>"+
+		// PluginServices.getText(this,"desea_una_vista_esférica_(Si)") + "<br>"
+		// +
+		// PluginServices.getText(this,"o_plana_(No)") + "<br>" +
+		// "</html>",
+		// PluginServices.getText(this,"tipo_de_vista"),*/
+		// "¿Desea una vista esférica (Si) o plana (No)?",
+		// "Tipo de vista 3D",
+		// JOptionPane.YES_NO_OPTION
+		// );
+		// int planetType;
+		// if (option == JOptionPane.YES_OPTION)
+		// planetType = PlanetType.SPHERICAL_MODE;
+		// else
+		// planetType = PlanetType.PLANE_MODE;
+		// prView.setPlanetType(planetType);
+	}
+
+	/**
+	 * Returns the name of registration in the point of extension.
+	 * 
+	 * @return Name of registration
+	 */
+	public String getRegisterName() {
+		return registerName;
+	}
+
+	/**
+	 * Returns the name of ProjectDocument.
+	 * 
+	 * @return Name of ProjectDocument.
+	 */
+	public String getNameType() {
+		return PluginServices.getText(this, "Vista3D");
+	}
+
+	/**
+	 * Registers in the points of extension the Factory with alias.
+	 * 
+	 */
+	public static void register() {
+		register(registerName, new ProjectView3DFactory());
+	}
+
+	/**
+	 * Returns the priority of de ProjectDocument.
+	 * 
+	 * @return Priority.
+	 */
+	public int getPriority() {
+		return 10;
+	}
+
+	/**
+	 * Returns the priority of the Document in the ProjectWindow list.
+	 * 
+	 * @return Priority.
+	 */
+	public int getListPriority() {
+		return 10; // so the 3D View appears before other document types
+	}
+
+	public boolean resolveImportXMLConflicts(XMLEntity root, Project project,
+			Hashtable conflicts) {
+		Hashtable viewsConflits = (Hashtable) conflicts.get(this
+				.getRegisterName());
+		Hashtable tablesConflits = (Hashtable) conflicts
+				.get(ProjectTableFactory.registerName);
+		XMLEntity xmlTables = root.firstChild("type",
+				ProjectTableFactory.registerName);
+
+		if (viewsConflits != null && viewsConflits.size() > 0) {
+			int option = JOptionPane
+					.showConfirmDialog(
+							(Component) PluginServices.getMainFrame(),
+							"<html>"
+									+ PluginServices
+											.getText(this,
+													"conflicto_de_nombres_de_vistas_al_pegar")
+									+ "<br>"
+									+ PluginServices
+											.getText(this,
+													"debera_introducir_nombres_para_las_vistas_a_pegar")
+									+ "<br>"
+									+ PluginServices.getText(this,
+											"no_se_pegaran_las_tablas")
+									+ "<br>"
+									+ PluginServices.getText(this,
+											"desea_continuar") + "</html>",
+							PluginServices.getText(this, "pegar_vistas"),
+							JOptionPane.YES_NO_OPTION);
+			if (option != JOptionPane.YES_OPTION) {
+				return false;
+			}
+			Enumeration en = viewsConflits.elements();
+			while (en.hasMoreElements()) {
+				XMLEntity view = (XMLEntity) en.nextElement();
+				String newName = JOptionPane
+						.showInputDialog(
+								(Component) PluginServices.getMainFrame(),
+								"<html>"
+										+ PluginServices
+												.getText(this,
+														"introduzca_nuevo_nombre_para_la_vista")
+										+ " " + view.getStringProperty("name")
+										+ ":" + "</html>", // Mensaje
+								view.getStringProperty("name") // Valor por
+																// defecto
+						);
+				if (newName == null) {
+					JOptionPane.showMessageDialog((Component) PluginServices
+							.getMainFrame(), "<html>"
+							+ PluginServices.getText(this,
+									"operacion_cancelada") + "</html>",// Mensaje
+							PluginServices.getText(this, "pegar_vistas"),// titulo
+							JOptionPane.ERROR_MESSAGE);
+				} else if (newName.equalsIgnoreCase(view
+						.getStringProperty("name"))) {
+					JOptionPane.showMessageDialog((Component) PluginServices
+							.getMainFrame(), "<html>"
+							+ PluginServices.getText(this,
+									"operacion_cancelada") + ":<br>"
+							+ PluginServices.getText(this, "nombre_no_valido")
+							+ "</html>",// Mensaje
+							PluginServices.getText(this, "pegar_vistas"),// FIXME:
+																			// getText
+							JOptionPane.ERROR_MESSAGE);
+					return false;
+				}
+				view.setName(newName);
+			}
+			if (xmlTables != null)
+				xmlTables.removeAllChildren();
+			tablesConflits = null;
+		}
+
+		if (tablesConflits != null && tablesConflits.size() > 0) {
+			int option = JOptionPane.showConfirmDialog(
+					(Component) PluginServices.getMainFrame(), "<html>"
+							+ PluginServices.getText(this,
+									"conflicto_de_nombres_de_tablas_al_pegar")
+							+ "<br>"
+							+ PluginServices.getText(this,
+									"no_se_pegaran_las_tablas") + "<br>"
+							+ PluginServices.getText(this, "desea_continuar")
+							+ "</html>", // Mensaje
+					PluginServices.getText(this, "pegar_vistas"),// FIXME:
+																	// getText
+					JOptionPane.YES_NO_OPTION);
+			if (option != JOptionPane.YES_OPTION) {
+				return false;
+			}
+			xmlTables.removeAllChildren();
+		}
+
+		return true;
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/preferences/View3DPreferences.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/preferences/View3DPreferences.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/preferences/View3DPreferences.java	(revision 29090)
@@ -0,0 +1,156 @@
+package org.gvsig.gvsig3dgui.preferences;
+
+import java.awt.event.ActionEvent;
+import java.util.Enumeration;
+import java.util.prefs.Preferences;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+
+import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.preferences.AbstractPreferencePage;
+import com.iver.andami.preferences.StoreException;
+
+public class View3DPreferences extends AbstractPreferencePage {
+
+	private String id;
+	private ImageIcon icon;
+	private GridBagLayoutPanel panel;
+	private ButtonGroup radioButtonGroup;
+	private boolean compatibilitySwing = false;
+	private JRadioButton activeAWT;
+	private JRadioButton activeGL;
+	private static Preferences prefs = Preferences.userRoot().node(
+			"gvsig.configuration.3D");
+
+	public View3DPreferences() {
+		super();
+		// TODO Auto-generated constructor stub
+		id = this.getClass().getName();
+		icon = PluginServices.getIconTheme().get("gnome-settings-theme");
+	}
+
+	public void setChangesApplied() {
+		// System.out.println("ESTOY LLAMANDO A setChangesApplied()");
+		if (compatibilitySwing)
+			activeAWT.setSelected(true);
+		else
+			activeGL.setSelected(true);
+	}
+
+	public void storeValues() throws StoreException {
+		// TODO Auto-generated method stub
+		// System.out.println("ESTOY LLAMANDO A storeValues()");
+		prefs.putBoolean("compatibilitySwing", compatibilitySwing);
+	}
+
+	public String getID() {
+		return id;
+	}
+
+	public ImageIcon getIcon() {
+		return icon;
+	}
+
+	private ButtonGroup getRadioButonGroup() {
+
+		if (radioButtonGroup == null) {
+
+			// Create an action for each radio button
+			Action AWTaction = new AbstractAction("AWT") {
+
+				// This method is called whenever the radio button is pressed,
+				// even if it is already selected; this method is not called
+				// if the radio button was selected programmatically
+				public void actionPerformed(ActionEvent evt) {
+					// ACTION THAT ACTIVATE GL PANEL MODE
+					compatibilitySwing = true;
+				}
+			};
+
+			Action GLaction = new AbstractAction("GL") {
+				// See above
+				public void actionPerformed(ActionEvent evt) {
+					// ACTION THAT ACTIVATE CANVAS MODE
+					compatibilitySwing = false;
+				}
+			};
+
+			
+
+			activeAWT.setAction(AWTaction);
+			activeGL.setAction(GLaction);
+			// Inicialize the button properties
+			activeAWT.setName("Si");
+			activeAWT.setLabel(PluginServices.getText(this, "AWT"));
+			activeGL.setName("No");
+			activeGL.setLabel(PluginServices.getText(this, "GL"));
+
+			if (compatibilitySwing)
+				activeAWT.setSelected(true);
+			else
+				activeGL.setSelected(true);
+
+			// Associate the two buttons with a button group
+			radioButtonGroup = new ButtonGroup();
+			radioButtonGroup.add(activeAWT);
+			radioButtonGroup.add(activeGL);
+		}
+
+		return radioButtonGroup;
+	}
+
+	public JPanel getPanel() {
+
+		if (radioButtonGroup == null) {
+			radioButtonGroup = getRadioButonGroup();
+
+			addComponent(new JLabel(PluginServices.getText(this, "Swing_Compability")));
+			for (Enumeration e = radioButtonGroup.getElements(); e
+					.hasMoreElements();) {
+				JRadioButton b = (JRadioButton) e.nextElement();
+				addComponent(b);
+			}
+			addComponent(new JLabel(PluginServices.getText(this, "Swing_Compability_Note")));
+		}
+		return this;
+	}
+
+	public String getTitle() {
+		// TODO Auto-generated method stub
+		return "3D";
+	}
+
+	public void initializeDefaults() {
+		// TODO Auto-generated method stub
+		// System.out.println("inicialize Defaults");
+		this.compatibilitySwing = true;
+
+	}
+
+	public void initializeValues() {
+		// TODO Auto-generated method stub
+		// System.out.println("inicialize values");
+		compatibilitySwing = prefs.getBoolean("compatibilitySwing",
+				compatibilitySwing);
+		
+		// Create the radio buttons using the actions
+		activeAWT = new JRadioButton();
+		activeGL = new JRadioButton();
+
+	}
+
+	public boolean isValueChanged() {
+		// TODO Auto-generated method stub
+		// System.out.println("is value changed");
+		return true;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/ControlImport3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/ControlImport3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/ControlImport3D.java	(revision 29090)
@@ -0,0 +1,613 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+
+
+package org.gvsig.gvsig3dgui.import3D;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.geom.Point2D;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.border.TitledBorder;
+import javax.swing.filechooser.FileFilter;
+
+import org.gvsig.driver.OSGDriver;
+import org.gvsig.geometries3D.MultiGeometry;
+import org.gvsig.gpe.osg.OSGParser;
+import org.gvsig.gui.beans.datainput.DataInputField;
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.Vec3;
+import org.gvsig.osgvp.viewer.Intersections;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+/**
+ * @author Ángel Fraile Griñán  e-mail: angel.fraile@iver.es
+ * @since 1.1
+ * 
+ */
+public class ControlImport3D extends JPanel implements IWindow, ActionListener,
+		MouseListener {
+
+	private static final long serialVersionUID = 8557746972654979029L;
+	private JPanel panelOpcionesObjeto;
+	private TitledBorder borderOpcionesObjeto;
+	private JLabel labelLatitud;
+	private DataInputField textLatitud;
+	private JLabel labelLongitud;
+	private DataInputField textLongitud;
+	private JLabel labelEscaladoX;
+	private JLabel labelEscaladoY;
+	private JLabel labelEscaladoZ;
+	private DataInputField textEscaladoX;
+	private DataInputField textEscaladoY;
+	private DataInputField textEscaladoZ;
+	private JLabel labelRotacionX;
+	private JLabel labelRotacionY;
+	private JLabel labelRotacionZ;
+	private DataInputField textRotacionX;
+	private DataInputField textRotacionY;
+	private DataInputField textRotacionZ;
+	private JPanel panelImportar;
+	private TitledBorder borderImportar;
+	private JButton buttonImportar;
+	private int tipoObjectImport;
+	private JTextField textFile;
+	private TitledBorder border;
+	private JPanel panelPath;
+	private Hashtable iveExtensionsSupported = null;
+	private Hashtable osgExtensionsSupported = null;
+	private String lastPath = null;
+	private JLabel labelAltura;
+	private DataInputField textAltura;
+	private JPanel panelButtons;
+	private JButton buttonAccept;
+	private JButton buttonCancel;
+	private JPanel panelAux;
+	private JLabel labelX;
+	private DataInputField textX;
+	private JLabel labelY;
+	private DataInputField textY;
+
+	private View3D vista;
+	private File fileOSG = null;
+	private FileInputStream fileInput = null;
+	private Vec3 position = new Vec3(0,0,0);
+
+	
+	/**
+	 * Building the panel options
+	 * 
+	 * @param tipoObjeto
+	 * @param vista3D: actual 3D view selected
+	 */
+	public ControlImport3D(int tipoObjeto, View3D vista3D) {
+
+		tipoObjectImport = tipoObjeto;
+		vista = vista3D;
+
+		this.panelOpcionesObjeto = new JPanel();
+		this.borderOpcionesObjeto = new TitledBorder(PluginServices.getText(
+				this, "Opciones de objeto"));
+		this.panelOpcionesObjeto.setBorder(this.borderOpcionesObjeto);
+		this.panelOpcionesObjeto.setLayout(new GridLayout(5, 6, 5, 5));
+
+		this.textLatitud = new DataInputField();
+		this.labelLatitud = new JLabel(
+				PluginServices.getText(this, "Latitude"), JLabel.RIGHT);
+
+		this.textLongitud = new DataInputField();
+		this.labelLongitud = new JLabel(PluginServices.getText(this,
+				"Longitude"), JLabel.RIGHT);
+
+		this.textEscaladoX = new DataInputField();
+		this.textEscaladoX.setValue("1");
+		this.textEscaladoY = new DataInputField();
+		this.textEscaladoY.setValue("1");
+		this.textEscaladoZ = new DataInputField();
+		this.textEscaladoZ.setValue("1");
+		this.labelEscaladoX = new JLabel(PluginServices
+				.getText(this, "EscaladoX"), JLabel.RIGHT);
+		this.labelEscaladoY = new JLabel(PluginServices
+				.getText(this, "EscaladoY"), JLabel.RIGHT);
+		this.labelEscaladoZ = new JLabel(PluginServices
+				.getText(this, "EscaladoZ"), JLabel.RIGHT);
+
+		this.textRotacionX = new DataInputField();
+		this.textRotacionY = new DataInputField();
+		this.textRotacionZ = new DataInputField();
+		this.labelRotacionX = new JLabel(PluginServices.getText(this,
+				"Rotation_degreesX"), JLabel.RIGHT);
+		this.labelRotacionY = new JLabel(PluginServices.getText(this,
+				"Rotation_degreesY"), JLabel.RIGHT);
+		this.labelRotacionZ = new JLabel(PluginServices.getText(this,
+				"Rotation_degreesZ"), JLabel.RIGHT);
+
+		this.textAltura = new DataInputField();
+		this.labelAltura = new JLabel(PluginServices.getText(this, "Hight"),
+				JLabel.RIGHT);
+
+		this.textX = new DataInputField();
+		this.labelX = new JLabel(PluginServices.getText(this, "Coordenada X:"),
+				JLabel.RIGHT);
+
+		this.textY = new DataInputField();
+		this.labelY = new JLabel(PluginServices.getText(this, "Coordenada Y:"),
+				JLabel.RIGHT);
+
+		this.panelOpcionesObjeto.add(this.labelLatitud);
+		this.panelOpcionesObjeto.add(this.textLatitud);
+		this.panelOpcionesObjeto.add(this.labelX);
+		this.panelOpcionesObjeto.add(this.textX);
+		this.panelOpcionesObjeto.add(new JPanel());
+		this.panelOpcionesObjeto.add(new JPanel());
+
+		this.panelOpcionesObjeto.add(this.labelLongitud);
+		this.panelOpcionesObjeto.add(this.textLongitud);
+		this.panelOpcionesObjeto.add(this.labelY);
+		this.panelOpcionesObjeto.add(this.textY);
+		this.panelOpcionesObjeto.add(new JPanel());
+		this.panelOpcionesObjeto.add(new JPanel());
+
+		this.panelOpcionesObjeto.add(this.labelAltura);
+		this.panelOpcionesObjeto.add(this.textAltura);
+		this.panelOpcionesObjeto.add(new JPanel());
+		this.panelOpcionesObjeto.add(new JPanel());
+		this.panelOpcionesObjeto.add(new JPanel());
+		this.panelOpcionesObjeto.add(new JPanel());
+
+		this.panelOpcionesObjeto.add(this.labelEscaladoX);
+		this.panelOpcionesObjeto.add(this.textEscaladoX);
+		this.panelOpcionesObjeto.add(this.labelEscaladoY);
+		this.panelOpcionesObjeto.add(this.textEscaladoY);
+		this.panelOpcionesObjeto.add(this.labelEscaladoZ);
+		this.panelOpcionesObjeto.add(this.textEscaladoZ);
+
+		this.panelOpcionesObjeto.add(this.labelRotacionX);
+		this.panelOpcionesObjeto.add(this.textRotacionX);
+		this.panelOpcionesObjeto.add(this.labelRotacionY);
+		this.panelOpcionesObjeto.add(this.textRotacionY);
+		this.panelOpcionesObjeto.add(this.labelRotacionZ);
+		this.panelOpcionesObjeto.add(this.textRotacionZ);
+
+		this.panelImportar = new JPanel();
+		this.borderImportar = new TitledBorder(PluginServices.getText(this,
+				"File"));
+		this.panelImportar.setBorder(this.borderImportar);
+		this.panelImportar.setLayout(new GridLayout(1, 1, 5, 5));
+		this.buttonImportar = new JButton(PluginServices.getText(this,
+				"Examine"));
+		this.panelImportar.add(this.buttonImportar);
+		this.buttonImportar.addActionListener(this);
+
+		this.panelAux = new JPanel();
+		this.panelAux.setLayout(new BorderLayout(5, 5));
+		this.panelAux.add(this.panelOpcionesObjeto, BorderLayout.CENTER);
+		this.panelAux.add(this.panelImportar, BorderLayout.SOUTH);
+
+		this.panelPath = new JPanel();
+		this.border = new TitledBorder(PluginServices.getText(this,
+				"Ruta_manual"));
+		this.panelPath.setBorder(this.border);
+		this.panelPath.setLayout(new GridLayout(1, 1, 5, 5));
+		this.textFile = new JTextField();
+		this.panelPath.add(this.textFile);
+
+		this.panelButtons = new JPanel();
+		this.panelButtons.setLayout(new GridLayout(1, 3, 5, 5));
+		this.buttonAccept = new JButton(PluginServices.getText(this, "Accept"));
+		this.buttonAccept.addActionListener(this);
+		this.buttonCancel = new JButton(PluginServices.getText(this, "Cancel"));
+		this.buttonCancel.addActionListener(this);
+		this.panelButtons.add(new JPanel());
+		this.panelButtons.add(this.buttonAccept);
+		this.panelButtons.add(this.buttonCancel);
+
+		this.setLayout(new BorderLayout(5, 5));
+		this.add(this.panelAux, BorderLayout.NORTH);
+		this.add(this.panelPath, BorderLayout.CENTER);
+		this.add(this.panelButtons, BorderLayout.SOUTH);
+
+		vista.getCanvas3d().addMouseListener(this);
+
+	}
+
+	/**
+	 * Window properties
+	 * 
+	 * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
+	 */
+
+	public WindowInfo getWindowInfo() {
+		WindowInfo m_viewinfo = new WindowInfo();
+		String cad = null;
+		// java.awt.Dimension minSize = new java.awt.Dimension();
+		// minSize.setSize(290, 400);
+
+		if (tipoObjectImport == 0)
+			cad = "Importar_Objeto_3D";
+		else if (tipoObjectImport == 1)
+			cad = "Importar_Objeto_3D_Vectorial";
+
+		m_viewinfo.setTitle(PluginServices.getText(this, cad));
+		m_viewinfo.setHeight(290);
+		m_viewinfo.setWidth(610);
+		return m_viewinfo;
+	}
+
+	/**
+	 * Buttons events listener
+	 */
+	public void actionPerformed(ActionEvent event) {
+		if (event.getSource() == this.buttonImportar) {
+			actionPerformedImport();
+
+		}
+		if (event.getSource() == this.buttonAccept) {
+			actionPerformedAccept();
+
+		}
+		if (event.getSource() == this.buttonCancel) {
+			PluginServices.getMDIManager().closeWindow(this);
+		}
+	}
+
+	/**
+	 * Accept button listener
+	 */
+	private void actionPerformedAccept() {
+
+
+		if (fileOSG == null) {// of the user write the file
+			// String fichManual = getJTextFieldFichero();
+			if(getJTextFieldFichero().equals("")) {
+				JOptionPane.showMessageDialog(null, PluginServices.getText(this,"root_in"),
+						PluginServices.getText(this,"no_file"), JOptionPane.WARNING_MESSAGE);
+				return;
+			}
+			else {
+					fileOSG = new File(getJTextFieldFichero());
+				if(!fileOSG.exists()){
+					JOptionPane.showMessageDialog(null,PluginServices.getText(this,"no_root"),
+							PluginServices.getText(this,"no_file2"), JOptionPane.WARNING_MESSAGE);
+					fileOSG = null;
+					this.setTextFieldFichero();
+					return;
+				}
+			}
+
+		} else {
+			try {
+				if(!fileOSG.exists()){
+					JOptionPane.showMessageDialog(null, PluginServices.getText(this,"root_in"),
+							PluginServices.getText(this,"no_file"), JOptionPane.WARNING_MESSAGE);
+					return;
+				}
+				fileInput = new FileInputStream(fileOSG);
+				
+			} catch (FileNotFoundException e) {
+				e.printStackTrace();
+			}
+		}
+
+		OSGDriver _osgDriver = new OSGDriver();
+		OSGParser parser = new OSGParser("OSG", "OSG File Formats Parser");
+		parser.parse(_osgDriver, null, fileOSG.toURI());
+		MultiGeometry root = _osgDriver.getRootFeature();
+
+		IProjectView model = vista.getModel();
+		MapContext mapContext = model.getMapContext();
+		FLayers layers = mapContext.getLayers();
+		FLayer[] actives = layers.getActives();
+		if (actives.length == 1
+				&& Layer3DProps.getLayer3DProps(actives[0]).getType() == Layer3DProps.layer3DOSG) {
+			OSGCacheService osgCache = (OSGCacheService) Layer3DProps.getLayer3DProps(actives[0]).getCacheService();
+			Vec3 scale = new Vec3(Double.parseDouble(textEscaladoX.getValue()), Double.parseDouble(textEscaladoY.getValue()), Double.parseDouble(textEscaladoZ.getValue()));
+			Vec3 rotation = new Vec3(Double.parseDouble(textRotacionX.getValue()), Double.parseDouble(textRotacionY.getValue()), Double.parseDouble(textRotacionZ.getValue()));
+			osgCache.AddGeometryToLayer(root, position,rotation,scale);
+		}
+		else {
+			JOptionPane.showMessageDialog(null, PluginServices.getText(this,"editable_layer_select_info"),
+					PluginServices.getText(this,"editable_layer_select"), JOptionPane.WARNING_MESSAGE);
+			return;
+		}
+		PluginServices.getMDIManager().closeWindow(this);
+	}
+
+	/**
+	 * Import file button listener
+	 */
+	private void actionPerformedImport() {
+		JFileChooser jfc = new JFileChooser(lastPath);
+		jfc.removeChoosableFileFilter(jfc.getAcceptAllFileFilter());
+		iveExtensionsSupported = new Hashtable();
+		osgExtensionsSupported = new Hashtable();
+		osgExtensionsSupported.put("osg", new MyFileFilter("osg",
+				PluginServices.getText(this, "Ficheros *.osg"), "osg"));
+		iveExtensionsSupported.put("ive", new MyFileFilter("ive",
+				PluginServices.getText(this, "Ficheros *.ive"), "ive"));
+		iveExtensionsSupported.put("obj", new MyFileFilter("obj",
+				PluginServices.getText(this, "Ficheros *.obj"), "obj"));
+		iveExtensionsSupported.put("dae", new MyFileFilter("dae",
+				PluginServices.getText(this, "Ficheros *.dae"), "dae"));
+		iveExtensionsSupported.put("3ds", new MyFileFilter("3ds",
+				PluginServices.getText(this, "Ficheros *.3ds"), "3ds"));
+		iveExtensionsSupported.put("*", new MyFileFilter("*",
+				PluginServices.getText(this, "Ficheros *.*"), "*.*"));
+		
+		Iterator iter = osgExtensionsSupported.values().iterator();
+		
+		while (iter.hasNext()) {
+			jfc.addChoosableFileFilter((FileFilter) iter.next());
+		}
+
+		iter = iveExtensionsSupported.values().iterator();
+		while (iter.hasNext()) {
+			jfc.addChoosableFileFilter((FileFilter) iter.next());
+		}
+
+		if (jfc.showOpenDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+
+			fileOSG = jfc.getSelectedFile();
+			if (fileOSG.exists()) {// file don't exists in the directory.
+
+				MyFileFilter filter = (MyFileFilter) jfc.getFileFilter();
+				fileOSG = filter.normalizeExtension(fileOSG);
+				textFile.setText(fileOSG.getAbsolutePath());
+			} else {
+				JOptionPane.showMessageDialog(null,PluginServices.getText(this,"no_root"),
+						PluginServices.getText(this,"no_file2"), JOptionPane.WARNING_MESSAGE);
+				return;
+			}
+		}// If aprove option.
+	}
+
+	/**
+	 * Getters and Setters of all TextFields values
+	 */
+	public String getJTextFieldFichero() {
+		return textFile.getText();
+	}
+	
+	public void setTextFieldFichero() {
+		textFile.setText(null);
+	}
+	/*
+	 * All MouseListener methods
+	 * 
+	 */
+	public void mouseClicked(MouseEvent e) {
+		// TODO Auto-generated method stub
+	}
+
+	public void mouseEntered(MouseEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void mouseExited(MouseEvent e) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void mousePressed(MouseEvent e) {
+		// TODO Auto-generated method stub
+	}
+
+	public void mouseReleased(MouseEvent e) {
+
+		Point pScreen = e.getPoint();
+
+		if (e.getButton() == MouseEvent.BUTTON1) {
+			Vec3 intersection = null;
+
+			// System.err.println("Coordenadas de pantalla " + pScreen.getX() +
+			// ","+
+			// pScreen.getY());
+
+			textX.setValue(Double.toString(pScreen.getX()));
+			textY.setValue(Double.toString(pScreen.getY()));
+
+			IProjectView model = vista.getModel();
+
+			MapContext3D mcontext = (MapContext3D) model.getMapContext();
+			mcontext.getCanvas3d();
+
+			Intersections hits = mcontext.getCanvas3d().getOSGViewer().rayPick(
+					(int) pScreen.getX(), (int) pScreen.getY());
+			Point2D pWorld = new Point2D.Double();
+			if (hits.containsIntersections()) {
+				Vec3 hit = hits.getFirstIntersection().getIntersectionPoint();
+				// convert to geo coordinates
+				position = hit;
+				// System.err.println("Interseccion de osg " + hit.x() + ","+
+				// hit.y());
+				if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+						"EPSG:4326") == 0) {
+					Vec3 geoPt = mcontext.getPlanet()
+							.convertXYZToLatLongHeight(hit);
+					// Swap the coordinates X and Y, because they are invert.
+					intersection = new Vec3(geoPt.y(), geoPt.x(), geoPt.z());
+				} else {
+					intersection = hit;
+				}
+			} else {
+				if (mcontext.getProjection().getAbrev().compareToIgnoreCase(
+						"EPSG:4326") == 0) {
+					pWorld.setLocation(360, 120);
+					intersection = new Vec3(360, 120, 0);
+				} else {
+					intersection = new Vec3(1e100, 1e100, 0);
+					// pWorld.setLocation(1e100, 1e100);
+				}
+			}
+
+			textLatitud.setValue(Double.toString(intersection.x()));
+			textLongitud.setValue(Double.toString(intersection.y()));
+
+			textAltura.setValue(Double.toString(intersection.z()));
+
+		}// if e.getButton()
+	}// if hits
+
+	public Object getWindowProfile() {
+		return WindowInfo.PROPERTIES_PROFILE;
+	}
+
+}
+
+
+/**
+ * 
+ * @version 14/08/2007
+ * @author Borja Sánchez Zamorano (borja.sanchez@iver.es)
+ * 
+ */
+class MyFileFilter extends FileFilter {
+
+	private String[] extensiones = new String[1];
+	private String description;
+	private boolean dirs = true;
+	private String info = null;
+
+	public MyFileFilter(String[] ext, String desc) {
+		extensiones = ext;
+		description = desc;
+	}
+
+	public MyFileFilter(String[] ext, String desc, String info) {
+		extensiones = ext;
+		description = desc;
+		this.info = info;
+	}
+
+	public MyFileFilter(String ext, String desc) {
+		extensiones[0] = ext;
+		description = desc;
+	}
+
+	public MyFileFilter(String ext, String desc, String info) {
+		extensiones[0] = ext;
+		description = desc;
+		this.info = info;
+	}
+
+	public MyFileFilter(String ext, String desc, boolean dirs) {
+		extensiones[0] = ext;
+		description = desc;
+		this.dirs = dirs;
+	}
+
+	public MyFileFilter(String ext, String desc, boolean dirs, String info) {
+		extensiones[0] = ext;
+		description = desc;
+		this.dirs = dirs;
+		this.info = info;
+	}
+
+	public boolean accept(File f) {
+		if (f.isDirectory()) {
+			if (dirs) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+		for (int i = 0; i < extensiones.length; i++) {
+			if (extensiones[i].equals("")) {
+				continue;
+			}
+			if (getExtensionOfAFile(f).equalsIgnoreCase(extensiones[i])) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * @see javax.swing.filechooser.FileFilter#getDescription()
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	public String[] getExtensions() {
+		return extensiones;
+	}
+
+	public boolean isDirectory() {
+		return dirs;
+	}
+
+	private String getExtensionOfAFile(File file) {
+		String name;
+		int dotPos;
+		name = file.getName();
+		dotPos = name.lastIndexOf(".");
+		if (dotPos < 1) {
+			return "";
+		}
+		return name.substring(dotPos + 1);
+	}
+
+	public File normalizeExtension(File file) {
+		String ext = getExtensionOfAFile(file);
+		if (ext.equals("") || !(this.accept(file))) {
+			return new File(file.getAbsolutePath() + "." + extensiones[0]);
+		}
+		return file;
+	}
+
+	public String getInfo() {
+		return this.info;
+	}
+
+	public void setInfo(String info) {
+		this.info = info;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/CreateNewLayerOSG.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/CreateNewLayerOSG.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/CreateNewLayerOSG.java	(revision 29090)
@@ -0,0 +1,125 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+package org.gvsig.gvsig3dgui.import3D;
+
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3d.drivers.GvsigDriverOSG;
+import org.gvsig.gvsig3d.map3d.MapContext3D;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.layers.FLyrVect;
+import com.iver.cit.gvsig.fmap.layers.VectorialAdapter;
+import com.iver.cit.gvsig.fmap.layers.VectorialDefaultAdapter;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+/**
+ * @author Ángel Fraile Griñán  e-mail: angel.fraile@iver.es
+ * @since 1.1
+ * 
+ */
+public class CreateNewLayerOSG extends Extension {
+	private FLyrVect layerOSG;
+
+	
+	/**
+	 * Creating a new layer OSG editable, ready to insert OSG objects
+	 */
+	public void execute(String actionCommand) {
+
+		if (actionCommand.equals("CREARCAPA")) {
+			com.iver.andami.ui.mdiManager.IWindow activeWindow = PluginServices
+					.getMDIManager().getActiveWindow();
+
+			if (activeWindow instanceof View3D) {
+				GvsigDriverOSG d = new GvsigDriverOSG();
+				VectorialAdapter adapter = new VectorialDefaultAdapter();
+				adapter.setDriver(d);
+
+				layerOSG = new FLyrVect();
+				View3D vista = (View3D) PluginServices.getMDIManager()
+						.getActiveWindow();
+				IProjectView model = vista.getModel();
+
+				MapContext3D mapa = (MapContext3D) model.getMapContext();
+				layerOSG.setName("defaultLayerOSG");
+				layerOSG.setSource(adapter);
+
+				// add 3D properties, mainly to keep track of hooked state
+				Layer3DProps props3D = new Layer3DProps();
+				props3D.setType(Layer3DProps.layer3DOSG);
+				props3D.setChooseType(false);
+				props3D.setLayer(layerOSG);
+				props3D.setNewLayerOSG(true);
+				
+
+				layerOSG.setProperty("3DLayerExtension", props3D);
+				layerOSG.setProjection(mapa.getProjection());
+				mapa.getLayers().addLayer(layerOSG);
+
+				OSGCacheService osgCacheService = (OSGCacheService) props3D
+						.getCacheService();
+				osgCacheService.startEditing();
+			}
+		}
+	}
+
+	public void initialize() {
+		PluginServices.getIconTheme().registerDefault(
+				"create_new_layer_OSG",
+				this.getClass().getClassLoader().getResource(
+						"images/plugin_link.png"));
+	}
+
+	public boolean isEnabled() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		// Only isEnable = true, where the view has a view3D.
+		if (f instanceof View3D) {
+			return true;
+		}
+		return false;
+
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+				.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+
+		// Only isVisible = true, where the view has a view3D.
+		if (f instanceof View3D) {
+			return true;
+		}
+		return false;
+
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/SaveLayerOSG.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/SaveLayerOSG.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/SaveLayerOSG.java	(revision 29090)
@@ -0,0 +1,177 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+package org.gvsig.gvsig3dgui.import3D;
+
+import java.awt.Component;
+import java.io.File;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileFilter;
+
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3dgui.view.View3D;
+import org.gvsig.osgvp.Group;
+import org.gvsig.osgvp.osgDB;
+import org.gvsig.osgvp.exceptions.node.NodeException;
+import org.gvsig.osgvp.exceptions.node.SaveNodeException;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+
+/**
+ * @author Ángel Fraile Griñán  e-mail: angel.fraile@iver.es
+ * @since 1.1
+ * 
+ */
+public class SaveLayerOSG extends Extension{
+
+
+	private Hashtable iveExtensionsSupported = null;
+	private Hashtable osgExtensionsSupported = null;
+	private String lastPath = null;
+	
+	/**
+	 * Creating save panel options
+	 */
+	public void execute(String actionCommand) {
+		if (actionCommand.equals("SALVARCAPA")) {
+			com.iver.andami.ui.mdiManager.IWindow activeWindow = PluginServices
+			.getMDIManager().getActiveWindow();
+			
+			
+			JFileChooser jfc = new JFileChooser(lastPath);
+			jfc.removeChoosableFileFilter(jfc.getAcceptAllFileFilter());
+			iveExtensionsSupported = new Hashtable();
+			osgExtensionsSupported = new Hashtable();
+			iveExtensionsSupported.put("ive", new MyFileFilter("ive",
+					PluginServices.getText(this, "Ficheros *.ive"), "ive"));
+			osgExtensionsSupported.put("osg", new MyFileFilter("osg",
+					PluginServices.getText(this, "Ficheros *.osg"), "osg"));
+
+			Iterator iter = osgExtensionsSupported.values().iterator();
+			while (iter.hasNext()) {
+				jfc.addChoosableFileFilter((FileFilter) iter.next());
+			}
+
+			iter = iveExtensionsSupported.values().iterator();
+			while (iter.hasNext()) {
+				jfc.addChoosableFileFilter((FileFilter) iter.next());
+			}
+
+			if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
+					File f = jfc.getSelectedFile();
+						if (f.exists()){//file exists in the directory.
+							int resp = JOptionPane.showConfirmDialog(
+									(Component) PluginServices.getMainFrame(),
+									PluginServices.getText(this,
+											"fichero_ya_existe_seguro_desea_guardarlo")+
+											"\n"+
+											f.getAbsolutePath(),
+									PluginServices.getText(this,"guardar"), JOptionPane.YES_NO_OPTION);
+							if (resp != JOptionPane.YES_OPTION) {//cancel pressed.
+								return;
+							}
+						}//if exits.
+						if (activeWindow instanceof View3D ) {
+//							View3D view3D;
+//							view3D = (View3D) activeWindow;
+							MyFileFilter filter = (MyFileFilter)jfc.getFileFilter();// ive, osg
+							f = filter.normalizeExtension(f);//"name" + "." + "ive", "name" + "." + "osg".
+							
+							View3D vista = (View3D) PluginServices.getMDIManager().getActiveWindow();
+							IProjectView model = vista.getModel();
+							MapContext mapContext = model.getMapContext();
+							FLayers layers = mapContext.getLayers();
+							FLayer[] actives = layers.getActives();
+							OSGCacheService osgCache = null;
+							if (actives.length == 1
+									&& Layer3DProps.getLayer3DProps(actives[0]).getType() == Layer3DProps.layer3DOSG) {
+								osgCache = (OSGCacheService) Layer3DProps.getLayer3DProps(actives[0]).getCacheService();
+								
+							}
+							try {
+								Group node = osgCache.getLayerNode();
+//								Optimizer opt = new Optimizer();
+//								opt.optimize(node, OptimizationOptions.ALL_OPTIMIZATIONS);
+								osgDB.writeNodeFile(node, f.getAbsolutePath());
+							} catch (SaveNodeException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							} catch (NodeException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							}
+							
+						//	view3D.getCanvas3d().getOSGViewer().takeScreenshot(f.getAbsolutePath());//screen snapshop.
+					}//if activeWindow.
+				}//If aprove option.
+			
+			}
+	}
+
+	public void initialize() {
+		PluginServices.getIconTheme().registerDefault(
+				"save_layer_OSG",
+				this.getClass().getClassLoader().getResource(
+				"images/plugin_edit.png"));
+	}
+
+	/**
+	 * Enable options.
+	 * Enabled when a layer is selected and this type layer is layer3DOSG 
+	 */
+	public boolean isEnabled() {
+		
+		View3D vista = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		IProjectView model = vista.getModel();
+		MapContext mapContext = model.getMapContext();
+		FLayers layers = mapContext.getLayers();
+		FLayer[] actives = layers.getActives();
+		if (actives.length == 1 && Layer3DProps.getLayer3DProps(actives[0])!= null && Layer3DProps.getLayer3DProps(actives[0]).getType() == Layer3DProps.layer3DOSG) {
+			OSGCacheService osgCache = (OSGCacheService) Layer3DProps.getLayer3DProps(actives[0]).getCacheService();
+			return true;
+		}else
+			return false;
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+		.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+		// Only isVisible = true, where the view has a view3D.
+		if (f instanceof View3D) {
+			return true;
+		}
+		return false;
+	}
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/MenuImport3D.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/MenuImport3D.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/import3D/MenuImport3D.java	(revision 29090)
@@ -0,0 +1,124 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+
+package org.gvsig.gvsig3dgui.import3D;
+
+import java.io.File;
+
+import org.gvsig.GeometryFactory3D;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.gvsig3d.cacheservices.OSGCacheService;
+import org.gvsig.gvsig3d.drivers.GvsigDriverOSG;
+import org.gvsig.gvsig3dgui.view.View3D;
+
+import com.iver.ai2.gvsig3d.map3d.layers.Layer3DProps;
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.Extension;
+import com.iver.cit.gvsig.fmap.MapContext;
+import com.iver.cit.gvsig.fmap.layers.FLayer;
+import com.iver.cit.gvsig.fmap.layers.FLayers;
+import com.iver.cit.gvsig.fmap.layers.LayerFactory;
+import com.iver.cit.gvsig.project.documents.view.IProjectView;
+
+
+/**
+ * @author Ángel Fraile Griñán  e-mail: angel.fraile@iver.es
+ * @since 1.1
+ * 
+ */
+public class MenuImport3D extends Extension{
+	
+	
+	private ControlImport3D controlImport;
+
+	
+	public void execute(String actionCommand) {
+		int tipoObjeto = 0;
+		
+		if (actionCommand.equals("OBJECT"))
+			tipoObjeto = 0;
+		else if( actionCommand.equals("OBJECT_VECTORIAL") )
+			tipoObjeto = 1;
+	
+		
+		
+		View3D vista = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		
+		this.controlImport = new ControlImport3D(tipoObjeto,vista);
+		
+        PluginServices.getMDIManager().addWindow(controlImport);
+		
+	}
+
+	public void initialize() {
+		// Registering icons.
+		PluginServices.getIconTheme().registerDefault(
+				"insert_new_geometry_OSG",
+				this.getClass().getClassLoader().getResource(
+				"images/plugin_add.png"));
+		
+	}
+	
+	public void postInitialize() {
+		LayerFactory.getDM().addDriver(new File(this.getClass().getResource(
+        "/lib").getFile()),"gvSIG OSG Driver",GvsigDriverOSG.class);
+		
+		// Inicializing the geometry factory 3D
+		GeometryManager.getInstance().registerGeometryFactory(new GeometryFactory3D());
+		
+	}
+
+	/**
+	 * Enable options.
+	 * Enabled when a layer is selected and this type layer is layer3DOSG 
+	 */
+	public boolean isEnabled() {
+
+		View3D vista = (View3D) PluginServices.getMDIManager().getActiveWindow();
+		IProjectView model = vista.getModel();
+		MapContext mapContext = model.getMapContext();
+		FLayers layers = mapContext.getLayers();
+		FLayer[] actives = layers.getActives();
+		//Layer3DProps props3D = Layer3DProps.getLayer3DProps(actives[0]);
+		if (actives.length == 1
+				&& Layer3DProps.getLayer3DProps(actives[0]).getType() == Layer3DProps.layer3DOSG) {
+			OSGCacheService osgCache = (OSGCacheService) Layer3DProps.getLayer3DProps(actives[0]).getCacheService();
+			return true;
+		}else
+			return false;
+		
+	}
+
+	public boolean isVisible() {
+		com.iver.andami.ui.mdiManager.IWindow f = PluginServices
+		.getMDIManager().getActiveWindow();
+
+		if (f == null) {
+			return false;
+		}
+		
+		// Only isVisible = true, where the view has a view3D.
+		if (f instanceof View3D) {
+			return true;
+		}
+		return false;
+	}
+}
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowInfoSupport.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowInfoSupport.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowInfoSupport.java	(revision 29090)
@@ -0,0 +1,230 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+import com.iver.andami.plugins.PluginClassLoader;
+import com.iver.andami.ui.mdiFrame.MainFrame;
+import com.iver.andami.ui.mdiFrame.NoSuchMenuException;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.core.mdiManager.FrameWindowSupport;
+import com.iver.core.mdiManager.SingletonWindowSupport;
+import com.iver.core.mdiManager.WindowInfoSupport;
+
+
+/**
+ *
+ */
+public class JDialogWindowInfoSupport extends WindowInfoSupport {
+	private static int serialId = 0;
+	
+	/**
+	 * Support class which associates Frames and Windows
+	 */
+	private JDialogFrameWindowSupport fws;
+
+	// Correspondencias entre las ventanas y su informacion
+	/**
+	 * key: IWindow, value: WindowInfo
+	 */
+	private Hashtable viewInfo = new Hashtable();
+	/**
+	 * key: WindowInfo, value: IWindow
+	 */
+	private Hashtable infoView = new Hashtable();
+	private WindowPropertyChangeListener windowInfoListener = new WindowPropertyChangeListener();
+	private JDialogSingletonWindowSupport svs;
+	private MainFrame mdiFrame;
+
+	/**
+	 * Creates a new ViewInfoSupport object.
+	 *
+	 * @param frame DOCUMENT ME!
+	 * @param fvs DOCUMENT ME!
+	 * @param svs
+	 */
+	public JDialogWindowInfoSupport(MainFrame frame, FrameWindowSupport fvs,
+		SingletonWindowSupport svs) {
+		super(frame,fvs,svs);
+		this.fws = (JDialogFrameWindowSupport) fvs;
+		this.svs = (JDialogSingletonWindowSupport) svs;
+		this.mdiFrame = frame;
+	}
+
+	/**
+	 * Devuelve la vista cuyo identificador es el parametro
+	 *
+	 * @param id Identificador de la vista que se quiere obtener
+	 *
+	 * @return La vista o null si no hay ninguna vista con ese identificador
+	 */
+	public IWindow getWindowById(int id) {
+		Enumeration en = infoView.keys();
+
+		while (en.hasMoreElements()) {
+			WindowInfo vi = (WindowInfo) en.nextElement();
+
+			if (vi.getId() == id) {
+				return (IWindow) infoView.get(vi);
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param w DOCUMENT ME!
+	 *
+	 * @return DOCUMENT ME!
+	 */
+	public synchronized WindowInfo getWindowInfo(IWindow w) {
+		WindowInfo wi = (WindowInfo) viewInfo.get(w);
+
+		if (wi != null) {
+			fws.updateWindowInfo(w, wi);
+		}
+		else {
+			wi = w.getWindowInfo();
+
+			//Para el título
+			if (wi.getHeight() != -1) {
+				wi.setHeight(wi.getHeight() + 40);
+			}
+
+			wi.addPropertyChangeListener(windowInfoListener);
+			viewInfo.put(w, wi);
+			infoView.put(wi, w);
+			wi.setId(serialId++);
+		}
+
+		return wi;
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param p DOCUMENT ME!
+	 */
+	public void deleteWindowInfo(IWindow p) {
+		WindowInfo vi = (WindowInfo) viewInfo.remove(p);
+		infoView.remove(vi);
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @author $author$
+	 * @version $Revision: 1.1 $
+	 */
+	public class WindowPropertyChangeListener implements PropertyChangeListener {
+		/**
+		 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+		 */
+		public void propertyChange(PropertyChangeEvent evt) {
+			WindowInfo v = (WindowInfo) evt.getSource();
+			IWindow view = (IWindow) infoView.get(v);
+
+			if (view instanceof SingletonWindow) {
+				SingletonWindow sv = (SingletonWindow) view;
+
+				if (evt.getPropertyName().equals("x")) {
+					svs.setX(sv, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("y")) {
+					svs.setY(sv, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("height")) {
+					svs.setHeight(sv, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("width")) {
+					svs.setWidth(sv, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("maximized")) {
+					svs.setMaximized(sv, ((Boolean) evt.getNewValue()).booleanValue());
+				} else if (evt.getPropertyName().equals("normalBounds")) {
+					// we don't do anything at the moment here
+				//	svs.setNormalBounds(sv, (Rectangle) evt.getNewValue());
+				} else if (evt.getPropertyName().equals("title")) {
+					svs.setTitle(sv, (String) evt.getNewValue());
+
+					try {
+						mdiFrame.changeMenuName(new String[] {
+								"ventana", (String) evt.getOldValue()
+							}, (String) evt.getNewValue(),
+							(PluginClassLoader) getClass().getClassLoader());
+					} catch (NoSuchMenuException e) {
+						/*
+						 * No se hace nada porque puede modificarse el título de
+						 * una ventana antes de ser añadida a Andami
+						 */
+					}
+				}
+			} else {
+				if (evt.getPropertyName().equals("x")) {
+					fws.setX(view, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("y")) {
+					fws.setY(view, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("height")) {
+					fws.setHeight(view, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("width")) {
+					fws.setWidth(view, ((Integer) evt.getNewValue()).intValue());
+				} else if (evt.getPropertyName().equals("title")) {
+					fws.setTitle(view, (String) evt.getNewValue());
+					try{
+						mdiFrame.changeMenuName(new String[] {
+								"ventana", (String) evt.getOldValue()
+							}, (String) evt.getNewValue(),
+							(PluginClassLoader) getClass().getClassLoader());
+					} catch (NoSuchMenuException e) {
+						/*
+						 * No se hace nada porque puede modificarse el título de
+						 * una ventana antes de ser añadida a Andami
+						 */
+					}
+				}
+			}
+		}
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogStackSupport.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogStackSupport.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogStackSupport.java	(revision 29090)
@@ -0,0 +1,105 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.awt.Cursor;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.logging.Logger;
+
+import javax.swing.JDialog;
+
+import com.iver.andami.ui.mdiFrame.MDIFrame;
+import com.iver.core.mdiManager.DialogStackSupport;
+
+
+/**
+ *
+ */
+public class JDialogStackSupport extends DialogStackSupport{
+
+	/** log */
+    private static Logger logger = Logger.getLogger(DialogStackSupport.class.getName());
+
+    /** Pila de diálogos modales mostrados */
+    private ArrayList dialogStack = new ArrayList(0);
+    
+    private ArrayList dialogCursors = new ArrayList(0);
+
+    public JDialogStackSupport(MDIFrame frame) {
+    	super(frame);
+    }
+    
+    public void pushDialog(JDialog dlg){
+    	dialogStack.add(dlg);
+    }
+    
+    public JDialog popDialog(){
+    	return (JDialog) dialogStack.remove(dialogStack.size() - 1);
+    }
+
+	/**
+	 * @return
+	 */
+	public void setWaitCursor() {
+        dialogCursors.clear();
+		for (Iterator iter = dialogStack.iterator(); iter.hasNext();) {
+			JDialog dlg = (JDialog) iter.next();
+            dialogCursors.add(dlg.getCursor());
+			dlg.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ 	        dlg.getGlassPane().setVisible(true);
+ 	   }
+	}
+
+	/**
+	 * 
+	 */
+	public void restoreCursor() {
+		for (Iterator iter = dialogStack.iterator(); iter.hasNext();) {
+			JDialog dlg = (JDialog) iter.next();
+            
+            // TODO: RECUPERAR EL CURSOR
+            dlg.setCursor(null);
+		    dlg.getGlassPane().setVisible(false);
+		}
+	}
+	
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSkin.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSkin.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSkin.java	(revision 29090)
@@ -0,0 +1,1111 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.KeyEventDispatcher;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.beans.PropertyVetoException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.TreeMap;
+import java.util.logging.Logger;
+
+import javax.swing.DefaultDesktopManager;
+import javax.swing.DesktopManager;
+import javax.swing.ImageIcon;
+import javax.swing.JDesktopPane;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JInternalFrame;
+import javax.swing.KeyStroke;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.ui.mdiFrame.GlassPane;
+import com.iver.andami.ui.mdiFrame.MDIFrame;
+import com.iver.andami.ui.mdiFrame.NewStatusBar;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.IWindowListener;
+import com.iver.andami.ui.mdiManager.MDIUtilities;
+import com.iver.andami.ui.mdiManager.SingletonDialogAlreadyShownException;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.andami.ui.theme.Theme;
+import com.iver.core.mdiManager.NewSkin;
+
+/**
+ *
+ */
+public class JDialogSkin extends NewSkin{
+	private static final int DefaultXMargin = 20; // Added for the method 'centreJInternalFrame'
+	private static final int DefaultYMargin = 20; // Added for the method 'centreJInternalFrame'
+	private static final int MinimumXMargin = 130; // Added for the method 'centreJInternalFrame'
+	private static final int MinimumYMargin = 60; // Added for the method 'centreJInternalFrame'
+
+
+    /**
+     * Variable privada <code>desktopManager</code> para usarlo cuando sale
+     * una ventana que no queremos que nos restaure las que tenemos maximizadas.
+     * Justo antes de usar el setMaximize(false), le pegamos el cambiazo.
+     */
+    private static DesktopManager desktopManager = new DefaultDesktopManager();
+
+    /** log */
+    private static Logger logger = Logger.getLogger(JDialogSkin.class.getName());
+
+    /** Panel de la MDIFrame */
+    private MyDesktopPane panel = new MyDesktopPane();
+
+    /** MDIFrame */
+    private MDIFrame mainFrame;
+
+    private GlassPane glassPane = new GlassPane();
+
+    private JDialogStackSupport dss;
+
+    /**
+     * Associates JInternalFrames with the IWindow they contain
+     */
+    private JDialogFrameWindowSupport fws;
+
+    private JDialogWindowInfoSupport wis;
+
+    private JDialogWindowStackSupport wss;
+
+    private JDialogSingletonWindowSupport sws;
+
+    private Cursor lastCursor = null;
+	private ImageIcon image;
+	private String typeDesktop;
+
+	private IWindow lastActiveWindow = null;
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#init(com.iver.andami.ui.mdiFrame.MDIFrame)
+     */
+    public void init(MDIFrame f) {
+        // Inicializa el Frame y la consola
+        mainFrame = f;
+        mainFrame.setGlassPane(glassPane);
+        panel.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
+
+        mainFrame.getContentPane().add(panel, BorderLayout.CENTER);
+        panel.setDesktopManager(desktopManager);
+
+        fws = new JDialogFrameWindowSupport(mainFrame);
+        dss = new JDialogStackSupport(mainFrame);
+        sws = new JDialogSingletonWindowSupport(wis,fws);
+        wis = new JDialogWindowInfoSupport(mainFrame, fws, sws);
+        fws.setVis(wis);
+        wss = new JDialogWindowStackSupport(wis);
+
+
+        // TODO (jaume) esto no debería de estar aquí...
+        // molaría más en un diálogo de preferencias
+        // es sólo una prueba
+        KeyStroke controlTab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, KeyEvent.CTRL_MASK);
+
+        PluginServices.registerKeyStroke(controlTab, new KeyEventDispatcher() {
+
+			public boolean dispatchKeyEvent(KeyEvent e) {
+				IWindow[] views = getAllWindows();
+				if (views.length<=0 || e.getID() == KeyEvent.KEY_PRESSED)
+					return false;
+
+
+				int current = 0;
+				for (int i = 0; i < views.length; i++) {
+					if (views[i].equals(getActiveWindow())) {
+						current = i;
+						break;
+					}
+				}
+				addWindow(views[(current +1) % views.length]);
+				return true;
+			}
+
+        });
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#addWindow(com.iver.andami.ui.mdiManager.IWindow)
+     */
+    public IWindow addWindow(IWindow p) throws SingletonDialogAlreadyShownException {
+        // se obtiene la información de la vista
+        WindowInfo wi = wis.getWindowInfo(p);
+
+        // Se comprueban las incompatibilidades que pudieran haber en la vista
+        MDIUtilities.checkWindowInfo(wi);
+        if ((p instanceof SingletonWindow) && (wi.isModal())) {
+            throw new RuntimeException("A modal view cannot be a SingletonView");
+        }
+
+        /*
+         * Se obtiene la referencia a la vista anterior por si es una singleton
+         * y está siendo mostrada. Se obtiene su información si ya fue mostrada
+         */
+        boolean singletonPreviouslyAdded = false;
+
+        if (p instanceof SingletonWindow) {
+            SingletonWindow sw = (SingletonWindow) p;
+            if (sws.registerWindow(sw.getClass(), sw.getWindowModel(), wi)) {
+                singletonPreviouslyAdded = true;
+            }
+        }
+
+        if (singletonPreviouslyAdded) {
+            // Si la vista no está actualmente abierta
+            if (!sws.contains((SingletonWindow) p)) {
+            	JDialog frame = (JDialog)fws.getFrame(p);
+                sws.openSingletonWindow((SingletonWindow) p,frame);
+
+                addFrame(frame, wi);
+                wss.add(p, new ActionListener() {
+                    public void actionPerformed(ActionEvent e) {
+                        IWindow v = wis.getWindowById(Integer.parseInt(e
+                                .getActionCommand()));
+                        JDialog frame = (JDialog)fws.getFrame(v);
+                        activateFrame(frame);
+                    }
+                });
+                return p;
+            } else {
+                // La vista está actualmente abierta
+                JDialog frame = (JDialog) sws.getFrame((SingletonWindow) p);
+                activateFrame(frame);
+                wss.setActive(p);
+                return fws.getWindow(frame);
+            }
+        } else {
+            if (wi.isModal()) {
+                addJDialog(p);
+            } else {
+                // Se sitúa la vista en la pila de vistas
+                wss.add(p, new ActionListener() {
+                    public void actionPerformed(ActionEvent e) {
+                        IWindow v = wis.getWindowById(Integer.parseInt(e
+                                .getActionCommand()));
+                        JDialog f = (JDialog) fws.getFrame(v);
+                        activateFrame(f);
+                    }
+                });
+                addFrame(p);
+            }
+
+            return p;
+        }
+    }
+
+    /**
+     * Situa una ventana en el centro de la pantalla
+     *
+     * @param d
+     *            Diálogo que se quiere situar
+     */
+    private void centerWindow(IWindow win) {
+    	JDialog dialog = (JDialog) fws.getFrame(win);
+
+        int offSetX = dialog.getWidth() / 2;
+        int offSetY = dialog.getHeight() / 2;
+
+        dialog.setLocation((mainFrame.getWidth() / 2) - offSetX,
+        		(mainFrame.getHeight() / 2) - offSetY);
+    }
+
+    /**
+     * Similar method as 'addView' but in this case centres the new JInternalFrame of the View in the contentPane of the MainFrame
+     *
+     * @see com.iver.core.mdiManager.NewSkin#addWindow(com.iver.andami.ui.mdiManager.IWindow)
+     *
+     * @author Pablo Piqueras Bartolomé
+     */
+	public IWindow addCentredWindow(IWindow p) throws SingletonDialogAlreadyShownException {
+		IWindow window = addWindow(p);
+		centerWindow(window);
+		return window;
+	}
+
+	/**
+	 * Centres the JInternalFrame in the center of the contentPane of the MainFrame
+	 * If it can't be showed completely the JInternalFrame, tries that the top-left corner of the JInternalFrame would be showed
+	 *
+	 * @author Pablo Piqueras Bartolomé
+	 *
+	 * @param jInternalFrame A reference to the frame to centring
+	 */
+	private static synchronized void centreJFrame(JFrame frame) {
+
+		// The top-left square of frame reference
+		Point newReferencePoint = new Point();
+
+		// A reference to the panel where the JInternalFrame will be displayed
+		Container contentPane = ((JFrame)PluginServices.getMainFrame()).getContentPane();
+
+		// Get the NewStatusBar component
+		NewStatusBar newStatusBar = ((NewStatusBar)contentPane.getComponent(1));
+		JDesktopPane jDesktopPane = ((JDesktopPane)contentPane.getComponent(2));
+
+		int visibleWidth = contentPane.getWidth() - contentPane.getX(); // The last substraction is for if there is any menu,... at left
+		int visibleHeight = contentPane.getHeight() - newStatusBar.getHeight() - contentPane.getY() - Math.abs(jDesktopPane.getY() - contentPane.getY()); // The last substraction is for if there is any menu,... at top
+		int freeWidth = visibleWidth - frame.getWidth();
+		int freeHeight = visibleHeight - frame.getHeight();
+
+		// Calculate the new point reference (Assure that the top-left corner is showed)
+		if (freeWidth < 0)
+		{
+			if (visibleWidth > MinimumXMargin)
+				newReferencePoint.x = DefaultXMargin;
+			else
+				newReferencePoint.x = 0;
+		}
+		else
+			newReferencePoint.x = freeWidth / 2;
+
+		if (freeHeight < 0)
+		{
+			if (visibleHeight > MinimumYMargin)
+				newReferencePoint.y = DefaultYMargin;
+			else
+				newReferencePoint.y = 0;
+		}
+		else
+			newReferencePoint.y = freeHeight / 2;
+
+		// Set the new location for this JInternalFrame
+		frame.setLocation(newReferencePoint);
+	}
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param wnd
+     *            DOCUMENT ME!
+     * @param wi
+     *            DOCUMENT ME!
+     */
+    private void addFrame(JDialog wnd, WindowInfo wi) {
+    	wnd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+        FrameListener listener = new FrameListener();
+        wnd.addWindowListener(listener);
+        wnd.addWindowStateListener(listener);
+        wnd.addWindowFocusListener(listener);
+
+        if (wi.isModeless() || wi.isPalette()) {
+          //  panel.add(wnd, JDesktopPane.PALETTE_LAYER);
+            if (wi.isPalette())
+                wnd.setFocusable(false);
+        } else {
+        //    panel.add(wnd);
+        }
+        updateFrameProperties(wnd, wi);
+
+
+        activateFrame(wnd);
+        /*
+    	if (wi.isMaximized()) {
+    		wnd.setExtendedState(JFrame.MAXIMIZED_BOTH);
+    	}
+    	else {
+        	int state = wnd.getExtendedState();
+        	state = (state & (~JFrame.MAXIMIZED_BOTH));
+        	wnd.setExtendedState(state);
+    	}*/
+    }
+
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param wnd
+     *            DOCUMENT ME!
+     * @param wi
+     *            DOCUMENT ME!
+     */
+   /* private void addJInternalFrame(JInternalFrame wnd, WindowInfo wi) {
+        wnd.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
+        wnd.add
+        wnd.addInternalFrameListener(new FrameListener());
+
+        if (wi.isModeless() || wi.isPalette()) {
+            panel.add(wnd, JDesktopPane.PALETTE_LAYER);
+            if (wi.isPalette())
+                wnd.setFocusable(false);
+        } else {
+            panel.add(wnd);
+        }
+      //  updateFrameProperties(wnd, wi);
+
+        activateJInternalFrame(wnd);
+        try{
+        	wnd.setMaximum(wi.isMaximized());
+        }catch(Exception ex){
+        	logger.warn("Error: ", ex);
+        }
+    }*/
+
+    private void updateFrameProperties(JDialog frame, WindowInfo wi) {
+    	int height, width;
+    	if (wi.isMaximized()) {
+    		if (wi.getNormalWidth()!=-1)
+    			width = wi.getNormalWidth();
+    		else
+    			width = frame.getWidth();
+    		if (wi.getNormalHeight()!=-1)
+    			height = wi.getNormalHeight();
+    		else
+    			height = frame.getHeight();
+
+    		frame.setSize(width, height);
+    		frame.setLocation(wi.getNormalX(), wi.getNormalY());
+    	}
+    	else {
+    		if (wi.getWidth()!=-1)
+    			width = wi.getWidth();
+    		else
+    			width = frame.getWidth();
+    		if (wi.getHeight()!=-1)
+    			height = wi.getHeight();
+    		else
+    			height = frame.getHeight();
+    		frame.setSize(width, height);
+        	frame.setLocation(wi.getX(), wi.getY());
+    	}
+    	frame.setTitle(wi.getTitle());
+    	frame.setVisible(wi.isVisible());
+    	frame.setResizable(wi.isResizable());
+    	/*if (wi.isMaximized()) {
+    		frame.set
+    		frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
+    	}
+    	else {
+        	int state = frame.getExtendedState();
+        	state = (state & (~JFrame.MAXIMIZED_BOTH));
+        	frame.setExtendedState(state);
+    	}*/
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     */
+ /*   private void addJInternalFrame(IWindow p) {
+        WindowInfo wi = wis.getWindowInfo(p);
+
+        JInternalFrame wnd = fws.getJInternalFrame(p);
+
+        if (p instanceof SingletonWindow) {
+            SingletonWindow sv = (SingletonWindow) p;
+            sws.openSingletonWindow(sv, wnd);
+        }
+
+        addJInternalFrame(wnd, wi);
+    }*/
+
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     */
+ /*   private void addJFrame(IWindow p) {
+        WindowInfo wi = wis.getWindowInfo(p);
+
+        JFrame wnd = fws.getFrame(p);
+
+        if (p instanceof SingletonWindow) {
+            SingletonWindow sv = (SingletonWindow) p;
+            sws.openSingletonWindow(sv, wnd);
+        }
+
+        addJFrame(wnd, wi);
+    }*/
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param wnd
+     */
+    private void activateJInternalFrame(JInternalFrame wnd) {
+        try {
+            wnd.moveToFront();
+//            logger.debug("Activando " + wnd.getTitle());
+            wnd.setSelected(true);
+            wnd.setIcon(false);
+        } catch (PropertyVetoException e) {
+//            logger.error(e);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param wnd
+     */
+    private void activateFrame(JDialog wnd) {
+    	wnd.setVisible(true);
+    	wnd.toFront();
+
+    	/*int state = wnd.getExtendedState();
+    	state = (state & (~JFrame.ICONIFIED));
+    	wnd.setExtendedState(state);*/
+    }
+
+    /**
+     * Situa un diálogo modal en el centro de la pantalla
+     *
+     * @param d
+     *            Diálogo que se quiere situar
+     */
+    private void centerDialog(JDialog d) {
+        int offSetX = d.getWidth() / 2;
+        int offSetY = d.getHeight() / 2;
+
+        d.setLocation((mainFrame.getWidth() / 2) - offSetX, (mainFrame
+                .getHeight() / 2)
+                - offSetY);
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     */
+    private void addJDialog(IWindow p) {
+        JDialog dlg = fws.getJDialog(p);
+
+        centerDialog(dlg);
+
+        dlg.addWindowListener(new DialogWindowListener());
+        dss.pushDialog(dlg);
+
+        dlg.setVisible(wis.getWindowInfo(p).isVisible());
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param p
+     */
+    private void addFrame(IWindow p) {
+        WindowInfo wi = wis.getWindowInfo(p);
+
+        JDialog wnd = (JDialog) fws.getFrame(p);
+        if (wnd==null)
+        	wnd=new JDialog();
+        if (p instanceof SingletonWindow) {
+            SingletonWindow sv = (SingletonWindow) p;
+            sws.openSingletonWindow(sv, wnd);
+        }
+
+        addFrame(wnd, wi);
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#getActiveWindow()
+     */
+    public IWindow getActiveWindow() {
+    	return wss.getActiveWindow();
+        /*JFrame frame = panel.getSelectedFrame();
+
+        if (frame != null) {
+            IWindow theWindow = fws.getWindow(frame);
+            if (theWindow == null)
+                return null;
+            if (theWindow.getWindowInfo().isPalette())
+                return wss.getActiveWindow();
+            else
+                return fws.getWindow(frame);
+        }
+        // return vss.getActiveView();
+
+        return null;*/
+    }
+    public IWindow getFocusWindow(){
+    	return wss.getActiveWindow();
+    	/*fws.getFocusWindow()
+    	JFrame.get
+    	JFrame frame = panel.getSelectedFrame();
+
+         if (frame != null) {
+             IWindow theView = fws.getWindow(frame);
+             if (theView == null)
+                 return null;
+             return fws.getWindow(frame);
+         }
+         return null;*/
+    }
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#closeWindow(com.iver.andami.ui.mdiManager.IWindow)
+     */
+    public void closeWindow(IWindow p) {
+		// Si es un diálogo modal
+		if (p.getWindowInfo().isModal()) {
+			closeJDialog();
+		} else { // Si no es modal se cierra el JInternalFrame
+			closeJFrame((JDialog) fws.getFrame(p));
+		}
+	}
+
+    /**
+	 * @see com.iver.andami.ui.mdiManager.MDIManager#closeAllWindows()
+	 */
+    public void closeAllWindows() {
+        ArrayList eliminar = new ArrayList();
+        Iterator i = fws.getWindowIterator();
+
+        while (i.hasNext()) {
+            eliminar.add((IWindow) i.next());
+        }
+
+        for (Iterator iter = eliminar.iterator(); iter.hasNext();) {
+            IWindow vista = (IWindow) iter.next();
+            closeWindow(vista);
+        }
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#getWindowInfo(com.iver.andami.ui.mdiManager.IWindow)
+     */
+    public WindowInfo getWindowInfo(IWindow w) {
+    	WindowInfo wi = wis.getWindowInfo(w);
+
+    /*
+     * This is done now in vis.getWindowInfo(w)
+     *
+     * JInternalFrame f = fws.getJInternalFrame(w);
+    	wi.setX(f.getX());
+    	wi.setY(f.getY());
+    	wi.setHeight(f.getHeight());
+    	wi.setWidth(f.getWidth());
+    	// isClosed() doesn't work as (I) expected, why? Using isShowing instead
+    	wi.setClosed(!f.isShowing());
+    	wi.setNormalBounds(f.getNormalBounds());
+    	wi.setMaximized(f.isMaximum());*/
+    	return wi;
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param dialog
+     * @throws RuntimeException
+     *             DOCUMENT ME!
+     */
+    private void closeJDialog() {
+        JDialog dlg = dss.popDialog();
+
+        dlg.setVisible(false);
+
+        IWindow s = (IWindow) fws.getWindow(dlg);
+
+        callWindowClosed(s);
+
+        fws.closeWindow(s);
+
+        // Si es singleton se desasocia el modelo con la vista
+        if (s instanceof SingletonWindow) {
+            sws.closeWindow((SingletonWindow) s);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param window
+     *            DOCUMENT ME!
+     */
+    private void callWindowClosed(IWindow window) {
+        if (window instanceof IWindowListener) {
+            ((IWindowListener) window).windowClosed();
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param window
+     *            DOCUMENT ME!
+     */
+    private void callWindowActivated(IWindow window) {
+//        logger.debug("View " + window.getWindowInfo().getTitle()
+//                + " activated (callViewActivated)");
+        if (window instanceof IWindowListener) {
+            ((IWindowListener) window).windowActivated();
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param frame
+     */
+    private void closeJInternalFrame(JInternalFrame frame) {
+        try {
+            IWindow s = (IWindow) fws.getWindow(frame);
+
+            frame.setClosed(true);
+            callWindowClosed(s);
+        } catch (PropertyVetoException e) {
+//            logger
+//                    .error(
+//                            "Not compatible with property veto's. Use ViewInfo instead.",
+//                            e);
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     *
+     * @param frame
+     */
+    private void closeJFrame(JDialog frame) {
+    	WindowListener[] listeners = frame.getWindowListeners();
+    	for (int i=0; i<listeners.length; i++) {
+    		listeners[i].windowClosing(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING	));
+    	}
+    	IWindow s = (IWindow) fws.getWindow(frame);
+    	frame.dispose();
+    	callWindowClosed(s);
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#initialize()
+     */
+    public void initialize() {
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
+     */
+    public void execute(String actionCommand) {
+        if (actionCommand.equals("cascada")) {
+        } else if (actionCommand.equals("mosaico")) {
+        }
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#isEnabled()
+     */
+    public boolean isEnabled() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    /**
+     * @see com.iver.andami.plugins.IExtension#isVisible()
+     */
+    public boolean isVisible() {
+        // TODO Auto-generated method stub
+        return true;
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#setWaitCursor()
+     */
+    public void setWaitCursor() {
+        if (mainFrame != null) {
+            glassPane.setVisible(true);
+            lastCursor = mainFrame.getCursor();
+            dss.setWaitCursor();
+            glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+        }
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#restoreCursor()
+     */
+    public void restoreCursor() {
+        if (mainFrame != null) {
+            glassPane.setVisible(false);
+            dss.restoreCursor();
+            glassPane.setCursor(lastCursor);
+        }
+    }
+
+    /**
+     * Listener para los eventos de cerrado de los diálogos. Tiene su razón de
+     * ser en que los diálogos han de devolverse al pool cuando se cierran
+     *
+     * @author Fernando González Cortés
+     */
+    public class DialogWindowListener extends WindowAdapter {
+        /**
+         * Captura el evento de cerrado de los diálogos con el fin de realizar
+         * tareas de mantenimiento
+         *
+         * @param e
+         *            evento
+         */
+        public void windowClosing(WindowEvent e) {
+            closeJDialog();
+        }
+    }
+
+    /**
+     * DOCUMENT ME!
+     */
+    public class FrameListener extends WindowAdapter {
+        /**
+         * @see java.awt.event.WindowAdapter#windowActivated(java.awt.event.WindowEvent)
+         */
+        public void windowActivated(WindowEvent e) {
+        	JDialog frame = (JDialog) e.getSource();
+            IWindow panel = fws.getWindow(frame);
+
+            if (panel!=null) {
+
+            	WindowInfo wi = wis.getWindowInfo(panel);
+            	if (wi.isPalette())
+            		return;
+
+            	wss.setActive(panel);
+
+//            	if (lastActiveWindow!=null && !lastActiveWindow.equals(panel)) {
+//            		wis.getWindowInfo(lastActiveWindow).setSelectedTools(mainFrame.getSelectedTools());
+//            		mainFrame.setSelectedTools(wi.getSelectedTools());
+//            	}
+            	if (wi.getSelectedTools()==null) {
+                	// this is the first time this window is activated
+                	wi.setSelectedTools(new HashMap(mainFrame.getInitialSelectedTools()));
+                }
+            	if (lastActiveWindow!=null && !lastActiveWindow.equals(panel)) {
+            		wis.getWindowInfo(lastActiveWindow).setSelectedTools(mainFrame.getSelectedTools());
+            		mainFrame.setSelectedTools(wi.getSelectedTools());
+            	}
+            	mainFrame.enableControls();
+            	callWindowActivated(panel);
+            }
+
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowClosed(java.awt.event.WindowEvent)
+         */
+        public void windowClosed(WindowEvent e) {
+        }
+
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent)
+         */
+        public void windowClosing(WindowEvent e) {
+            // Se elimina la memoria del JInternalFrame si no es ALWAYS_LIVE
+            // logger.debug("internalFrameClosing " +
+            // e.getInternalFrame().getTitle());
+
+        	JDialog	 c = (JDialog) e.getSource();
+        	IWindow win = (IWindow) fws.getWindow(c);
+        	if (win!=null) {
+
+	            WindowInfo wi = wis.getWindowInfo(win);
+
+	            callWindowClosed(win);
+	            boolean alwaysLive;
+	            if (win instanceof SingletonWindow) {
+	                sws.closeWindow((SingletonWindow) win);
+	            }
+
+	            fws.closeWindow(win);
+
+	            panel.remove(c);
+
+	            wss.remove(win);
+
+	            if (!wi.isPalette())
+	                mainFrame.enableControls();
+	            panel.repaint();
+        	}
+
+            // Para activar el JInternalFrame desde la que hemos
+            // abierto la ventana que estamos cerrando
+            IWindow lastWindow = wss.getActiveWindow();
+            // La activamos
+            if (lastWindow != null) {
+//            	logger.debug(PluginServices.getText(this, "Devuelvo_el_foco_a_")+lastWindow.getWindowInfo().getTitle());
+                JDialog frame = (JDialog) fws.getFrame(lastWindow);
+                frame.toFront();
+            }
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowDeactivated(java.awt.event.WindowEvent)
+         */
+        public void windowDeactivated(WindowEvent e) {
+        	JDialog frame = (JDialog) e.getSource();
+            IWindow win = fws.getWindow(frame);
+            if (win != null) {
+                WindowInfo wi = wis.getWindowInfo(win);
+                if (wi.isPalette())
+                    return;
+                wi.setSelectedTools(mainFrame.getSelectedTools());
+                lastActiveWindow = win;
+            }
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowDeiconified(java.awt.event.WindowEvent)
+         */
+        public void windowDeiconified(WindowEvent e) {
+            mainFrame.enableControls();
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowGainedFocus(java.awt.event.WindowEvent)
+         */
+        public void windowGainedFocus(WindowEvent e) {
+
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowIconified(java.awt.event.WindowEvent)
+         */
+        public void windowIconified(WindowEvent e) {
+            mainFrame.enableControls();
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowLostFocus(java.awt.event.WindowEvent)n
+         */
+        public void windowLostFocus(WindowEvent e) {
+
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowOpened(java.awt.event.WindowEvent)
+         */
+        public void windowOpened(WindowEvent e) {
+        }
+
+        /**
+         * @see java.awt.event.WindowAdapter#windowStateChanged(java.awt.event.WindowEvent)
+         */
+        public void windowStateChanged(WindowEvent e) {
+
+        }
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#closeSingletonWindow(java.lang.Class,
+     *      java.lang.Object)
+     */
+    public boolean closeSingletonWindow(Class viewClass, Object model) {
+        JDialog frame = (JDialog)sws.getFrame(viewClass, model);
+        if (frame == null)
+            return false;
+        closeJFrame(frame);
+        return true;
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#closeSingletonWindow(java.lang.Object)
+     */
+    public boolean closeSingletonWindow(Object model) {
+        JDialog[] frames = (JDialog[])sws.getFrames(model);
+        if (frames.length == 0)
+            return false;
+        for (int i = 0; i < frames.length; i++) {
+            closeJFrame(frames[i]);
+        }
+        return true;
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#getAllWindows()
+     */
+    public IWindow[] getAllWindows() {
+        ArrayList windows = new ArrayList();
+        Iterator i = fws.getWindowIterator();
+
+        while (i.hasNext()) {
+            windows.add((IWindow) i.next());
+        }
+        return (IWindow[]) windows.toArray(new IWindow[0]);
+    }
+
+    /**
+     * @see com.iver.andami.ui.mdiManager.MDIManager#getOrderedWindows()
+     */
+    public IWindow[] getOrderedWindows() {
+        //ArrayList windows = new ArrayList();
+        TreeMap windows = new TreeMap();
+        Iterator winIterator = fws.getWindowIterator();
+
+        Component frame;
+        IWindow win;
+        /**
+         * The order of the window in the JDesktopPane. Smaller numbers
+         * are closer to the foreground.
+         */
+        int zPosition = 0;
+        while (winIterator.hasNext()) {
+        	win = (IWindow) winIterator.next();
+        	// unfortunately we can't use this now, and I don't know how to retrieve the zPosition for JDialogs
+        	//frame = fws.getComponent(win);
+    		//zPosition = panel.getPosition(frame);
+    		windows.put(new Integer(zPosition++), win);
+        }
+        winIterator = windows.values().iterator();
+        ArrayList winList = new ArrayList();
+        while (winIterator.hasNext()) {
+        	winList.add(winIterator.next());
+        }
+
+        return (IWindow[]) winList.toArray(new IWindow[0]);
+    }
+
+    public void setMaximum(IWindow v, boolean bMaximum) throws PropertyVetoException
+    {
+        /*JDialog frame = fws.getFrame(v);
+
+    	if (bMaximum) {
+
+	        frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
+    	}
+    	else {
+    		int state = frame.getExtendedState();
+    		state = (state & (~JFrame.MAXIMIZED_BOTH));
+    		frame.setExtendedState(state);
+    	}*/
+    }
+
+    public void changeWindowInfo(IWindow w, WindowInfo wi){
+    	JDialog frame = fws.getJDialog(w);
+		frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+		int width;
+		int height;
+		if (wi.getWidth()!=-1)
+			width = wi.getWidth();
+		else
+			width = frame.getWidth();
+		if (wi.getHeight()!=-1)
+			height = wi.getHeight();
+		else
+			height = frame.getHeight();
+		frame.setSize(new Dimension(width, height));
+		frame.setLocation(wi.getX(), wi.getY());
+		if (wi.isPalette()) {
+			//panel.add(frame, JDesktopPane.PALETTE_LAYER);
+			frame.setFocusable(false);
+		} else {
+			//panel.add(frame, JDesktopPane.DEFAULT_LAYER);
+			frame.setFocusable(true);
+			if (wi.isClosed()) {
+				closeWindow(w);
+			}
+		}
+
+		if (wi.isMaximized()) {
+			frame.setBounds(wi.getNormalBounds());
+		//	frame.setExtendedState(frame.getExtendedState()|JFrame.MAXIMIZED_BOTH);
+		}
+		activateFrame(frame);
+   }
+
+    public void refresh(IWindow win) {
+    	Component frame = fws.getFrame(win);
+    	if (frame!=null)
+    		frame.setVisible(true);
+    }
+
+	public void setBackgroundImage(ImageIcon image, String typeDesktop) {
+		this.image=image;
+		this.typeDesktop=typeDesktop;
+
+	}
+	class MyDesktopPane extends JDesktopPane
+    {
+      public MyDesktopPane(){
+      }
+      public void paintComponent(Graphics g){
+        super.paintComponent(g);
+        int x=0;
+        int y=0;
+        int w=0;
+        int h=0;
+        if (image != null) {
+			if (typeDesktop.equals(Theme.CENTERED)) {
+				w = image.getIconWidth();
+				h = image.getIconHeight();
+				x = (getWidth() - w) / 2;
+				y = (getHeight() - h) / 2;
+				g.drawImage(image.getImage(), x, y, w, h, this);
+			} else if (typeDesktop.equals(Theme.EXPAND)) {
+				w = getWidth();
+				h = getHeight();
+				g.drawImage(image.getImage(), x, y, w, h, this);
+			} else if (typeDesktop.equals(Theme.MOSAIC)) {
+				int wAux = image.getIconWidth();
+				int hAux = image.getIconHeight();
+				int i = 0;
+				int j = 0;
+				w = wAux;
+				h = hAux;
+				while (x < getWidth()) {
+					x = wAux * i;
+					while (y < getHeight()) {
+						y = hAux * j;
+						j++;
+						g.drawImage(image.getImage(), x, y, w, h, this);
+					}
+					y = 0;
+					j = 0;
+					i++;
+				}
+			}
+		}
+      }
+    }
+
+
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSingletonWindowSupport.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSingletonWindowSupport.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogSingletonWindowSupport.java	(revision 29090)
@@ -0,0 +1,349 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.awt.Window;
+import java.util.ArrayList;
+
+import javax.swing.JDialog;
+
+import com.iver.andami.ui.mdiManager.SingletonDialogAlreadyShownException;
+import com.iver.andami.ui.mdiManager.SingletonWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.core.mdiManager.SingletonWindowSupport;
+
+
+/**
+ * DOCUMENT ME!
+ *
+ * @author $author$
+ * @version $Revision: 1.1 $
+ */
+public class JDialogSingletonWindowSupport extends SingletonWindowSupport {
+
+
+	private static int singletonViewInfoID = 0;
+	/** Hashtable que asocia contenido con vistas */
+	private HashMap contentWindowInfo = new HashMap();
+	private JDialogWindowInfoSupport vis;
+	private JDialogFrameWindowSupport frameWindowSupport;
+	private HashMap contentFrame = new HashMap();
+
+	public JDialogSingletonWindowSupport(JDialogWindowInfoSupport wis,
+			JDialogFrameWindowSupport fvs) {
+		super(wis,fvs);
+		this.vis = wis;
+		this.frameWindowSupport = (JDialogFrameWindowSupport) fvs;
+	}
+
+	
+
+	/**
+	 * Devuelve una referencia a la vista si ya está mostrada o null si la
+	 * vista no ha sido añadida o ya fue cerrada
+	 *
+	 * @param windowClass DOCUMENT ME!
+	 * @param model DOCUMENT ME!
+	 * @param wi DOCUMENT ME!
+	 *
+	 * @return true si la vista existe ya y false si la vista no existe
+	 *
+	 * @throws SingletonDialogAlreadyShownException DOCUMENT ME!
+	 */
+	public boolean registerWindow(Class windowClass, Object model, WindowInfo wi) {
+		//Se comprueba si la ventana está siendo mostrada
+		SingletonWindowInfo swi = new SingletonWindowInfo(windowClass, model);
+
+		if (contentWindowInfo.containsKey(swi)) {
+			if (wi.isModal()) {
+				throw new SingletonDialogAlreadyShownException();
+			}
+
+			wi.setWindowInfo((WindowInfo)contentWindowInfo.get(swi));
+
+			return true;
+		} else {
+			//La ventana singleton no estaba mostrada
+			//Se asocia el modelo con la vista
+			contentWindowInfo.put(swi, wi);
+			return false;
+		}
+	}
+
+	public void openSingletonWindow(SingletonWindow sw, Window frame){
+		SingletonWindowInfo swi = new SingletonWindowInfo(sw.getClass(), sw.getWindowModel());
+		contentFrame.put(swi, frame);
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param sw
+	 */
+	public void closeWindow(SingletonWindow sw) {
+		SingletonWindowInfo swi = new SingletonWindowInfo(sw.getClass(), sw.getWindowModel());
+		WindowInfo windowInfo = (WindowInfo) contentWindowInfo.get(swi);
+		if (windowInfo!=null) {
+			JDialog frame = (JDialog) contentFrame.get(swi);
+			windowInfo.setWidth(frame.getWidth());
+			windowInfo.setHeight(frame.getHeight());
+			windowInfo.setX(frame.getX());
+			windowInfo.setY(frame.getY());
+			windowInfo.setClosed(true);
+		/*	if ((frame.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH) {
+				windowInfo.setMaximized(true);
+			}
+			else {
+				windowInfo.setMaximized(false);
+				windowInfo.setNormalBounds(frame.getBounds());
+			}*/
+		}
+		contentFrame.remove(swi);
+	}
+
+	/**
+	 * Representa una vista singleton manteniendo el modelo y la clase de la
+	 * vista que lo muestra
+	 *
+	 * @author Fernando González Cortés
+	 */
+	public class SingletonWindowInfo {
+
+		public int id;
+
+		/** Clase de la vista */
+		public Class clase;
+
+		/** Modelo que representa la vista */
+		public Object modelo;
+
+		/**
+		 * Creates a new SingletonView object.
+		 *
+		 * @param clase Clase de la vista
+		 * @param modelo Modelo que representa la vista
+		 */
+		public SingletonWindowInfo(Class clase, Object modelo) {
+			this.clase = clase;
+			this.modelo = modelo;
+			this.id = singletonViewInfoID;
+			singletonViewInfoID++;
+		}
+
+		/**
+		 * @see java.lang.Object#equals(java.lang.Object)
+		 */
+		public boolean equals(Object obj) {
+			if (obj.getClass() != SingletonWindowInfo.class) {
+				throw new IllegalArgumentException();
+			}
+
+			SingletonWindowInfo s = (SingletonWindowInfo) obj;
+
+			if ((clase == s.clase) && (modelo == s.modelo)) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+	}
+
+	private JDialog getFrame(SingletonWindowInfo svi){
+		WindowInfo vi = (WindowInfo) contentWindowInfo.get(svi);
+		return (JDialog) contentFrame.get(svi);
+	}
+
+	public JDialog getFrame(Class viewClass, Object model){
+		SingletonWindowInfo svi = new SingletonWindowInfo(viewClass, model);
+		return getFrame(svi);
+	}
+
+	/**
+	 * @param model
+	 * @return
+	 */
+	public JDialog[] getFrames(Object model) {
+		ArrayList ret = new ArrayList();
+
+		ArrayList keys = contentFrame.getKeys();
+		for (int i = 0; i < keys.size(); i++) {
+			SingletonWindowInfo svi = (SingletonWindowInfo) keys.get(i);
+
+			if (svi.modelo == model){
+				ret.add(contentFrame.get(svi));
+			}
+		}
+
+		return (JDialog[]) ret.toArray(new JDialog[0]);
+	}
+	
+	/**
+	 * @param sv
+	 * @param i
+	 */
+	public void setX(SingletonWindow sw, int x) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+        if (frame == null) return;
+        frame.setLocation(x, frame.getY());
+	}
+	
+	
+	/**
+	 * @param sv
+	 * @param i
+	 */
+	public void setY(SingletonWindow sw, int y) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+        if (frame == null) return;
+
+        frame.setLocation(frame.getX(), y);
+	}
+
+	/**
+	 * @param sv
+	 * @param i
+	 */
+	public void setHeight(SingletonWindow sw, int height) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+        if (frame == null) return;
+
+        frame.setSize(frame.getWidth(), height);
+	}
+
+	/**
+	 * @param sv
+	 * @param i
+	 */
+	public void setWidth(SingletonWindow sw, int width) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+        if (frame == null) return;
+        frame.setSize(width, frame.getHeight());
+	}
+
+	/**
+	 * @param sw
+	 * @param maximized
+	 */
+	public void setMaximized(SingletonWindow sw, boolean maximized) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+     /*   if (frame == null) return;
+     
+        if (maximized) {
+        	frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
+        }
+        else {
+        	frame.setExtendedState(JFrame.NORMAL);
+        } */
+	}
+
+
+	/**
+	 * @param sv
+	 * @param string
+	 */
+	public void setTitle(SingletonWindow sw, String title) {
+		JDialog frame = (JDialog) contentFrame.get(new SingletonWindowInfo(sw.getClass(), sw.getWindowModel()));
+
+        if (frame == null) return;
+        frame.setTitle(title);
+	}
+
+	private class HashMap {
+	    private ArrayList keys = new ArrayList();
+	    private ArrayList values = new ArrayList();
+
+	    public void put(SingletonWindowInfo key, Object value) {
+	        int index = -1;
+	        for (int i = 0; i < keys.size(); i++) {
+	            if (keys.get(i).equals(key)){
+	                index = i;
+	                break;
+	            }
+            }
+
+	        if (index != -1){
+	            keys.add(index, key);
+	            values.add(index, value);
+	        }else{
+	            keys.add(key);
+	            values.add(value);
+	        }
+	    }
+
+	    public boolean containsKey(SingletonWindowInfo key){
+	        for (int i = 0; i < keys.size(); i++) {
+	            if (keys.get(i).equals(key)){
+	                return true;
+	            }
+	        }
+
+	        return false;
+	    }
+
+	    public Object get(SingletonWindowInfo key){
+	        for (int i = 0; i < keys.size(); i++) {
+	            if (keys.get(i).equals(key)){
+	                return values.get(i);
+	            }
+	        }
+
+	        return null;
+	    }
+
+	    public void remove(SingletonWindowInfo key){
+	        for (int i = 0; i < keys.size(); i++) {
+	            if (keys.get(i).equals(key)){
+	                keys.remove(i);
+	                values.remove(i);
+	            }
+	        }
+	    }
+
+	    public ArrayList getKeys(){
+	        return keys;
+	    }
+	}
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowStackSupport.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowStackSupport.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogWindowStackSupport.java	(revision 29090)
@@ -0,0 +1,153 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.awt.event.ActionListener;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import com.iver.andami.PluginServices;
+import com.iver.andami.plugins.config.generate.Menu;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.core.mdiManager.WindowStackSupport;
+
+/**
+ * 
+ */
+public class JDialogWindowStackSupport extends WindowStackSupport {
+	private Vector vistas = new Vector();
+	
+	private JDialogWindowInfoSupport vis;
+	
+	private Hashtable viewMenu = new Hashtable();
+	
+	/**
+	 * @param vis
+	 */
+	public JDialogWindowStackSupport(JDialogWindowInfoSupport vis) {
+		super(vis);
+		this.vis = vis;
+	}
+
+	public void add(IWindow v, final ActionListener listener) {
+		vistas.add(v);
+		WindowInfo vi = vis.getWindowInfo(v);
+		int id = vi.getId();
+		Menu m = new Menu();
+		m.setActionCommand(""+id);
+		m.setTooltip(PluginServices.getText(this, "activa_la_ventana"));
+		m.setText("ventana/"+vi.getTitle());
+		viewMenu.put(v, m);
+		PluginServices.getMainFrame().addMenu(m, listener, PluginServices.getPluginServices(this).getClassLoader() );
+	}
+	
+	public void remove(IWindow v){
+		Menu m = (Menu) viewMenu.get(v);
+		if (m == null) return;
+		PluginServices.getMainFrame().removeMenu(m);
+		viewMenu.remove(v);
+		vistas.remove(v);
+	}
+	
+	/**
+	 * FJP: No se usa, y no sé para qué estaba pensado. 
+	 */
+	public void ctrltab(){
+		IWindow v = (IWindow) vistas.remove(vistas.size() - 1);
+		vistas.add(0, v);
+	}
+	
+	public IWindow getActiveWindow(){
+		if (vistas.size() == 0) return null;
+        int index = vistas.size()-1;
+        while (index >= 0)
+        {
+            IWindow aux = (IWindow) vistas.get(index);
+            if (!aux.getWindowInfo().isPalette())
+            {
+//                System.err.println("getActiveView = " + aux.getWindowInfo().getTitle());
+                return aux;
+            }
+            index--;
+        }
+        return null;
+	}
+    /**
+     * Se utiliza cuando ya está abierta la vista para indicar
+     * que la pasamos a activa. De esta forma evitamos que el
+     * getActiveView devuelva algo que no es. 
+     * En realidad lo que haces es mover la vista a la última
+     * posición.
+     * @param v
+     */
+    public void setActive(IWindow v)
+    {
+        IWindow copia = null;
+        boolean bCopiar = false;
+        // Si es de tipo palette, no se pone como activa.
+        // De esta forma, nunca nos la devolverá.... Bueno, 
+        // igual si cerramos la de encima. Voy a ponerle en
+        // getActiveView que si es de tipo Palette, devuelva la
+        // de abajo.
+        if (v.getWindowInfo().isPalette()) return;
+        
+        for (int i=0; i < vistas.size(); i++)
+        {
+            IWindow aux = (IWindow) vistas.get(i);
+            if (aux == v)
+            {
+                copia = aux;
+                bCopiar = true;
+            }
+            if (bCopiar)
+            {
+                if (i < vistas.size()-1)
+                {
+                    IWindow siguiente = (IWindow) vistas.get(i+1);
+                    vistas.set(i,siguiente);
+                }
+                else // La última
+                    vistas.set(i,copia);
+            }
+        } // for
+    }
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogFrameWindowSupport.java
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogFrameWindowSupport.java	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/src/org/gvsig/gvsig3dgui/skin/JDialogFrameWindowSupport.java	(revision 29090)
@@ -0,0 +1,343 @@
+/* gvSIG. Sistema de Información Geográfica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ibáñez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gvsig3dgui.skin;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Window;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import com.iver.andami.ui.mdiFrame.MDIFrame;
+import com.iver.andami.ui.mdiManager.IWindow;
+import com.iver.andami.ui.mdiManager.WindowInfo;
+import com.iver.core.mdiManager.FrameWindowSupport;
+import com.iver.core.mdiManager.WindowInfoSupport;
+
+/**
+ * 
+ */
+public class JDialogFrameWindowSupport extends FrameWindowSupport {
+
+	private Hashtable frameView = new Hashtable();
+	private Hashtable viewFrame = new Hashtable();
+	private Image icon;
+	private JDialogWindowInfoSupport vis;
+	private JFrame mainFrame;
+
+	public JDialogFrameWindowSupport(MDIFrame mainFrame) {
+		super(mainFrame);
+		this.mainFrame = mainFrame;
+		icon = mainFrame.getIconImage();
+	}
+
+	 public Iterator getWindowIterator(){
+	    	return viewFrame.keySet().iterator();
+	    }
+	    
+	    public boolean contains(IWindow v){
+	    	return viewFrame.containsKey(v);
+	    }
+
+		/**
+		 * @param wnd
+		 * @return
+		 */
+		public boolean contains(JDialog wnd) {
+			return frameView.contains(wnd);
+		}
+	    
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param p DOCUMENT ME!
+	     *
+	     * @return DOCUMENT ME!
+	     */
+	    public JDialog getJDialog(IWindow p) {
+	        JDialog dlg = (JDialog) viewFrame.get(p);
+
+	        if (dlg == null) {
+	            WindowInfo vi = vis.getWindowInfo(p);
+	            JDialog nuevo = new JDialog(mainFrame);
+
+	            nuevo.getContentPane().add((JPanel) p);
+	            nuevo.setSize(getWidth(p, vi), getHeight(p, vi) + 30);
+	            nuevo.setTitle(vi.getTitle());
+	            nuevo.setResizable(vi.isResizable());
+
+	            viewFrame.put(p, nuevo);
+	            frameView.put(nuevo, p);
+
+	            nuevo.setModal(vi.isModal());
+	            return nuevo;
+	        } else {
+	            return dlg;
+	        }
+	    }
+	    
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param p DOCUMENT ME!
+	     *
+	     * @return DOCUMENT ME!
+	     */
+	    public JDialog getFrame(IWindow p) {
+	    	JDialog frame = (JDialog) viewFrame.get(p);
+
+	        if (frame == null) {
+	        	JDialog nuevo = createFrame(p);
+	        	viewFrame.put(p, nuevo);
+	        	frameView.put(nuevo, p);
+	        	vis.getWindowInfo(p); // to update the windowInfo object
+	        	return nuevo;
+	        } else {
+	            return frame;
+	        }
+	    }
+	    
+	    public JDialog createFrame(IWindow p)
+	    {
+	        WindowInfo windowInfo = vis.getWindowInfo(p);
+	        JDialog frame = new JDialog(mainFrame, false);
+	        frame.getContentPane().add((JPanel) p);
+	        frame.setTitle(windowInfo.getTitle());
+	        frame.setBounds(calculateBounds(p, windowInfo));
+	        frame.setVisible(windowInfo.isVisible());
+	        frame.setResizable(windowInfo.isResizable());
+	        frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+	        return frame;
+	    }
+	    
+	    public IWindow getWindow(Component dlg){
+	    	return (IWindow) frameView.get(dlg);
+	    }
+	    
+	    public Component getComponent(IWindow window) {
+	    	return (Component) viewFrame.get(window);
+	    }
+	    
+	    public void closeWindow(IWindow v){
+	    	Object c = viewFrame.remove(v);
+	    	frameView.remove(c);
+	    }
+	    
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     * @param x DOCUMENT ME!
+	     */
+	    public void setX(IWindow w, int x) {
+	    	Window frame = (Window) viewFrame.get(w);
+	    	frame.setLocation(x, frame.getY());
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     * @param y DOCUMENT ME!
+	     */
+	    public void setY(IWindow w, int y) {
+	    	Window frame = (Window) viewFrame.get(w);
+	    	frame.setLocation(frame.getX(), y);
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     * @param height DOCUMENT ME!
+	     */
+	    public void setHeight(IWindow w, int height) {
+	    	Window frame = (Window) viewFrame.get(w);
+	    	frame.setSize(frame.getWidth(), height);
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     * @param width DOCUMENT ME!
+	     */
+	    public void setWidth(IWindow w, int width) {
+	    	Window frame = (Window) viewFrame.get(w);
+	    	frame.setSize(width, frame.getHeight());
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     * @param title DOCUMENT ME!
+	     */
+	    public void setTitle(IWindow w, String title) {
+	    	Window frame = (Window) viewFrame.get(w);
+	    	if (frame instanceof JFrame) {
+	    		((JFrame)frame).setTitle(title);
+	    	}
+	    	else if (frame instanceof JDialog) {
+	    		((JDialog)frame).setTitle(title);
+	    	}
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param vis The vis to set.
+	     */
+	    public void setVis(JDialogWindowInfoSupport vis) {
+	        this.vis = vis;
+	    }
+	    
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     *
+	     * @return DOCUMENT ME!
+	     */
+	    private int getWidth(IWindow v, WindowInfo wi) {
+	        if (wi.getWidth() == -1) {
+	            JPanel p = (JPanel) v;
+
+	            return p.getSize().width;
+	        } else {
+	            return wi.getWidth();
+	        }
+	    }
+
+	    /**
+	     * DOCUMENT ME!
+	     *
+	     * @param v DOCUMENT ME!
+	     *
+	     * @return DOCUMENT ME!
+	     */
+	    private int getHeight(IWindow v, WindowInfo wi) {
+	        if (wi.getHeight() == -1) {
+	            JPanel p = (JPanel) v;
+
+	            return p.getSize().height;
+	        } else {
+	            return wi.getHeight();
+	        }
+	    }
+
+	    private Rectangle calculateBounds(IWindow win, WindowInfo wi) {
+	    	Rectangle bounds = new Rectangle();
+	        if (wi.getWidth() == -1) {
+	            JPanel p = (JPanel) win;
+
+	            bounds.width = p.getSize().width;
+	        } else {
+	            bounds.width = wi.getWidth();
+	        }
+	        
+	        if (wi.getHeight() == -1) {
+	            JPanel p = (JPanel) win;
+
+	            bounds.height = p.getSize().height;
+	        } else {
+	            bounds.height = wi.getHeight();
+	        }
+	    	
+	    	Rectangle frame = mainFrame.getBounds();
+	        if (wi.getX() == -1) {
+	            bounds.x = frame.x + (int)(Math.random()*(frame.width-bounds.width));
+	            if (bounds.x<0)
+	            	bounds.x = 0;
+	        } else {
+	        	bounds.x = wi.getX();
+	        }
+	        if (wi.getY() == -1) {
+	        	// 135: because we don't want it to be placed at the upmost part of the window
+	        	bounds.y = frame.y + 135 + (int)(Math.random()*(frame.height-bounds.height-135));
+	        	if (bounds.y<0)
+	        		bounds.y = 135;
+	        } else {
+	            bounds.y = wi.getY();
+	        }
+	        return bounds;
+	    }
+	    
+	    private void updateWindowInfo(Container container, WindowInfo windowInfo) {
+			windowInfo.setWidth(container.getWidth());
+			windowInfo.setHeight(container.getHeight());
+			windowInfo.setX(container.getX());
+			windowInfo.setY(container.getY());
+			windowInfo.setClosed(!container.isShowing());
+			if (container instanceof JFrame) {
+				JFrame frame = (JFrame) container;
+				if ((frame.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH) {
+					windowInfo.setMaximized(true);
+				}
+				else {
+					windowInfo.setMaximized(false);
+					windowInfo.setNormalBounds(frame.getBounds());
+				}
+			}
+	    }
+	   
+	    /**
+	     * Updates the windowInfo object, so that it correctly reflects the
+	     * current frame properties.
+	     * 
+	     * @param win
+	     * @param windowInfo The WindowInfo object to update
+	     */
+	    public void updateWindowInfo(IWindow win, WindowInfo windowInfo) {
+	    	Object o = viewFrame.get(win);
+	    	if (windowInfo!=null && o!=null) {
+	    		if (o instanceof Container) {
+	    			updateWindowInfo((Container) o, windowInfo);
+	    		}
+	    	}
+	    }
+}
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link_mac.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link_mac.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link_mac.sh	(revision 29090)
@@ -0,0 +1,6 @@
+export BINARIES_3D=$PWD/../binaries/mac/3D;
+echo $BINARIES_3D;
+cd /Developer/DepMan/lib
+find . -type l -exec ls -l {} ';' |sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -sf \2 \1/g' > $BINARIES_3D/install-3D.tmp ;
+cat $BINARIES_3D/install-3D.sh.head $BINARIES_3D/install-3D.tmp > $BINARIES_3D/install-3D.sh ;
+rm -f $BINARIES_3D/install-3D.tmp

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link_mac.sh
___________________________________________________________________
Added: svn:executable
   + *

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/pom.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/pom.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/pom.xml	(revision 29090)
@@ -0,0 +1,219 @@
+<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>
+	<groupId>org.gvsig</groupId>
+	<artifactId>ext3Dgui</artifactId>
+	<packaging>jar</packaging>
+	<version>1.0-SNAPSHOT</version>
+	<name>ext3Dgui</name>
+	<url>http://gvsig.org</url>
+	<description> This is the extension that contains all the GUI part for
+		the 3D extension of GvSIG</description>
+	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>gvsig-extension-base-pom
+		</artifactId>
+		<version>1.9-SNAPSHOT</version>
+	</parent>
+	<dependencies>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>lib3DMap</artifactId>
+			<version>1.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>libCorePlugin</artifactId>
+			<version>1.9-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>extDockingSkin</artifactId>
+			<version>1.9-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig.legacy</groupId>
+			<artifactId>JimiProClasses</artifactId>
+			<version>gvsig</version>
+		</dependency>
+	</dependencies>
+	<properties>
+		<extension-appgvsig-lib-dir> ${extension-dir}/com.iver.cit.gvsig/lib/
+		</extension-appgvsig-lib-dir>
+		<build-dir>${basedir}/../build</build-dir>
+		<extension-distribution> gvSIG/extensiones/org.gvsig.ext3Dgui/
+		</extension-distribution>
+		<gvsig-extension-distribution> gvSIG/extensiones/com.iver.cit.gvsig/
+		</gvsig-extension-distribution>
+
+		<!-- Path to the descriptor for win32 
+		<distribution-win32-descriptor>
+			/distribution/win-distribution/distribution-win32.xml
+		</distribution-win32-descriptor>
+		 Path to the descriptor for win32 sources 
+		<distribution-win32-descriptor-source></distribution-win32-descriptor-source>
+
+		 Path to the descriptor for linux32  
+		<distribution-linux32-descriptor>
+			/distribution/linux-distribution/distribution-linux.xml
+		</distribution-linux32-descriptor>
+		 Path to the descriptor for linux32 sources 
+		<distribution-linux32-descriptor-source></distribution-linux32-descriptor-source>
+
+		 Path to the descriptor for mac 
+		<distribution-mac-descriptor> /distribution/distribution-mac.xml
+		</distribution-mac-descriptor>
+		 Path to the descriptor for mac sources
+		<distribution-mac-descriptor-source></distribution-mac-descriptor-source>
+
+		--><!--		 Path to the output directory for the distribution -->
+		<extension-distribution-output-directory>target/
+		</extension-distribution-output-directory>
+		<distribution-output-directory>distribution/
+		</distribution-output-directory>
+
+
+		<!-- Path to the file descriptor to generate the extension-->
+		<extension-distribution-file>distribution/extension-distribution.xml
+		</extension-distribution-file>
+		<!-- Final name of the output directory for the distribution -->
+		<distribution-final-name>ext3D</distribution-final-name>
+	</properties>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<testSourceDirectory>test</testSourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-source-plugin</artifactId>
+				<configuration>
+					<attach>true</attach>
+				</configuration>
+				<executions>
+					<execution>
+						<id>attach-sources</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory> ${distribution-output-directory}</directory>
+							<includes>
+								<include> **/*${distribution-final-name}*</include>
+							</includes>
+							<followSymlinks>false</followSymlinks>
+						</fileset>
+						<fileset>
+							<directory> ${extension-appgvsig-lib-dir}</directory>
+							<includes>
+								<include>lib3DMap-share*</include>
+							</includes>
+						</fileset>
+						<fileset>
+							<directory> ${extension-dir}/${plugin-name}</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<profiles>
+		<profile>
+			<id>install-binaries</id>
+			<activation>
+				<property>
+					<name>install-binaries-dir</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<artifactId>maven-antrun-plugin</artifactId>
+						<executions>
+							<execution>
+								<id>copy-native-3D</id>
+								<phase>install</phase>
+								<configuration>
+									<tasks name="install binaries">
+										<property name="install-binaries-dir" value="${install-binaries-dir}" />
+										<ant antfile="${basedir}/maven-build.xml" inheritRefs="true" />
+									</tasks>
+								</configuration>
+								<goals>
+									<goal>run</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+					<plugin>
+						<artifactId>maven-clean-plugin</artifactId>
+						<configuration>
+							<filesets>
+								<fileset>
+									<directory> ${install-binaries-dir}</directory>
+									<includes>
+										<include>libjniosgvp**</include>
+										<include>libosg**</include>
+										<include> libOpenThreads**</include>
+										<include> osgPlugins**/**</include>
+									</includes>
+									<followSymlinks>false</followSymlinks>
+								</fileset>
+							</filesets>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		<profile>
+			<id>generate-installers</id>
+			<activation>
+				<property>
+					<name>generate-install</name>
+				</property>
+			</activation>
+			<properties>
+				<bversion>9</bversion>
+				<application-name>gvSIG3D</application-name>
+				<output-dir_installers>target/intallers/</output-dir_installers>
+			</properties>
+			<build>
+				<plugins>
+					<plugin>
+						<artifactId>maven-antrun-plugin</artifactId>
+						<executions>
+							<execution>
+								<id>generate-install</id>
+								<phase>install</phase>
+								<configuration>
+									<tasks>
+										<property name="base-dir" value="${basedir}" />
+										<property name="OUTPUT_DIR" value="${output-dir_installers}" />
+										<property name="version" value="${version}" />
+										<property name="bversion" value="${bversion}" />
+										<property name="APPNAME" value="${application-name}" />
+										<ant antfile="${basedir}/distribution/build.xml"
+											inheritRefs="true" />
+									</tasks>
+								</configuration>
+								<goals>
+									<goal>run</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmn.py	(revision 29090)
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+
+__authors__=["Rafael Gaitan <rgaitan@ai2.upv.es>","Pedro Jorquera <pjorquera@okode.com>","Enrique Medina <quiqueiii@gmail.com>"]
+__date__="30 Nov 2007"
+__copyright__="Copyright 2007 AI2/OKODE"
+__license__="GPL"
+__version__="1.0.0"
+__URL__="https://murray.ai2.upv.es/svn/buildman"
+
+import sys
+from bmcore import *
+
+#main
+def main():
+	
+	arguments = ArgumentParser(sys.argv)
+	arguments.getApplicationUsage().setDescription(arguments.getApplicationName() + "is a set of scripts to create automatic and continuous build systems")
+	arguments.getApplicationUsage().addCommandLineOption("--help", "Gets this help")
+	arguments.getApplicationUsage().addCommandLineOption("--help-all", "Gets the help for all existing tasks")
+	arguments.getApplicationUsage().addCommandLineOption("--help-goal [goal]", "Gets the help for the given task")
+
+	if len(sys.argv)<2:
+		arguments.writeHelpMessages()
+		return
+
+	if arguments.read("--help"):
+		arguments.writeHelpMessages()
+		return
+
+	help_goal = False
+	help_all = False
+	goal = [""]
+	if arguments.read("--help-goal",goal):
+		help_goal = True
+	if arguments.read("--help-all"):
+		help_all = True
+
+	bmn = BuildMan(arguments) 
+
+	if help_goal:
+		arguments.writeGoalHelpMessages(goal[0])
+		return
+
+	if help_all:
+		arguments.writeHelpMessages()
+		return
+	if arguments.errors():
+		arguments.writeErrorMessages()
+		return
+
+	if not bmn.run():
+		bmn.writeErrorMessages()
+	
+
+if __name__ == '__main__': main()
+

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmn.py
___________________________________________________________________
Added: svn:executable
   + *

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ApplicationUsage.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ApplicationUsage.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ApplicationUsage.py	(revision 29090)
@@ -0,0 +1,56 @@
+"""
+	ApplicationUsage manage the options of the application
+	and plugins.
+"""
+class ApplicationUsage:
+	def __init__(self):
+		self._applicationName = ""
+		self._commandLineOptions = []
+		self._commandLineGoals = dict()
+		self._commandLineGoalsDescriptions = dict()
+		self._description = ""
+
+	def setApplicationName(self,name):
+		self._applicationName = name
+
+	def getApplicationName(self):
+		return self._applicationName
+
+	def addCommandLineGoalOption(self,goal,option,description):
+		self._commandLineGoals[goal].append((option,description))
+
+	def addCommandLineGoal(self,goal,description):
+		self._commandLineGoals[goal] = []
+		self._commandLineGoalsDescriptions[goal] = description
+
+	def addCommandLineOption(self,option,description):
+		self._commandLineOptions.append((option,description))
+
+	def getCommandLineGoalDescription(self,goal):
+		if goal in self._commandLineGoalsDescriptions:
+			return self._commandLineGoalsDescriptions[goal]
+		return None
+
+	def getCommandLineGoals(self):
+		return self._commandLineGoals
+
+	def getCommandLineGoalOptions(self,goal):
+		return self._commandLineGoals[goal]
+
+	def getCommandLineOptionDescription(self,option):
+		for v in self._commandLineOptions:
+			(opt,desc) = v
+			if opt == option:
+				return desc
+		return None
+
+	def getCommandLineOptions(self):
+		return self._commandLineOptions
+
+	def setDescription(self, str):
+		self._description = str
+
+	def getDescription(self):
+		return self._description
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BuildMan.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BuildMan.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BuildMan.py	(revision 29090)
@@ -0,0 +1,41 @@
+from bmbase.PlugInManager import PlugInManager
+
+"""
+	BuildMan manages the loading of plugins and 
+	dispatch the requested tasks to the appropiate
+	plug-in. Each plug-in defines its parameters and
+	its help environment, so an ArgumentParse is 
+	necessary in the construction. 
+"""
+class BuildMan:
+	# constructor
+	def __init__(self,arguments):
+		self._arguments = arguments
+		self._errorMessages = []
+		self.__configurePlugins(self._arguments)
+
+	# configure arguments of the automatic loaded plugins
+	def __configurePlugins(self, arguments):
+		for plugin in PlugInManager().getPlugInInstances().values():
+			plugin.initArguments(arguments)
+		for plugin in PlugInManager().getPlugInInstances().values():
+			plugin.init()
+			if plugin.error():
+				self._errorMessages += plugin.getErrorMessages()
+
+	# execute all plugins, any plugin with his arguments has the responsability of do the correct
+	def run(self):
+		for plugin in PlugInManager().getPlugInInstances().values():
+			plugin.run()
+			if plugin.error():
+				self._errorMessages += plugin.getErrorMessages()
+				return False
+		return True	
+				
+
+	def writeErrorMessages(self):
+		for error in self._errorMessages:
+			print "ERROR: " + error + "\n"
+	
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BMUtil.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BMUtil.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/BMUtil.py	(revision 29090)
@@ -0,0 +1,202 @@
+import os
+import os.path
+import zipfile
+import difflib
+import tarfile
+import md5
+import urllib2
+import sys
+import shutil
+import re
+
+class BMUtil:
+	def buildmanPath(self):
+		dr = os.getenv("BUILDMAN_PATH")
+		if not dr is None:
+			return dr
+		if sys.platform == "linux2" or sys.platform == "linux1":
+			dr = os.getenv("HOME")+os.path.sep+".buildman"
+		if sys.platform == "win32" or sys.platform == "win64":
+			#ex: c:\documents and setting\user\DepMan
+			dr = os.getenv("USERPROFILE")+os.path.sep+"BuildMan"
+		if sys.platform == "darwin":
+			dr = os.path.sep + "Developer" + os.path.sep + "BuildMan"
+		if dr is None:
+			return None
+		else:
+			return dr
+
+	def buildmanPlugInPath(self):
+		dr = self.buildmanPath()
+		if dr is None:
+			return None
+		else:
+			return os.path.join(dr,'plugins')
+
+
+	def mkdir(self,newdir):
+		"""works the way a good mkdir should :)
+			- already exists, silently complete
+			- regular file in the way, raise an exception
+			- parent directory(ies) does not exist, make them as well
+		"""
+		if os.path.isdir(newdir):
+			pass
+		elif os.path.isfile(newdir):
+			raise OSError("a file with the same name as the desired " \
+				"dir, '%s', already exists." % newdir)
+		else:
+			head, tail = os.path.split(newdir)
+			if head and not os.path.isdir(head):
+				self.mkdir(head)
+			if tail:
+				os.mkdir(newdir)
+
+	#recursively directory tree removing
+	def rmdir(self,path):
+		if not os.path.isdir(path):
+			return
+
+		shutil.rmtree(path)	
+		#files=os.listdir(path)
+			
+		#for x in files:
+		#	fullpath=os.path.join(path, x)
+				
+		#	if os.path.isfile(fullpath):
+		#		os.remove(fullpath)
+				
+		#	elif os.path.isdir(fullpath):
+		#		rmdir(fullpath)
+		#		os.rmdir(fullpath)
+				
+
+	def unzip(self,file, dir):
+		mkdir(dir)
+		zfobj = zipfile.ZipFile(open(file))
+		for name in zfobj.namelist():
+			if name.endswith('/'):
+				mkdir(os.path.join(dir, name))
+			else:
+				outfile = open(os.path.join(dir, name), 'wb')
+				outfile.write(zfobj.read(name))
+				outfile.close()
+
+	def targz(self,file, dir):
+		cwd = os.getcwd()
+		os.chdir(dir)
+		dirs = os.listdir(".")
+		if ".svn" in dirs:
+			dirs.remove(".svn")
+		if ".cvsignore" in dirs:
+			dirs.remove(".cvsignore")
+		tar = tarfile.open(str(file),"w|gz")
+		for f in dirs:	
+			tar.add(f)
+		tar.close()
+		os.chdir(cwd)
+		
+		
+
+	def untargz(self,file, dir):
+		tar = tarfile.open(file)
+		for tarinfo in tar:
+			tar.extract(tarinfo,dir)
+		tar.close()
+		
+	def untargzFiltered(self,file,dir,filter):
+		filter=filter.replace("*","(\S)*")
+		filter="^(\S)*"+filter+"$"
+		#print "filter: ",filter
+		tar = tarfile.open(file)
+		for tarinfo in tar:
+			if re.match(filter,tarinfo.name):
+				print "[file] ",tarinfo.name
+				tar.extract(tarinfo,dir)
+						
+		tar.close()
+
+	def diff(self,f1name, f2name):
+		try:
+			f1 = open(f1name)
+			f2 = open(f2name)
+			a = f1.readlines(); f1.close()
+			b = f2.readlines(); f2.close()
+			for line in difflib.unified_diff(a, b):
+				print line,
+				if line != "":
+					return True 
+				return False
+		except:
+			return True
+
+	#creates the given fouput md5 file from the finput file
+	def createMD5(self,finput,foutput):
+		#input file
+		file_in=open(finput,"rb")
+		md5cpm=md5.new()
+			
+		while True:
+			data = file_in.read(8096)
+			if not data:
+				break
+			md5cpm.update(data)
+		
+		file_in.close()
+				
+			
+		md5string=md5cpm.hexdigest()
+		
+		file_out=open(foutput,"w")
+		file_out.write(md5string)
+		file_out.close()
+		
+		
+		
+	def checkUrl(self,uri):
+		try:
+			fd=urllib2.urlopen(uri)
+			fd.close()
+			return True
+		except:
+			return False
+			
+		
+	def download(self,uri,fout):
+		try:
+			fdes=urllib2.urlopen(uri)
+			foutdes=open(fout,"wb")
+			uinfo=fdes.info()
+			size = uinfo.get('content-length')
+			size=int(size)
+			
+			uristr=uri[uri.rfind("/")+1:]
+			
+			#lets read the file in 1kbyte blocks
+			completed=0
+			x=completed*100/size
+			tstr="* downloading ["+str(x)+" %] "+uristr
+			sys.stdout.write(tstr)
+			while True:
+				block=fdes.read(1024)
+				if not block:
+					break
+				foutdes.write(block)
+				
+				completed=completed+len(block)
+				x=completed*100/size
+				sys.stdout.write("\r")
+				tstr="* downloading ["+str(x)+" %] "+uristr
+				sys.stdout.write(tstr)
+				#insert write op here	
+			
+			foutdes.close()
+			
+			sys.stdout.write("\n")
+			
+			#print "* downloaded ",uri," [",size,"] bytes"
+			return True
+		except:		
+			return False
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ArgumentParser.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ArgumentParser.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/ArgumentParser.py	(revision 29090)
@@ -0,0 +1,111 @@
+from ApplicationUsage import ApplicationUsage
+from bmbase.PlugInManager import PlugInManager
+
+
+"""
+	ArgumentParser is a helper in the task of 
+	reading parameters from command line.
+"""
+class ArgumentParser:
+	def __init__(self,argv):
+		self._argv = argv
+		self._argc = len(self._argv)
+		self._error = False
+		self._errorMessages = []
+		self._applicationUsage = ApplicationUsage()
+		self._applicationUsage.setApplicationName(self.getApplicationName())
+
+	def errors(self):
+		return self._error
+
+	def writeErrorMessages(self):
+		for error in self._errorMessages:
+			print error + "\n"
+
+	def writeGoalHelpMessages(self,goal):
+		if goal in self._applicationUsage.getCommandLineGoals().keys():
+			print "Goal supported by " + str(PlugInManager().getPlugInInstanceByGoal(goal).__class__) + " plugin:"
+			print goal + "\t" + self._applicationUsage.getCommandLineGoalDescription(goal) + "\n"
+			for option,value in self._applicationUsage.getCommandLineGoalOptions(goal):
+				print "\t" + option + "\t" + value + "\n"
+		else:
+			print "Goal `" + goal +"` not supported, try --help-all option" 
+
+	def writeHelpMessages(self):
+		print "BuildMan options:"
+		print "-----------------" + "\n"
+		for option,value in self._applicationUsage.getCommandLineOptions():
+			print option + "\t" + value + "\n"
+		if len(self._applicationUsage.getCommandLineGoals().keys())>0:
+			print "Supported Goals:"
+			print "----------------" + "\n"
+			for goal in self._applicationUsage.getCommandLineGoals().keys():
+				print goal + "\t" + self._applicationUsage.getCommandLineGoalDescription(goal) + "\n"
+				for option,value in self._applicationUsage.getCommandLineGoalOptions(goal):
+					print "\t" + option + "\t" + value + "\n"
+
+	def getApplicationUsage(self):
+		return self._applicationUsage
+
+	def getApplicationName(self):
+		return self._argv[0]
+
+	def isOption(self, str):
+		return (len(str) > 1 and str[0]=='-')
+
+	def argc(self):
+		return self._argc
+
+	def argv(self):
+		return self._argv
+
+	def find(self,str):
+		for pos in range(1,self._argc):
+			if str == self._argv[pos]:
+				return pos
+		return 0
+
+	def match(self,pos,str):
+		return (pos<self._argc and str==self._argv[pos])
+
+	def containsOptions(self):
+		for op in self._argv:
+			if self.isOption(op):
+				return True
+		return False
+
+	def remove(self,pos,num):
+		if num==0: return
+		removeList = []
+		for i in range(pos,pos+num):
+			removeList.append(self._argv[i])
+		for r in removeList:
+			self._argv.remove(r)
+		self._argc-=num
+		
+		
+	def read(self,str,values=[]):
+		pos = self.find(str)
+		if pos<=0:
+			return False
+		if len(values)==0:
+			self.remove(pos,1)
+			return True
+		return self.__read(pos,str,values)
+
+	def __read(self,pos,str,values):
+		if self.match(pos,str):
+			if pos+len(values)<self._argc:
+				inc = 1
+				for i in range(len(values)):
+					values[i] = self._argv[pos+inc]
+					inc+=1
+				self.remove(pos,len(values)+1)
+				return True
+			self.__reportError("argument to `"+str+"` is missing")
+			return False
+		return False
+
+	def __reportError(self, str):
+		self._error = True
+		self._errorMessages.append(str)
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/__init__.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/__init__.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmcore/__init__.py	(revision 29090)
@@ -0,0 +1,10 @@
+"""
+	Main modules of the Build Manteinance Tool
+"""
+__version__="1.0.0"
+
+from ArgumentParser import ArgumentParser
+from BuildMan import BuildMan
+from ApplicationUsage import ApplicationUsage
+from BMUtil import BMUtil
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/__init__.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/__init__.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/__init__.py	(revision 29090)
@@ -0,0 +1,4 @@
+"""
+	Bases classes to extend and create new plugins
+"""
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/IPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/IPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/IPlugIn.py	(revision 29090)
@@ -0,0 +1,69 @@
+from xml.dom import minidom
+
+'''
+	Defines a interface for plugins
+'''
+class IPlugIn:
+	def __init__(self):
+		self._errorMessages = []
+		self._error = False
+		self._id = ""
+		self._goals = dict()
+		self._arguments = None
+		self._execute = False
+
+	def initArguments(self,arguments):
+		self._arguments = arguments
+
+	def init(self):
+		pass
+
+	def initFromXML(self,node):
+		pass
+	
+	def execute(self):
+		pass
+	
+	def loadXMLFile(self,xmlfile):
+		xmldoc=minidom.parse(xmlfile)
+		node = xmldoc.firstChild
+		self.initFromXML(node)
+	
+	def getExecute(self):
+		return self._execute
+	
+	def setExecute(self,value):
+		self._execute = value
+		
+	def run(self):
+		if self._execute:
+			self.execute()
+
+	
+	def reportError(self,s):
+		self._errorMessages.append(str(self.__class__)+":"+s)
+		self._error = True
+
+	def error(self):
+		return self._error
+
+	def getErrorMessages(self):
+		return self._errorMessages
+
+	def setId(self,id):
+		self._id = id
+
+	def getId(self):
+		return self._id
+
+	def addGoal(self,goal,description):
+		self._goals[goal] = []
+		self._arguments.getApplicationUsage().addCommandLineGoal(goal,description)
+	
+	def addGoalOption(self,goal,option,description):
+		self._goals[goal].append(option)
+		self._arguments.getApplicationUsage().addCommandLineGoalOption(goal,option,description)
+
+	def getGoals(self):
+		return self._goals
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/PlugInManager.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/PlugInManager.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmbase/PlugInManager.py	(revision 29090)
@@ -0,0 +1,35 @@
+"""
+	PlugInManager is a singleton class that manages
+	plugininstances, and register methods. Each
+	plugin should call to register itself
+"""
+class PlugInManager:
+	_pluginInstances = {}
+
+	def registerPlugIn(self, id, pluginInstance):
+		PlugInManager._pluginInstances[id] = pluginInstance
+		pluginInstance.setId(id)
+
+	def getPlugInInstances(self):
+		return PlugInManager._pluginInstances
+
+	def getPlugInInstance(self,id):
+		return PlugInManager._pluginInstances[id]
+
+	def getPlugInInstanceByGoal(self,goal):
+		for plugin in PlugInManager._pluginInstances.values():
+			if goal in plugin.getGoals().keys():
+				return plugin
+		return None
+	
+	def supportedGoals(self):
+		goals = []
+		for plugin in PlugInManager._pluginInstances.values():
+			for g in plugin.getGoals().keys():
+				goals.append(g)
+		return goals
+
+#loading plugins
+from bmplugins import *
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/TestPlugIn.py_
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/TestPlugIn.py_	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/TestPlugIn.py_	(revision 29090)
@@ -0,0 +1,26 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+import pprint
+
+
+class TestPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+
+	def init(self):
+		self.addGoal("test", "Tests user buildman plugin path")
+		while self._arguments.read("test"):
+			self.setExecute(True)		
+
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		l=[] 
+		for id,plugin in PlugInManager().getPlugInInstances().items():
+			l.append((id,plugin))	
+		pp = pprint.PrettyPrinter(indent=4)
+		pp.pprint(l) 
+		return True
+
+PlugInManager().registerPlugIn("TestPlugIn",TestPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManExtractPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManExtractPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManExtractPlugIn.py	(revision 29090)
@@ -0,0 +1,110 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import os
+
+class DepManExtractPlugIn(IPlugIn):
+    def __init__(self):
+        IPlugIn.__init__(self)
+        self._xmlFile = "depman.xml"
+        self._destDir = "."
+        self._filter = "*"
+        self._isFromCache=False
+        self._isInteractive=True
+        self._depmanNode = None
+
+    def init(self):
+        self.addGoal("extract", "Extract the files of dependencies and package sections of a depman xml file.")
+        self.addGoalOption("extract","--file", "Sets an alternate xml file. Default: depman.xml")
+        self.addGoalOption("extract","--destdir", "Sets the destination directory of the extraction. Default: `.`")
+        self.addGoalOption("extract","--filter", "Sets the the filter of the files to extract. Default: `*`")
+        self.addGoalOption("extract","--cache", "Cache is preferred")
+        self.addGoalOption("extract","--remote", "Remote repository is preferred")
+    
+        isExtract = False
+        if self._arguments.read("extract"):
+            self.setExecute(True)
+            isExtract = True
+
+        if not isExtract:
+            return    
+        
+        args = [""]
+        if self._arguments.read("--file", args):
+            self._xmlFile = args[0]   
+            
+        args = [""]
+        if self._arguments.read("--destdir", args):
+            self._destDir = args[0]
+            
+        args = [""]
+        if self._arguments.read("--filter", args):
+            self._filter = args[0] 
+            
+        if self._arguments.read("--cache"):
+            self._isFromCache = True
+            self._isInteractive = False
+        
+        if self._arguments.read("--remote"):
+            self._isFromCache = False
+            self._isInteractive = False
+
+    def initFromXML(self,node):
+        if node.localName=="extract":
+            if node.hasAttributes():
+                if node.attributes.has_key("file"):
+                    elf._xmlFile = node.attributes.get("file").value
+                if node.attributes.has_key("destdir"):
+                    elf._destDir = node.attributes.get("destdir").value                   
+                if node.attributes.has_key("filter"):
+                    elf._filter = node.attributes.get("filter").value    
+                foundCache = False
+                if node.attributes.has_key("cache"):
+                    value = node.attributes.get("cache").value
+                    if value == "True" or value == "true":
+                        self._isFromCache = True
+                        self._isInteractive = False
+                if node.attributes.has_key("remote") and not foundCache:
+                    value = node.attributes.get("remote").value
+                    if value == "True" or value == "true":
+                        self._isFromCache = False
+                        self._isInteractive = False
+        else:
+            self._depmanNode = node
+                    
+    def execute(self):
+        print "Executing Plugin:" + str(self.__class__)
+        return self.extract()
+
+    def extract(self):
+        self._dmupdate = PlugInManager().getPlugInInstance("DepManUpdatePlugIn")
+        if self._dmupdate == None:
+            self.reportError("PlugIn `depman update` not found")
+            return
+        
+        if self._depmanNode == None:
+            self.loadXMLFile(self._xmlFile)
+        
+        if not self._isInteractive:
+            if self._isFromCache:
+                self._dmupdate.setForceCache()
+            else:
+                self._dmupdate.setForceRemote()
+                
+        dependency_filenamepaths = self._dmupdate.getDependencies(self._depmanNode)
+        package_namepath = self.parsePackage(self._depmanNode)
+        print dependency_filenamepaths, self._destDir, self._filter
+        
+        bmutil = BMUtil()
+        for file in dependency_filenamepaths:
+            bmutil.untargzFiltered(file, self._destDir, self._filter)
+        
+    
+    def parsePackage(self,node):
+        return ""
+
+
+PlugInManager().registerPlugIn("DepManExtractPlugIn",DepManExtractPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CreateSolutionPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CreateSolutionPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CreateSolutionPlugIn.py	(revision 29090)
@@ -0,0 +1,113 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+
+class CreateSolutionPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._buildType = "Release"
+		self._supportedGenerators = dict()
+		self._supportedGenerators["vs8"] = "Visual Studio 8 2005"
+		self._supportedGenerators["vs7"] = "Visual Studio 7 .NET 2003"
+		self._supportedGenerators["unix"] = "Unix Makefiles"
+		self._supportedGenerators["xcode"] = "Xcode"
+		self._cmakeGenerator = ""
+		self._projectPath = ""
+		self._projectGenerationPath = ""
+		self._installPath = ""
+		self._cmakeOtherOptions = ""
+		
+
+	def init(self):
+		self.addGoal("create-solution", "Creates the solution Makefiles/VisualStudio for Win/Linux/Mac based on CMake")
+		self.addGoalOption("create-solution","--build-type", "sets the build path (Release/Debug). default=Release.")
+		self.addGoalOption("create-solution","--generator", "selects the generator (vs8,vs7,unix,xcode).")
+		self.addGoalOption("create-solution","--project-path", "sets the path of the project.")
+		self.addGoalOption("create-solution","--project-gen-path", "sets the path to generate project files. default=${project-path}/CMake")
+		self.addGoalOption("create-solution","--install", "sets the path to generate the product installation. default=${project-path}/../install")
+		self.addGoalOption("create-solution","--cmake-options", "Adds other cmake command line options.")
+		execute = False		
+		if self._arguments.read("create-solution"):
+			execute = True
+		if execute:
+			args = [""]
+			if self._arguments.read("--build-type",args):
+				self._buildType = args[0]
+		
+			args = [""]
+			if self._arguments.read("--generator",args):
+				if args[0] in self._supportedGenerators:
+					self._cmakeGenerator = self._supportedGenerators[args[0]]
+
+			args = [""]
+			if self._arguments.read("--project-path",args):
+				self._projectPath=args[0]
+		
+			args = [""]
+			if self._arguments.read("--project-gen-path",args):
+				self._projectGenerationPath=args[0]
+	
+			args = [""]
+			if self._arguments.read("--install",args):
+				self._installPath=args[0]
+				
+			args = [""]
+			if self._arguments.read("--cmake-options",args):
+				self._cmakeOtherOptions=args[0]
+				
+			self.setExecute(True)
+			
+	def initFromXML(self,node):
+		if node.localName=="create-solution":
+			if node.hasAttributes():
+				if node.attributes.has_key("build-type"):
+					self._buildType = node.attributes.get("build-type").value
+				if node.attributes.has_key("generator"):
+					gen = node.attributes.get("generator").value
+					if gen in self._supportedGenerators:
+						self._cmakeGenerator = self._supportedGenerators[gen]
+				if node.attributes.has_key("project-path"):
+					self._projectPath = node.attributes.get("project-path").value
+				if node.attributes.has_key("project-gen-path"):
+					self._projectGenerationPath = os.path.abspath(node.attributes.get("project-gen-path").value)
+				if node.attributes.has_key("install"):
+					self._installPath = os.path.abspath(node.attributes.get("install").value)
+				if node.attributes.has_key("cmake-options"):
+					self._cmakeOtherOptions = node.attributes.get("cmake-options").value
+										
+	def execute(self):
+		if self._cmakeGenerator=="":
+			self.reportError("Missing valid generator option")
+			return False
+		if self._projectPath=="":
+			self.reportError("Missing required project path option")
+			return False
+			
+		if self._cmakeGenerator!="" and self._projectPath!="":
+			self._projectPath = os.path.abspath(self._projectPath)
+			projectName = os.path.basename(self._projectPath)
+			if self._projectGenerationPath=="":
+				self._projectGenerationPath=os.path.abspath(os.path.join(self._projectPath,"BMCMake"))
+			if self._installPath=="":
+				self._installPath=os.path.abspath(self._projectPath+os.path.sep+".."+os.path.sep+projectName+"-install")
+			if self._buildType=="":
+				self._buildType="Release"
+				
+		print "Executing Plugin:" + str(self.__class__)
+		bmutil = BMUtil()
+		print " * Creating Project Generation Path: "+self._projectGenerationPath
+		bmutil.mkdir(self._projectGenerationPath)
+		olddir = os.getcwd()
+		os.chdir(self._projectGenerationPath)
+		if os.path.exists("CMakeCache.txt"):
+			os.remove("CMakeCache.txt")
+		cmakeCommand = "cmake "+self._cmakeOtherOptions+" -G\""+self._cmakeGenerator+"\" -DCMAKE_BUILD_TYPE="+self._buildType+" -DCMAKE_INSTALL_PREFIX="+self._installPath+" "+self._projectPath 
+		print " * Running CMAKE: " + cmakeCommand
+		os.system(cmakeCommand)
+		os.chdir(olddir)
+		return True
+
+PlugInManager().registerPlugIn("CreateSolutionPlugIn",CreateSolutionPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/__init__.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/__init__.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/__init__.py	(revision 29090)
@@ -0,0 +1,47 @@
+"""
+	Path where plugins reside
+	Each plugin should implement IPlugIn interface
+	from bmbase.
+"""
+
+
+
+import os
+import sys
+from bmcore.BMUtil import BMUtil
+import imp
+
+def bmimport(name, paths):
+	# Fast path: see if the module has already been imported.
+    try:
+        return sys.modules[name]
+    except KeyError:
+        pass
+
+    # If any of the following calls raises an exception,
+    # there's a problem we can't handle -- let the caller handle it.
+
+    fp, pathname, description = imp.find_module(name,paths)
+
+    try:
+        return imp.load_module(name, fp, pathname, description)
+    finally:
+        # Since we may exit via an exception, close fp explicitly.
+        if fp:
+            fp.close()
+
+util = BMUtil()
+searchPaths=[os.path.join(sys.path[0],'bmplugins'),util.buildmanPlugInPath(),os.path.join(sys.path[0],'../bmplugins')]
+
+plugList = []
+for dir in searchPaths:
+	if not os.path.exists(dir):
+		continue
+	for f in os.listdir(dir):
+		if f.endswith('.py') and not f.startswith('__init__'):
+			plugList.append(f[0:-3])
+
+print plugList
+for m in plugList:
+	bmimport(m,searchPaths)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DeleteFilePlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DeleteFilePlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DeleteFilePlugIn.py	(revision 29090)
@@ -0,0 +1,53 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+import sys
+import shutil
+
+class DeleteFilePlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._path = ""
+
+	def init(self):
+		self.addGoal("delete", "deletes a file or directory")
+		self.addGoalOption("delete", "--path", "Sets the file/path to be deleted")
+		execute = False
+		while self._arguments.read("delete"):
+			execute = True
+			
+		if execute:
+			args = [""]
+			while self._arguments.read("--path",args):
+				self._path = args[0]
+			
+			self.setExecute(True)
+			
+	def initFromXML(self,node):
+		if node.localName=="delete":
+			if node.hasAttributes():
+				if node.attributes.has_key("path"):
+					self._path = node.attributes.get("path").value
+						
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		if self._path == "":
+			self.reportError("Missing required path option")
+			
+		self._path = os.path.abspath(self._path)
+		util = BMUtil()
+		if not os.path.exists(self._path):
+			return True
+		if os.path.isdir(self._path):
+			print "* Removing directory " + self._path
+			util.rmdir(self._path)
+		else:
+			print "* Removing file " + self._path
+			os.remove(self._path)
+			
+		return True
+
+PlugInManager().registerPlugIn("DeleteFilePlugIn",DeleteFilePlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/PrepareSystemPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/PrepareSystemPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/PrepareSystemPlugIn.py	(revision 29090)
@@ -0,0 +1,31 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+import sys
+import shutil
+
+class PrepareSystemPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+
+	def init(self):
+		self.addGoal("init", "Prepares the system with the buildman user directory with an example plugin")
+		while self._arguments.read("init"):
+			self.setExecute(True)			
+
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__) + "\n"
+		util = BMUtil()
+		bmpath = util.buildmanPlugInPath()
+		try:
+			util.mkdir(bmpath)		
+			#shutil.copy(sys.path[0]+os.path.sep+"bmplugins"+os.path.sep+"TestPlugIn.py_",util.buildmanPlugInPath()+os.path.sep+"TestPlugIn.py")
+		except:
+			self.reportError("Error creating buildman directory or copying test plugin")
+			return False
+		return True
+
+PlugInManager().registerPlugIn("PrepareSystemPlugIn",PrepareSystemPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManGetPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManGetPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManGetPlugIn.py	(revision 29090)
@@ -0,0 +1,276 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import os
+
+class DepManGetPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._default_repository = ""
+		self._url = ""
+		self._group = ""
+		self._artifact = ""
+		self._version = ""
+		self._platform = ""
+		self._artifact = ""
+		self._compiler = ""
+		self._arch = ""
+		self._ltype = ""
+		self._forceCache = False
+		self._isInteractive = True
+		
+	def setURL(self,url):
+		self._url = url
+
+	def setGroup(self,group):
+		self._group = group
+
+	def setArtifact(self,artifact):
+		self._artifact = artifact		
+	
+	def setVersion(self,version):
+		self._version = version
+	
+	def setPlatform(self,platform):
+		self._platform = platform
+
+	def setCompiler(self,compiler):
+		self._compiler = compiler
+
+	def setArch(self,arch):
+		self._arch = arch
+
+	def setLibraryType(self,ltype):
+		self._ltype = ltype
+
+	def setForceCache(self):
+		self._forceCache = True
+		self._isInteractive = False
+
+	def setForceRemote(self):
+		self._forceCache = False
+		self._isInteractive = False
+	
+	def init(self):
+		self.addGoal("get", "downloads an artifact if not in cache.")
+		self.addGoalOption("get","--url", "URL base for the DepMan repository.")
+		self.addGoalOption("get","--group", "Group namespace of the artifact.")
+		self.addGoalOption("get","--artifact", "Name of the artifact to download.")
+		self.addGoalOption("get","--version", "Version of the artifact.")
+		self.addGoalOption("get","--platform", "Platform of the artifact.")
+		self.addGoalOption("get","--compiler", "Selects the compiler version that was used to compile the artifact.")
+		self.addGoalOption("get","--arch", "Selects the architecture of the artifact.")
+		self.addGoalOption("get","--ltype", "Type of library of the artifact.")
+		self.addGoalOption("get","--cache", "Forces the use of cache files without asking.")
+		self.addGoalOption("get","--remote", "Forces the download of remote without the use of the cache and without asking.")
+
+		self._dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if self._dmplugin == None:
+			self.reportError("PlugIn `depman` not found")
+			return
+		self._default_repository = self._dmplugin.getDepManPath()
+	
+		isGet = False
+		while self._arguments.read("get"):
+			isGet = True
+		
+		if not isGet:
+			return
+
+		args=[""]
+		if self._arguments.read("--url",args):
+			self._url = args[0]
+
+		args=[""]
+		if self._arguments.read("--group",args):
+			self._group = args[0]
+
+		args=[""]
+		if self._arguments.read("--artifact",args):
+			self._artifact = args[0]
+
+		args=[""]
+		if self._arguments.read("--version",args):
+			self._version = args[0]
+
+		args=[""]
+		if self._arguments.read("--platform",args):
+			self._platform = args[0]
+
+		args=[""]
+		if self._arguments.read("--compiler",args):
+			self._compiler = args[0]
+
+		args=[""]
+		if self._arguments.read("--arch",args):
+			self._arch = args[0]
+
+		args=[""]
+		if self._arguments.read("--ltype",args):
+			self._ltype = args[0]
+
+		if self._arguments.read("--cache"):
+			self._forceCache = True
+			self._isInteractive = False
+
+		if self._arguments.read("--remote"):
+			self._forceCache = False
+			self._isInteractive = False
+	
+		self.setExecute(True)
+	
+
+	def initFromXML(self,node):
+		pass
+		#TODO: . . .
+
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		if self._url == "":
+			self.reportError("Missing url option")
+			return
+		if self._artifact == "":
+			self.reportError("Missing artifact option")
+			return
+		if self._group == "":
+			self.reportError("Missing group option")
+			return
+		if self._version == "":
+			self.reportError("Missing version option")
+			return
+		if self._platform == "":
+			self.reportError("Missing platform option")
+			return
+		if self._compiler == "":
+			self.reportError("Missing compiler option")
+			return
+		if self._arch == "":
+			self.reportError("Missing artifact option")
+			return
+		if self._ltype == "":
+			self.reportError("Missing library type option")
+			return
+
+	
+		if self._platform not in self._dmplugin.getSupportedPlatforms():
+			self.reportError("* Platform not supported: " + self._platform)
+			return
+	
+		if self._compiler not in self._dmplugin.getSupportedCompilers():
+			self.reportError("* Compiler not supported: "+ self._compiler)
+			return
+	
+		if self._arch not in self._dmplugin.getSupportedArchs():
+			self.reportError("* Architecture not supported: "+ self._arch)
+			return
+	
+		if self._ltype not in self._dmplugin.getSupportedLibraryTypes():
+			self.reportError("* Library type not supported: " + self._ltype)
+			return
+	
+		if self._platform!=self._dmplugin.getOSPlatform() and self._platform!="all":
+			print "* Warning: Forced platform ",self._platform
+		return self.get()
+
+	def get(self, unPackList = None):
+		#transform namespaces org.foo to org/foo
+		group=self._group.replace(".","/")
+	
+		print "[",self._artifact,"]"
+
+		file_name=self._artifact+"-"+self._version+"-"+self._platform+"-"+self._compiler+"-"+self._arch+"-"+self._ltype
+		tarname=file_name+".tar.gz"
+		md5name=tarname+".md5"
+	
+		download_path = group+os.path.sep+self._artifact+os.path.sep+self._version+os.path.sep+self._platform+os.path.sep+self._compiler+os.path.sep+self._arch+os.path.sep+self._ltype
+		download_dir = group+"/"+self._artifact+"/"+self._version+"/"+self._platform+"/"+self._compiler+"/"+self._arch+"/"+self._ltype
+		cache_path = self._default_repository+os.path.sep+".cache"+os.path.sep+download_path
+	
+	
+		tstr=self._version.lower()
+		if tstr.find("snapshot")!=-1:
+			is_snapshot=True
+		else:
+			is_snapshot=False
+	
+		dmutil = BMUtil()
+
+		is_tar=True
+		is_md5=True
+		if not dmutil.checkUrl(self._url+"/"+download_dir+"/"+md5name):
+			#print "Error: File ",baseurl+"/"+download_dir+"/"+md5name, " not found in the repository"
+			is_md5=False
+	
+		if not dmutil.checkUrl(self._url+"/"+download_dir+"/"+tarname):
+			#print "Error: File ",baseurl+"/"+download_dir+"/"+tarname, " not found in the repository"
+			is_tar=False
+	
+		dmutil.mkdir(cache_path)
+		
+	
+		if not os.path.isfile(cache_path+os.path.sep+md5name):
+			is_cache=False
+		else:
+			is_cache=True
+
+		#Once all variables have been collected, lets decide what to do with the artifact
+		must_download=False
+	
+		if (not is_md5 or not is_tar) and not is_cache:
+			print "Error: Artifact ",tarname," not found"
+			return False
+	
+		if not is_md5 and not is_tar and is_cache:
+			print "* file not found in repository, using cache..."
+			must_download=False
+	
+		if is_md5 and is_tar  and not is_cache:
+			print "* file is not in cache, downloading..."
+			must_download=True
+	
+		if is_md5 and is_tar and is_cache:
+			if is_snapshot:
+				if self._isInteractive:
+					repo=raw_input("What snapshot do you want to use? (cache/remote): ")
+				else:
+					if self._forceCache:
+						repo="cache"
+					else:
+						repo="remote"
+					
+				must_download=False
+			
+				#in case of misspeling, using cache by default
+				if repo!="cache" and repo!="remote":
+					repo="cache"
+			else:
+				repo="remote"
+		
+			if repo=="remote":
+				print "* file cached, checking md5..."
+				dmutil.download(self._url+"/"+download_dir+"/"+md5name,cache_path+os.path.sep+md5name+".new")
+			
+				if dmutil.diff(cache_path+os.path.sep+md5name,cache_path+os.path.sep+md5name+".new"):
+					print "* no md5 matching, re-downloading..."
+					must_download=True
+				else:
+					print "* md5 matching succesful"
+					must_download=False
+				os.remove(cache_path+os.path.sep+md5name+".new")
+	
+		if must_download==True:
+			print "URL :", self._url
+			dmutil.download(self._url+"/"+download_dir+"/"+md5name,cache_path+os.path.sep+md5name)
+			#print "* downloaded [",md5name,"]"
+			dmutil.download(self._url+"/"+download_dir+"/"+tarname,cache_path+os.path.sep+tarname)
+			#print "* downloaded[",tarname,"]"
+		if unPackList != None:
+			if (cache_path+os.path.sep+tarname) not in unPackList:
+				unPackList.append(cache_path+os.path.sep+tarname)
+		
+		return True
+
+PlugInManager().registerPlugIn("DepManGetPlugIn",DepManGetPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManPlugIn.py	(revision 29090)
@@ -0,0 +1,84 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import os
+import sys
+
+class DepManPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._depmanDataPath = sys.path[0]+os.path.sep+".."+os.path.sep+"plugins-data"+os.path.sep+"depman"
+		self._supportedPlatforms = ["all","mac","linux","win"]
+		self._supportedArchs = ["all","i386","ppc","ppc64","x86_64","universal"]
+		self._supportedLibraryTypes = ["none","dynamic","static","framework"]
+		self._supportedCompilers = ["all","vs6","vs7","vs8","gcc3","gcc4"]
+		#tries to guess host OS values
+		self._osplatform="unknown"
+		self._osarch="unknown"
+		self._oscompiler="unknown"
+		if sys.platform=="darwin":
+			self._osplatform="mac"
+			self._osarch="universal"
+			self._oscompiler="gcc4"
+		elif sys.platform == "linux2" or sys.platform == "linux1":
+			self._osplatform="linux"
+			self._osarch="i386"
+			self._oscompiler="gcc4"
+		elif sys.platform == "win32" or sys.platform == "win64":
+			self._osplatform="win"
+			self._osarch="i386"
+			self._oscompiler="vs8"
+
+	def init(self):
+		pass
+	
+	def initFromXML(self,node):
+		pass
+
+	def execute(self):
+		pass
+
+	def getSupportedPlatforms(self):
+		return self._supportedPlatforms
+
+	def getSupportedArchs(self):
+		return self._supportedArchs
+
+	def getSupportedLibraryTypes(self):
+		return self._supportedLibraryTypes
+
+	def getSupportedCompilers(self):
+		return self._supportedCompilers
+
+	def getOSPlatform(self):
+		return self._osplatform
+
+	def getOSArch(self):
+		return self._osarch
+	
+	def getOSCompiler(self):
+		return self._oscompiler
+
+	def getDepManPath(self):
+		dr = os.getenv("DEPMAN_REPO")
+		if not dr is None:
+			return dr;
+		if sys.platform == "linux2" or sys.platform == "linux1":
+			dr = os.getenv("HOME")+os.path.sep+".depman"
+			return dr;
+		if sys.platform == "win32" or sys.platform == "win64":
+			#ex: c:\documents and setting\user\DepMan
+			dr = os.getenv("USERPROFILE")+os.path.sep+"DepMan"
+			return dr;
+		if sys.platform == "darwin":
+			dr = os.path.sep + "Developer" + os.path.sep + "DepMan"
+			return dr;
+		return None
+	
+	def getDepManDataPath(self):
+		return self._depmanDataPath
+
+PlugInManager().registerPlugIn("DepManPlugIn",DepManPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CompileSolutionPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CompileSolutionPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/CompileSolutionPlugIn.py	(revision 29090)
@@ -0,0 +1,157 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+import sys
+
+class CompileSolutionPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._targetType = "Release" # only vs7/vs8 compilers
+		self._projectPath = ""
+		self._install = False
+		self._projectName = ""
+		self._projectGenerationPath = ""
+		self._supportedCompilers = dict()
+		self._supportedCompilers["vs8"]="devenv.exe"
+		self._supportedCompilers["vs7"]="devenv.exe"
+		self._supportedCompilers["gcc4"]="make"
+		self._supportedCompilers["gcc3"]="make"
+		self._compiler = ""
+		
+
+	def init(self):
+		self.addGoal("compile-solution", "Compiles the solution based on Makefiles or VisualStudio for Win/Linux/Mac")
+		self.addGoalOption("compile-solution", "--project-path", "sets the path of the project.")
+		self.addGoalOption("compile-solution", "--project-gen-path", "sets the path of the Makefiles/VS build files. Default: ${project-path}/BMCMake")
+		self.addGoalOption("compile-solution", "--project-name", "sets the name of the project. If not given it uses the name of the project directory.")
+		self.addGoalOption("compile-solution", "--install", "Executes target install after compilation.")
+		self.addGoalOption("compile-solution", "--compiler", "Forces the compiler. If not try to determine using current platform\n" +
+															"Supported Compilers:\n" + 
+															str(self._supportedCompilers))
+		execute = False
+		if self._arguments.read("compile-solution"):
+			execute = True
+		if execute:
+			args = [""]
+			if self._arguments.read("--project-path", args):
+				self._projectPath=args[0]
+				
+			args = [""]
+			if self._arguments.read("--project-gen-path", args):
+				self._projectGenerationPath=args[0]
+		
+			args = [""]
+			if self._arguments.read("--project-name", args):
+				self._projectName=args[0]
+
+			args = [""]
+			if self._arguments.read("--compiler", args):
+				if args[0] in self._supportedCompilers:
+					self._compiler=args[0]
+
+			if self._arguments.read("--install"):
+				self._install=True
+				
+			self.setExecute(True)
+			
+	def initFromXML(self, node):
+		if node.localName=="compile-solution":
+			if node.hasAttributes():
+				if node.attributes.has_key("project-path"):
+					self._projectPath = node.attributes.get("project-path").value
+				if node.attributes.has_key("project-gen-path"):
+					self._projectGenerationPath = node.attributes.get("project-gen-path").value
+				if node.attributes.has_key("project-name"):
+					self._projectName = node.attributes.get("project-name").value
+				if node.attributes.has_key("compiler"):
+					value = node.attributes.get("compiler").value
+					if args[0] in self._supportedCompilers:
+						self._compiler = value
+ 				if node.attributes.has_key("install"):
+					value = node.attributes.get("install").value 
+					if value == "True" or value == "true":
+						self._install = True
+										
+	def execute(self):
+		dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if dmplugin == None:
+			self.reportError("DepMan PlugIn not found")
+			return False
+		if self._projectPath=="":
+			self.reportError("Missing required project path option")
+			return False
+			
+		self._projectPath = os.path.abspath(self._projectPath)
+		if self._compiler=="":
+			self._compiler = dmplugin.getOSCompiler()
+	
+		if self._projectName == "":
+			self._projectName = os.path.basename(self._projectPath)
+			
+		if self._projectGenerationPath == "":
+			self._projectGenerationPath = os.path.join(self._projectPath, "BMCMake")
+		else:
+			self._projectGenerationPath = os.path.abspath(self._projectGenerationPath)
+		
+		print "Executing Plugin:" + str(self.__class__)
+		platform = dmplugin.getOSPlatform()
+		if platform == "linux" or platform == "mac":
+			self.__executeUnix()
+		else:
+			self.__executeVS()	
+		return True
+
+	def __executeUnix(self):
+		#make install
+		print "CPUs Detected:" + str(self.__cpuCount())
+		cmdCompiler = self._supportedCompilers[self._compiler] + " -j"+str(self.__cpuCount()) 
+		if self._install:	
+			cmdCompiler += " install"
+		olddir = os.getcwd()
+		os.chdir(self._projectGenerationPath)
+		os.system(cmdCompiler)
+		os.chdir(olddir)	
+
+	def __executeVS(self):
+		#devenv.exe /build Release /project INSTALL ../CMake/libjosg.sln
+		cmdCompiler = self._supportedCompilers[self._compiler]
+		cmdCompiler += " " + self._projectName + ".sln"
+		cmdCompiler += " /build Release"
+		if self._install:	
+			cmdCompiler += " /project INSTALL"
+		else:
+			cmdCompiler += " /project ALL_BUILD"
+		olddir = os.getcwd()
+		os.chdir(self._projectGenerationPath)
+		os.system(cmdCompiler)
+		os.chdir(olddir)	
+		
+	def __cpuCount(self):
+	    '''
+	    Returns the number of CPUs in the system
+	    '''
+	    if sys.platform == 'win32':
+	        try:
+	            num = int(os.environ['NUMBER_OF_PROCESSORS'])
+	        except (ValueError, KeyError):
+	            pass
+	    elif sys.platform == 'darwin':
+	        try:
+	            num = int(os.popen('sysctl -n hw.ncpu').read())
+	        except ValueError:
+	            pass
+	    else:
+	        try:
+	            num = os.sysconf('SC_NPROCESSORS_ONLN')
+	        except (ValueError, OSError, AttributeError):
+	            pass
+	        
+	    if num >= 1:
+	        return num
+	    return 1
+
+
+PlugInManager().registerPlugIn("CompileSolutionPlugIn", CompileSolutionPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/SVNPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/SVNPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/SVNPlugIn.py	(revision 29090)
@@ -0,0 +1,79 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+
+class SVNPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._options = ['co','up', 'checkout', 'update']
+		self._option = ""
+		self._projectPath = ""
+		self._svnUrl = ""
+		
+
+	def init(self):
+		self.addGoal("svn", "This plugin is able to do checkout or update of a svn repository")
+		self.addGoalOption("svn","--option", "sets the option of subversion: "+ str(self._options))
+		self.addGoalOption("svn","--project-path", "sets the path of the project.")
+		self.addGoalOption("svn","--url", "sets the path of the url")
+		execute = False		
+		while self._arguments.read("svn"):
+			execute = True
+		if execute:
+			args = [""]
+			while self._arguments.read("--option",args):
+				self._option = args[0]
+
+			args = [""]
+			while self._arguments.read("--project-path",args):
+				self._projectPath=args[0]
+		
+			args = [""]
+			while self._arguments.read("--url",args):
+				self._svnUrl=args[0]
+				
+			self.setExecute(True)
+			
+	def initFromXML(self,node):
+		if node.localName=="svn":
+			if node.hasAttributes():
+				if node.attributes.has_key("option"):
+					self._option = node.attributes.get("option").value
+				if node.attributes.has_key("project-path"):
+					self._projectPath = node.attributes.get("project-path").value
+				if node.attributes.has_key("url"):
+					self._svnUrl = node.attributes.get("url").value
+										
+	def execute(self):
+		if self._option=="":
+			self.reportError("Missing svn option, use one of " + str(self._options))
+			return False
+		if self._option not in self._options:
+			self.reportError("not supported svn option, use one of " + str(self._options))
+			return False
+		if self._projectPath=="":
+			self.reportError("Missing required project path option")
+			return False
+		if self._option == "co" or self._option == "checkout":
+			if self._svnUrl == "":
+				self.reportError("Missing required svn url ption")
+				return False
+			
+		self._projectPath = os.path.abspath(self._projectPath)
+		projectName = os.path.basename(self._projectPath)
+		
+		print "Executing Plugin:" + str(self.__class__)
+		bmutil = BMUtil()
+		svnCommand = "svn " + self._option
+		if self._option in ['co', 'checkout']:
+			svnCommand += " " + self._svnUrl + " " + self._projectPath
+		else: 
+			if self._option in ['up', 'update']:
+				svnCommand += " " + self._projectPath
+		os.system(svnCommand)
+		return True
+	
+PlugInManager().registerPlugIn("SVNPlugIn",SVNPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCleanPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCleanPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCleanPlugIn.py	(revision 29090)
@@ -0,0 +1,76 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import os
+
+class DepManCleanPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self._delete_cache = False
+		self._default_repository = ""
+
+	def init(self):
+		self.addGoal("clean", "Cleans dependency files")
+		self.addGoalOption("clean","--all", "Cleans also cache files")
+	
+		isClean = False
+		if self._arguments.read("clean"):
+			self.setExecute(True)
+			isClean = True
+
+		if not isClean:
+			return	
+		
+		if self._arguments.read("--all"):
+			self._delete_cache = True	
+
+	def initFromXML(self,node):
+		if node.localName=="clean":
+			if node.hasAttributes():
+				if node.attributes.has_key("all"):
+					value = node.attributes.get("all").value
+					if value=="True" or value == "true":
+						self._delete_cache = True
+
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		return self.clean()
+
+	def clean(self):
+		self._dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if self._dmplugin == None:
+			self.reportError("PlugIn `depman` not found")
+			self.setExecute(False)
+			return
+		self._default_repository = self._dmplugin.getDepManPath()
+		#the extra parameter "all" enables dmn to clear the cache directory
+		print "* cleaning..."
+		util = BMUtil()
+		util.rmdir(self._default_repository+os.path.sep+"include")
+		util.rmdir(self._default_repository+os.path.sep+"lib")
+		util.rmdir(self._default_repository+os.path.sep+"bin")
+		util.rmdir(self._default_repository+os.path.sep+"share")
+		util.rmdir(self._default_repository+os.path.sep+"Frameworks")
+		if self._delete_cache:
+			util.rmdir(self._default_repository+os.path.sep+".cache")
+		return True
+	
+	def setDeleteCache(self,value):
+		self._delete_cache = value
+		
+	def getDeleteCache(self):
+		return self._delete_cache
+	
+	def setDefaultRepository(self,defrepo):
+		self._default_repository = defrepo
+		
+	def getDefaultRepository(self):
+		return self._default_repository
+
+
+		
+
+PlugInManager().registerPlugIn("DepManCleanPlugIn",DepManCleanPlugIn())
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManUpdatePlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManUpdatePlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManUpdatePlugIn.py	(revision 29090)
@@ -0,0 +1,232 @@
+#depman update plugin
+
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+import os
+
+
+class DepManUpdatePlugIn(IPlugIn):
+	
+	def __init__(self):
+		IPlugIn.__init__(self)
+		
+		self._must_Clean=True
+		self._isFromCache=False
+		self._isInteractive=True
+		self._xmlfile="depman.xml"
+		self._depmanNode = None
+		
+		self._defurl="http://murray.ai2.upv.es/depman"
+		
+	def init(self):
+		self.addGoal("update", "Update current project")
+		self.addGoalOption("update","--no-clean", "Do not perform a repository clean before update")
+		self.addGoalOption("update","--cache", "Cache is preferred")
+		self.addGoalOption("update","--remote", "Remote repository is preferred")
+		self.addGoalOption("update","--file", "Specifies a dependency xml file")
+				
+		isUpdate = False
+		if self._arguments.read("update"):
+			self.setExecute(True)
+			isUpdate = True
+
+		if not isUpdate:
+			return
+
+		if self._arguments.read("--no-clean"):
+			self._must_Clean = False
+			
+		if self._arguments.read("--cache"):
+			self._isInteractive=False
+			self._isFromCache = True
+		
+		if self._arguments.read("--remote"):
+			self._isInteractive=False
+			self._isFromCache = False
+		
+		args=[""]
+		if self._arguments.read("--file",args):
+			self._xmlfile=args[0]
+		
+	def initFromXML(self,node):
+		if node.localName == "update":
+			if node.hasAttributes():
+				if node.attributes.has_key("file"):
+					self.loadXMLFile(node.attributes.get("file").value)
+				if node.attributes.has_key("no-clean"):
+					value = node.attributes.get("no-clean").value
+					if value == "True" or value == "true":
+						self._must_Clean = True
+				foundCache = False
+				if node.attributes.has_key("cache"):
+					value = node.attributes.get("cache").value
+					if value == "True" or value == "true":
+						self._isFromCache = True
+				if node.attributes.has_key("remote") and not foundCache:
+					value = node.attributes.get("remote").value
+					if value == "True" or value == "true":
+						self._isFromCache = False
+			self._isInteractive = False
+		else:	
+			self._depmanNode = node
+		
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		return self.update()
+
+
+
+	def update(self):
+		
+		if self._must_Clean:
+			self._dmclean = PlugInManager().getPlugInInstance("DepManCleanPlugIn")
+			if self._dmclean == None:
+				self.reportError("PlugIn `depman clean` not found")
+				return
+			delete_cache = self._dmclean.getDeleteCache()
+			self._dmclean.setDeleteCache(False)
+			self._dmclean.clean()	
+			self._dmclean.setDeleteCache(delete_cache)
+
+		if self._depmanNode == None:
+			self.loadXMLFile(self._xmlfile)
+		unPackList = self.getDependencies(self._depmanNode)
+
+		
+		#once the xml is parsed and files downloaded, lets unpack them
+		self.unpack(unPackList)
+	
+	def getDependencies(self,node):
+		self._dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if self._dmplugin == None:
+			self.reportError("PlugIn `depman` not found")
+			return
+		
+		self._dmget = PlugInManager().getPlugInInstance("DepManGetPlugIn")
+		if self._dmget == None:
+			self.reportError("PlugIn `depman get` not found")
+			return
+		
+		group="none"
+		artifact="none"
+		version="0"
+		platform="none"
+		compiler="none"
+		arch="none"
+		ltype="none"
+		
+		#os default values
+		defplatform=self._dmplugin.getOSPlatform()
+		defarch=self._dmplugin.getOSArch()
+		defcompiler=self._dmplugin.getOSCompiler()
+		
+		#hardcoded default url
+		#defurl=default_url
+		
+		defurl=self._defurl
+		
+		unPackList = []
+		if node.hasAttributes():
+		    if node.attributes.has_key("url"):
+		        defurl=node.attributes.get("url").value
+		
+		for i in node.childNodes:
+		    if i.localName=="dependencies":
+		        url=defurl
+		        #os default values
+		        defplatform=self._dmplugin._osplatform
+		        defarch=self._dmplugin._osarch
+		        defcompiler=self._dmplugin._oscompiler
+		        
+		        if i.hasAttributes():
+		            if i.attributes.has_key("platform"):
+		                defplatform=i.attributes.get("platform").value
+		            if i.attributes.has_key("architecture"):
+		                defarch=i.attributes.get("architecture").value
+		            if i.attributes.has_key("compiler"):
+		                defcompiler=i.attributes.get("compiler").value
+		            if i.attributes.has_key("url"):
+		                url=i.attributes.get("url").value
+		        
+		        list_of_platforms=defplatform.split(",")
+		        #depedencies platform checking
+		        #we just go on whenever host os or all matches
+		        
+		        if len(list_of_platforms)>0 and self._dmplugin.getOSPlatform() not in list_of_platforms and "all" not in list_of_platforms:
+		            invalid_platform=True
+		        else:
+		            invalid_platform=False
+		            defplatform=self._dmplugin.getOSPlatform()
+		        
+		        del list_of_platforms[:]
+		        
+		        #print "Url: ",url
+		        if not invalid_platform:
+		            for j in i.childNodes:
+		                
+		                if j.localName=="dependency":
+		                    #set default values
+		                    platform=defplatform
+		                    arch=defarch
+		                    compiler=defcompiler
+		                    group="none"
+		                    artifact="none"
+		                    version="0"
+		                    ltype="none"
+		                    durl = url
+		                    if j.hasAttributes():
+		                        if j.attributes.has_key("url"):
+		                            durl=j.attributes.get("url").value
+		                    
+		                    for h in j.childNodes:
+		                        if h.localName=="group":
+		                            group=h.childNodes[0].nodeValue
+		                        if h.localName=="artifact":
+		                            artifact=h.childNodes[0].nodeValue
+		                        if h.localName=="version":
+		                            version=h.childNodes[0].nodeValue
+		                        if h.localName=="platform":
+		                            platform=h.childNodes[0].nodeValue
+		                        if h.localName=="compiler":
+		                            compiler=h.childNodes[0].nodeValue
+		                        if h.localName=="architecture":
+		                            arch=h.childNodes[0].nodeValue
+		                        if h.localName=="type":
+		                            ltype=h.childNodes[0].nodeValue
+		                    self._dmget.setURL(durl)
+		                    self._dmget.setGroup(group)
+		                    self._dmget.setArtifact(artifact)
+		                    self._dmget.setVersion(version)
+		                    self._dmget.setPlatform(platform)
+		                    self._dmget.setCompiler(compiler)
+		                    self._dmget.setArch(arch)
+		                    self._dmget.setLibraryType(ltype)
+		                    #prevents downloading of not matching platforms but overrided
+		                    if not self._isInteractive:
+		                        if self._isFromCache:
+		                            self._dmget.setForceCache()
+		                        else:
+		                            self._dmget.setForceRemote()
+		                    self._dmget.get(unPackList)
+		return unPackList
+	
+	def unpack(self,unPackList):
+		sep=os.path.sep
+		dmutil = BMUtil()
+		for file in unPackList:
+			tmpstr=file[file.rfind(sep)+1:]
+			print "* unpacking ",tmpstr
+			dmutil.untargz(file,self._dmplugin.getDepManPath())
+			
+	def setForceCache(self):
+		self._isFromCache = True
+		self._isInteractive = False
+		
+	def setForceRemote(self):
+		self._isFromCache = False
+		self._isInteractive = False
+
+		#after unpacking, the unpack list is freed
+		
+PlugInManager().registerPlugIn("DepManUpdatePlugIn",DepManUpdatePlugIn())
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCreatePlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCreatePlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/DepManCreatePlugIn.py	(revision 29090)
@@ -0,0 +1,336 @@
+#depman create plugin
+
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import string
+import shutil
+import os
+import sys
+import subprocess
+
+class DepManCreatePlugIn(IPlugIn):
+	
+	def __init__(self):
+		IPlugIn.__init__(self)
+		
+		self._path="."
+		self._group=""
+		self._artifact=""
+		self._version=""
+		self._platform="default"
+		self._arch="default"
+		self._compiler="default"
+		self._ltype=""
+		self._upload=False
+		self._is_Interactive=True
+		self._xmlfile = ""
+		self._packageNode = None
+		
+		self._default_ssh="murray.ai2.upv.es"
+		self._default_login="depman"
+		self._default_destdir = "/projects/AI2/www-aliases/depman/"
+		
+		
+	def init(self):
+		self.addGoal("create", "Create an artifact")
+		self.addGoalOption("create","--path", "Specifies source directory")
+		self.addGoalOption("create","--group", "Specifies artifact group name")
+		self.addGoalOption("create","--artifact", "Specifies artifact name")
+		self.addGoalOption("create","--version", "Specifies artifact version")
+		self.addGoalOption("create","--platform", "Specifies artifact OS platform")
+		self.addGoalOption("create","--arch", "Specifies artifact hardware architecture")
+		self.addGoalOption("create","--compiler", "Specifies artifact compiler version")
+		self.addGoalOption("create","--ltype", "Specifies library type if needed")
+		self.addGoalOption("create","--upload", "Whenever the artifact must be uploaded or not")
+		self.addGoalOption("create","--from-xml", "Uses the given depman.xml file to create the package")
+		
+		isCreate = False
+		if self._arguments.read("create"):
+			self.setExecute(True)
+			isCreate = True
+
+		if not isCreate:
+			return
+
+		args=[""]
+		use_xml=False
+		if self._arguments.read("--from-xml",args):
+			self._xmlfile=args[0]
+			use_xml=True
+			
+		if use_xml:
+			self.loadXMLFile(self._xmlfile)
+			
+			
+		args=[""]
+		if self._arguments.read("--path",args):
+			self._path=args[0]
+		
+		args=[""]
+		if self._arguments.read("--group",args):
+			self._group=args[0]
+			self._is_Interactive=False
+			
+		args=[""]
+		if self._arguments.read("--artifact",args):
+			self._artifact=args[0]
+			self._is_Interactive=False	
+			
+		args=[""]
+		if self._arguments.read("--version",args):
+			self._version=args[0]
+			self._is_Interactive=False	
+			
+			
+		args=[""]
+		if self._arguments.read("--platform",args):
+			self._platform=args[0]
+			self._is_Interactive=False	
+		
+		args=[""]
+		if self._arguments.read("--arch",args):
+			self._arch=args[0]
+			self._is_Interactive=False
+
+		args=[""]
+		if self._arguments.read("--compiler",args):
+			self._compiler=args[0]
+			self._is_Interactive=False
+			
+		args=[""]
+		if self._arguments.read("--ltype",args):
+			self._ltype=args[0]
+			self._is_Interactive=False	
+			
+		if self._arguments.read("--upload"):
+			self._upload=True	
+
+
+	def initFromXML(self,node):
+		if node.localName == "create":
+			if node.hasAttributes():
+				if node.attributes.has_key("from-xml"):
+					self._xmlfile=node.attributes.get("from-xml").value
+					self.loadXMLFile(self._xmlfile)
+				if node.attributes.has_key("path"):
+					self._path = node.attributes.get("path").value
+				if node.attributes.has_key("upload"):
+					value = node.attributes.get("upload").value
+					if value =="True" or value =="true":
+						self._upload = True
+
+		else:
+			if node.localName == "depman":
+				self._packageNode = node
+				self._is_Interactive=False
+		
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		return self.create()
+	
+	def create(self):
+		
+		self._dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if self._dmplugin == None:
+			self.reportError("PlugIn `depman` not found")
+			return False
+		
+		#user questions
+		if self._is_Interactive:
+			self._group=raw_input("Group: ")
+			
+			self._artifact=raw_input("Artifact: ")
+			
+			self._version=raw_input("Version: ")
+			
+			tmpstr=""
+			for p in self._dmplugin.getSupportedPlatforms():
+				tmpstr=tmpstr+p+" "
+			print "( ",tmpstr,")"
+			tmstr="Platform [*]:"
+			self._platform=raw_input(string.replace(tmstr,"*",self._dmplugin.getOSPlatform()))
+			if len(self._platform)==0:
+				self._platform=self._dmplugin.getOSPlatform()
+			
+			tmpstr=""
+			for p in self._dmplugin.getSupportedCompilers():
+				tmpstr=tmpstr+p+" "
+			print "( ",tmpstr,")"
+			tmstr="Compiler [*]:"
+			self._compiler=raw_input(string.replace(tmstr,"*",self._dmplugin.getOSCompiler()))
+			if len(self._compiler)==0:
+				self._compiler=self._dmplugin.getOSCompiler()
+				
+			tmpstr=""
+			for p in self._dmplugin.getSupportedArchs():
+				tmpstr=tmpstr+p+" "
+			print "( ",tmpstr,")"
+			tmstr="Architecture [*]:"
+			self._arch=raw_input(string.replace(tmstr,"*",self._dmplugin.getOSArch()))
+			if len(self._arch)==0:
+				self._arch=self._dmplugin.getOSArch()
+			
+			tmpstr=""
+			for p in self._dmplugin.getSupportedLibraryTypes():
+				tmpstr=tmpstr+p+" "
+			print "( ",tmpstr,")"
+			self._ltype=raw_input("Library Type: ")
+			
+			upload_response = raw_input("Upload to server? (y/n): ")
+			if upload_response == "y" or upload_response == "yes":
+				self._upload=True
+		
+		if self._packageNode != None:
+			for n in self._packageNode.childNodes:
+				if n.localName=="package":
+					processPackage = True
+					if n.hasAttributes():
+						if n.attributes.has_key("platform"):
+							values = n.attributes.get("platform").value.split(",")
+							if self._dmplugin.getOSPlatform() in values:
+								processPackage = True
+							else:
+								processPackage = False
+					if processPackage:
+						print "Processing for platform..."
+						for p in n.childNodes:
+							if p.localName=="group":
+								self._group=p.childNodes[0].nodeValue
+							if p.localName=="artifact":
+								self._artifact=p.childNodes[0].nodeValue
+							if p.localName=="version":
+								self._version=p.childNodes[0].nodeValue
+							if p.localName=="platform":
+								self._platform=p.childNodes[0].nodeValue
+							if p.localName=="compiler":
+								self._compiler=p.childNodes[0].nodeValue
+							if p.localName=="arch":
+								self._arch=p.childNodes[0].nodeValue
+							if p.localName=="libraryType":
+								self._ltype=p.childNodes[0].nodeValue
+							
+							if p.localName =="upload":
+								#TODO: Maybe upload should be an external plugin
+								for k in p.childNodes:
+									if k.localName == "sshserver":
+										self._default_ssh = k.childNodes[0].nodeValue
+									if k.localName == "destdir":
+										self._default_destdir = k.childNodes[0].nodeValue
+									if k.localName == "username":
+										self._default_login = k.childNodes[0].nodeValue
+						
+		if self._group == "":
+			self.reportError("Group cannot be empty")
+			return False
+		if self._artifact == "":
+			self.reportError("Artifact cannot be empty")
+			return False
+		if self._version == "":
+			self.reportError("Version cannog be empty")
+			return 
+		self._group=self._group.replace(".","/")
+		if self._platform=="default":
+			self._platform=self._dmplugin.getOSPlatform()
+		if self._compiler=="default":
+			self._compiler=self._dmplugin.getOSCompiler()
+		if self._arch=="default":
+			self._arch=self._dmplugin.getOSArch()
+			
+		
+		#let's check user input consistency
+		
+		if self._platform not in self._dmplugin.getSupportedPlatforms():
+			self.reportError("Platform not supported: " + self._platform + ". Supported platforms:" + str(self._dmplugin.getSupportedPlatforms()))
+			return False
+		
+		if self._compiler not in self._dmplugin.getSupportedCompilers():
+			self.reportError("Compiler not supported: " + self._compiler + ". Supported compilers:" +str(self._dmplugin.getSupportedCompilers()))
+			return False
+		
+		if self._arch not in self._dmplugin.getSupportedArchs():
+			self.reportError("Architecture not supported: " + self._arch + ". Supported archs:" +str(self._dmplugin.getSupportedArchs()))
+			return False
+		
+		if self._ltype not in self._dmplugin.getSupportedLibraryTypes():
+			self.reportError("Library type not supported: " + self._ltype + ". Supported libraries:" +str(self._dmplugin.getSupportedLibraryTypes()))
+			return False
+		
+		#artifact and md5 generation
+		
+		file_name=self._artifact+"-"+self._version+"-"+self._platform+"-"+self._compiler+"-"+self._arch+"-"+self._ltype
+		
+		
+		tarname=file_name+".tar.gz"
+		md5name=tarname+".md5"
+		dmfile=file_name+".xml"
+		
+		dmutil = BMUtil()
+		
+		tmpdir=self._dmplugin.getDepManPath()+os.path.sep+".cache"+os.path.sep+self._group+os.path.sep+self._artifact+os.path.sep+self._version+os.path.sep+self._platform+os.path.sep+self._compiler+os.path.sep+self._arch+os.path.sep+self._ltype
+		
+		dmutil.mkdir(tmpdir)
+		print tmpdir+os.path.sep+tarname,self._path
+		dmutil.targz(os.path.join(tmpdir,tarname),self._path)
+		#print "targz ",tmpdir+os.path.sep+tarname
+		dmutil.createMD5(tmpdir+os.path.sep+tarname,tmpdir+os.path.sep+md5name)
+		if self._xmlfile != "":
+			shutil.copyfile(self._xmlfile,tmpdir+os.path.sep+dmfile)	
+		print "Artifact " + tarname + " created in:\n" + tmpdir
+		
+		if self._upload:
+			dmutil.rmdir(".dmn_tmp") # Prevent for uploading bad previous compilations!
+			sshtmpdir=".dmn_tmp"+os.path.sep+self._group+os.path.sep+self._artifact+os.path.sep+self._version+os.path.sep+self._platform+os.path.sep+self._compiler+os.path.sep+self._arch+os.path.sep+self._ltype
+			dmutil.mkdir(sshtmpdir)
+			shutil.copyfile(tmpdir+os.path.sep+tarname,sshtmpdir+os.path.sep+tarname)
+			shutil.copyfile(tmpdir+os.path.sep+md5name,sshtmpdir+os.path.sep+md5name)
+			if self._xmlfile != "":
+				shutil.copyfile(tmpdir+os.path.sep+dmfile,sshtmpdir+os.path.sep+dmfile)	
+			url = self._default_ssh;
+			destdir = self._default_destdir
+			login = self._default_login
+			
+			if self._is_Interactive:
+				tmstr="SSH Server [*]:"
+				url=raw_input(string.replace(tmstr,"*",self._default_ssh))
+				if len(url)==0:
+					url=self._default_ssh
+				
+				tmstr="Destination Directory [*]:"
+				destdir=raw_input(string.replace(tmstr,"*",self._default_destdir))
+				if len(destdir)==0:
+					destdir=self._default_destdir
+			
+				tmstr="Login [*]:"
+				login=raw_input(string.replace(tmstr,"*",self._default_login))
+				if len(login)==0:
+					login=self._default_login
+			
+			download_dir = self._group+"/"+self._artifact+"/"+self._version+"/"+self._platform+"/"+self._compiler+"/"+self._arch+"/"+self._ltype
+			
+			print "* Uploading ",tarname
+			print "* Uploading ",md5name
+			
+			#scp
+			base_ssh=destdir
+			url_ssh=url
+			scpcommand = "scp"
+			pscppath = ""
+			if sys.platform == "win32":
+				scpcommand=self._dmplugin.getDepManDataPath()+os.path.sep+"win32"+os.path.sep+"pscp.exe"
+				scpcommand  = '"'+os.path.normpath(scpcommand)+'"'
+			cmdstr=scpcommand +" -r "+".dmn_tmp"+os.path.sep+"*"+" "+login+"@"+url_ssh+":"+base_ssh
+			
+			print cmdstr
+			os.system(cmdstr)
+			
+			#scp
+			
+			dmutil.rmdir(".dmn_tmp")
+			
+				
+
+
+
+PlugInManager().registerPlugIn("DepManCreatePlugIn",DepManCreatePlugIn())		
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/BuildManPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/BuildManPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmplugins/BuildManPlugIn.py	(revision 29090)
@@ -0,0 +1,85 @@
+from bmbase.IPlugIn import IPlugIn
+from bmbase.PlugInManager import PlugInManager
+from bmcore.BMUtil import BMUtil
+from xml.dom import minidom
+import os
+
+class BuildManPlugIn(IPlugIn):
+	def __init__(self):
+		IPlugIn.__init__(self)
+		self.reset()
+	
+	def getFile(self):
+		return self._file
+	
+	def getGoalList(self):
+		return self._goalList
+	
+	def reset(self):
+		self._goalList = []
+		self._file = "buildman.xml"
+
+	def init(self):
+		self.addGoal("buildman", "executes goals from a buildman file")
+		self.addGoalOption("buildman","--file", "Sets the file to execute, otherwise search for buildman.xml")
+		
+		self._dmplugin = PlugInManager().getPlugInInstance("DepManPlugIn")
+		if self._dmplugin == None:
+			self.reportError("PlugIn `depman` not found")
+			return
+		isBuildMan = False
+		while self._arguments.read("buildman"):
+			self.setExecute(True)
+			isBuildMan = True
+
+		if not isBuildMan:
+			return	
+		
+		args=[""]
+		while self._arguments.read("--file",args):
+			self._file = args[0]	
+
+	def initFromXML(self,node):	
+		if node.localName=="buildman":
+				for g in node.childNodes:
+					if g.localName == "goals":
+						addGoals = False
+						if g.hasAttributes():
+							if g.attributes.has_key("platform"):
+								value = g.attributes.get("platform").value
+								platforms = value.split(",")
+								for platform in platforms:
+									if platform == self._dmplugin.getOSPlatform():
+										addGoals = True
+						else:
+							addGoals = True
+						if addGoals:
+							for goalNode in g.childNodes:
+								#print goalNode.localName, " in ", PlugInManager().supportedGoals(), "?"
+								if goalNode.localName=="buildman":
+									if goalNode.hasAttributes():
+										if goalNode.attributes.has_key("file"):
+											self.loadXMLFile(goalNode.attributes.get("file").value)
+								else:
+									if goalNode.localName in PlugInManager().supportedGoals():
+										self._goalList.append(goalNode)
+
+	def execute(self):
+		print "Executing Plugin:" + str(self.__class__)
+		return self.buildman()
+
+	def buildman(self):
+		self.loadXMLFile(self._file)
+		for goal in self._goalList:
+			plugin = PlugInManager().getPlugInInstanceByGoal(goal.localName)
+			plugin.initFromXML(goal)
+			plugin.execute()
+			if plugin.error():
+				for error in plugin.getErrorMessages():
+					self.reportError(error)
+				return False
+		return True
+
+
+PlugInManager().registerPlugIn("BuildManPlugIn",BuildManPlugIn())	
+		
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/TestBuildManPlugIn.py
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/TestBuildManPlugIn.py	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/TestBuildManPlugIn.py	(revision 29090)
@@ -0,0 +1,44 @@
+import unittest
+from bmcore import *
+from bmbase.PlugInManager import PlugInManager 
+
+class TestBuildManPlugIn(unittest.TestCase):
+
+	def testArguments(self):
+		arguments = ArgumentParser(['bmn.py','buildman','--file','bmtests/data/buildman.xml'])
+		bm = BuildMan(arguments)
+		plugin = PlugInManager().getPlugInInstance("BuildManPlugIn")
+		self.assertEqual('bmtests/data/buildman.xml',plugin.getFile())
+		
+	def testGoals(self):
+		arguments = ArgumentParser(['bmn.py','buildman','--file','bmtests/data/buildman.xml'])
+		bm = BuildMan(arguments)
+		plugin = PlugInManager().getPlugInInstance("BuildManPlugIn")
+		plugin._goalList = []
+		plugin.loadXMLFile(plugin.getFile())
+		goals = ['delete','svn','clean','update','create-solution','compile-solution','create']
+		i = 0
+		for goal in plugin.getGoalList():
+			self.assertEqual(goal.localName,goals[i])
+			i+=1
+		
+		
+	def testInitFromXML(self):
+		arguments = ArgumentParser(['bmn.py','buildman','--file','bmtests/data/batch-buildman.xml'])
+		bm = BuildMan(arguments)
+		plugin = PlugInManager().getPlugInInstance("BuildManPlugIn")
+		plugin._goalList = []
+		plugin.loadXMLFile(plugin.getFile())
+		goals = ['delete','svn','clean','update','create-solution','compile-solution','create']
+		i = 0
+		for goal in plugin.getGoalList():
+			self.assertEqual(goal.localName,goals[i])
+			i+=1
+			
+	def testExecute(self):
+		arguments = ArgumentParser(['bmn.py','buildman','--file','bmtests/data/batch-buildman.xml'])
+		bm = BuildMan(arguments)
+		plugin = PlugInManager().getPlugInInstance("BuildManPlugIn")
+		plugin._goalList = []
+		plugin.execute()
+		
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/__init__.py
===================================================================
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/batch-buildman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/batch-buildman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/batch-buildman.xml	(revision 29090)
@@ -0,0 +1,5 @@
+<buildman>
+	<goals>
+		<buildman file="bmtests/data/buildman.xml" />
+	</goals>
+</buildman>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/buildman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/buildman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/buildman.xml	(revision 29090)
@@ -0,0 +1,30 @@
+<buildman>
+	<goals platform="linux,mac">
+		<delete path="/tmp/osgVP" />
+	</goals>
+	<goals platform="win">
+		<delete path="./osgVP" />
+	</goals>
+	<goals>
+		<svn option="co" url="https://josgplanets.ai2.upv.es/svn/josgplanets/trunk/libjni-osgvp" project-path="/tmp/osgVP" />
+		<clean all="False" />
+		<update file="/tmp/osgVP/build-scripts/depman.xml" />
+	</goals>
+	<goals platform="linux,mac">
+		<create-solution project-path="/tmp/osgVP" generator="unix" install="/tmp/osgVP-install" />
+		<compile-solution project-path="/tmp/osgVP" project-name="libjosg" install="True" />
+	</goals>
+	<goals platform="win">
+		<create-solution project-path="./osgVP" project-gen-path="./osgVP/CMake-VS7" generator="vs7" install="./osgVP-install" />
+		<compile-solution project-path="./osgVP" project-name="libjosg" install="True" />
+	</goals>
+	<goals platform="linux">
+		<create from-xml="/tmp/osgVP/build-scripts/depman.xml" path="/tmp/binaries/linux32" />
+	</goals>
+	<goals platform="mac">
+		<create from-xml="/tmp/osgVP/build-scripts/depman.xml" path="/tmp/binaries/mac" />
+	</goals>
+	<goals platform="win">
+		<create from-xml="./osgVP/build-scripts/depman.xml" path="./osgVP/binaries/win32" />
+	</goals>
+</buildman>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/depman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/depman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/bin/bmtests/data/depman.xml	(revision 29090)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<depman>
+	<package>
+		<group>es.upv.ai2</group><!-- requerido -->
+		<artifact>buildman-tests</artifact><!-- requerido -->
+		<version>1.0-SNAPSHOT</version><!-- requerido -->
+		<platform>all</platform><!-- no requerido pero se puede sobreescribir -->
+		<compiler>all</compiler><!-- idem -->
+		<arch>all</arch><!-- idem -->
+		<libraryType>none</libraryType><!-- requerido -->
+
+		<!--<upload> --><!-- Esta opciÃ³n usarÃ­a los valores asignados abajo, no son requeridos y se puede sobreescribir solo algunos de ellos -->
+		<!--	<sshserver>murray.ai2.upv.es</sshserver> -->
+		<!-- 	<destdir>/projects/AI2/www-aliases/depman/</destdir> -->
+		<!-- 	<username>depman</username> -->
+		<!--</upload> -->
+	</package>
+	<dependencies>
+		<dependency>
+			<group>es.upv.ai2</group>
+			<artifact>libjosg</artifact>
+			<version>2.0-SNAPSHOT</version>
+			<type>dynamic</type>
+		</dependency>
+	</dependencies>
+</depman>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDirectX.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDirectX.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDirectX.cmake	(revision 29090)
@@ -0,0 +1,15 @@
+# DirectX - DirectX SDK
+#
+# DIRECTX_FOUND
+# DIRECTX_INCLUDE_DIR
+
+IF(WIN32)
+
+	FIND_PATH(DIRECTX_INCLUDE_DIR d3d.h ${DEPMAN_PATH}/include)
+	MARK_AS_ADVANCED(DIRECTX_INCLUDE_DIR)
+	IF(DIRECTX_INCLUDE_DIR)
+		SET(DIRECTX_FOUND 1)
+	ENDIF(DIRECTX_INCLUDE_DIR)
+
+ENDIF(WIN32)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindJOSG.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindJOSG.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindJOSG.cmake	(revision 29090)
@@ -0,0 +1,51 @@
+FIND_PATH(JOSG_INCLUDE_DIR josgcore/Export.hpp
+    ${JOSG_INCLUDE_DIR}/include
+    NO_DEFAULT_PATH
+)
+
+IF(NOT JOSG_INCLUDE_DIR)
+    FIND_PATH(JOSG_INCLUDE_DIR josgcore/Export.hpp
+        PATHS ${CMAKE_PREFIX_PATH}  
+        PATH_SUFFIXES include
+    )
+ENDIF(NOT JOSG_INCLUDE_DIR)
+
+IF(NOT JOSG_INCLUDE_DIR)
+    FIND_PATH(JOSG_INCLUDE_DIR josgcore/Export.hpp
+        ~/Library/Frameworks
+        /Library/Frameworks
+        /usr/local/include
+        /usr/include
+        /sw/include # Fink
+        /opt/local/include # DarwinPorts
+        /opt/csw/include # Blastwave
+        /opt/include
+    )
+ENDIF(NOT JOSG_INCLUDE_DIR)
+
+MARK_AS_ADVANCED(JOSG_INCLUDE_DIR)
+
+FIND_LIBRARY(JOSGCORE_LIBRARY 
+	NAMES josgcore
+	PATHS 
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(JOSGCORE_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARY_DEBUG} ${OPENTHREADS_LIBRARY_DEBUG})	
+
+SET(JOSGCORE_FOUND "NO")
+IF(JOSGCORE_LIBRARY)
+  SET(JOSGCORE_FOUND "YES")
+ENDIF(JOSGCORE_LIBRARY)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOkodeFrameworks.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOkodeFrameworks.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOkodeFrameworks.cmake	(revision 29090)
@@ -0,0 +1,37 @@
+# Locate Okode::Frameworks
+# This module defines
+# OKODEFRAMEWORKS_LIBRARIES
+# OKODEFRAMEWORKS_LIBRARIES_DEBUG
+# OKODEFRAMEWORKS_FOUND, if false, do not try to link to Okode::Frameworks
+# OKODEFRAMEWORKS_INCLUDE_DIR, where to find the headers
+
+FIND_PATH(OKODEFRAMEWORKS_INCLUDE_DIR okode/base/Referenced.hpp)
+
+FIND_LIBRARY(OKODEFRAMEWORKS_BASE_LIBRARY okode.base)
+FIND_LIBRARY(OKODEFRAMEWORKS_BASE_LIBRARY_DEBUG okode.based)
+
+FIND_LIBRARY(OKODEFRAMEWORKS_MEDIA_LIBRARY okode.media)
+FIND_LIBRARY(OKODEFRAMEWORKS_MEDIA_LIBRARY_DEBUG okode.mediad)
+
+FIND_LIBRARY(OKODEFRAMEWORKS_NODEKIT_LIBRARY okode.nodekit)
+FIND_LIBRARY(OKODEFRAMEWORKS_NODEKIT_LIBRARY_DEBUG okode.nodekitd)
+
+SET(OKODEFRAMEWORKS_FOUND "NO")
+IF(OKODEFRAMEWORKS_INCLUDE_DIR AND OKODEFRAMEWORKS_BASE_LIBRARY AND OKODEFRAMEWORKS_BASE_LIBRARY_DEBUG AND OKODEFRAMEWORKS_MEDIA_LIBRARY AND OKODEFRAMEWORKS_MEDIA_LIBRARY_DEBUG AND OKODEFRAMEWORKS_NODEKIT_LIBRARY AND OKODEFRAMEWORKS_NODEKIT_LIBRARY_DEBUG)
+
+	SET(OKODEFRAMEWORKS_FOUND "YES")
+	SET(OKODEFRAMEWORKS_LIBRARIES
+		${OKODEFRAMEWORKS_BASE_LIBRARY}
+		${OKODEFRAMEWORKS_MEDIA_LIBRARY}
+		${OKODEFRAMEWORKS_NODEKIT_LIBRARY}
+	)
+	SET(OKODEFRAMEWORKS_LIBRARIES_DEBUG
+		${OKODEFRAMEWORKS_BASE_LIBRARY_DEBUG}
+		${OKODEFRAMEWORKS_MEDIA_LIBRARY_DEBUG}
+		${OKODEFRAMEWORKS_NODEKIT_LIBRARY_DEBUG}
+	)
+	MARK_AS_ADVANCED(OKODEFRAMEWORKS_INCLUDE_DIR OKODEFRAMEWORKS_BASE_LIBRARY OKODEFRAMEWORKS_MEDIA_LIBRARY OKODEFRAMEWORKS_NODEKIT_LIBRARY)
+	MARK_AS_ADVANCED(OKODEFRAMEWORKS_BASE_LIBRARY_DEBUG OKODEFRAMEWORKS_MEDIA_LIBRARY_DEBUG OKODEFRAMEWORKS_NODEKIT_LIBRARY_DEBUG)
+
+ENDIF(OKODEFRAMEWORKS_INCLUDE_DIR AND OKODEFRAMEWORKS_BASE_LIBRARY AND OKODEFRAMEWORKS_BASE_LIBRARY_DEBUG AND OKODEFRAMEWORKS_MEDIA_LIBRARY AND OKODEFRAMEWORKS_MEDIA_LIBRARY_DEBUG AND OKODEFRAMEWORKS_NODEKIT_LIBRARY AND OKODEFRAMEWORKS_NODEKIT_LIBRARY_DEBUG)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFFMPEG.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFFMPEG.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFFMPEG.cmake	(revision 29090)
@@ -0,0 +1,70 @@
+# FFmpeg library
+#
+# FFMPEG_FOUND - system has FFmpeg
+# FFMPEG_INCLUDE_DIRS - the FFmpeg include directory
+# FFMPEG_LIBRARIES - Link these to use FFmpeg
+
+IF(UNIX AND NOT APPLE)
+
+	FIND_PACKAGE(PkgConfig REQUIRED)
+
+	PKG_SEARCH_MODULE(AVCODEC libavcodec)
+	PKG_SEARCH_MODULE(AVFORMAT libavformat)
+	PKG_SEARCH_MODULE(AVUTIL libavutil)
+
+ELSE(UNIX AND NOT APPLE)
+
+	################################
+	# AVCODEC includes & libraries
+	FIND_PATH(AVCODEC_INCLUDE_DIRS avcodec.h ${DEPMAN_PATH}/include/ffmpeg)
+	FIND_LIBRARY(AVCODEC_LIBRARIES NAMES avcodec avcodec-51)
+	IF(AVCODEC_INCLUDE_DIRS AND AVCODEC_LIBRARIES)
+		SET(AVCODEC_FOUND 1)
+	ENDIF(AVCODEC_INCLUDE_DIRS AND AVCODEC_LIBRARIES)
+	MARK_AS_ADVANCED(AVCODEC_INCLUDE_DIRS AVCODEC_LIBRARIES)
+
+	################################
+	# AVFORMAT includes & libraries
+	FIND_PATH(AVFORMAT_INCLUDE_DIRS avformat.h ${DEPMAN_PATH}/include/ffmpeg)
+	FIND_LIBRARY(AVFORMAT_LIBRARIES NAMES avformat avformat-51)
+	IF(AVFORMAT_INCLUDE_DIRS AND AVFORMAT_LIBRARIES)
+		SET(AVFORMAT_FOUND 1)
+	ENDIF(AVFORMAT_INCLUDE_DIRS AND AVFORMAT_LIBRARIES)
+	MARK_AS_ADVANCED(AVFORMAT_INCLUDE_DIRS AVFORMAT_LIBRARIES)
+
+	################################
+	# AVUTIL includes & libraries
+	FIND_PATH(AVUTIL_INCLUDE_DIRS avutil.h ${DEPMAN_PATH}/include/ffmpeg)
+	FIND_LIBRARY(AVUTIL_LIBRARIES NAMES avutil avutil-49)
+	IF(AVUTIL_INCLUDE_DIRS AND AVUTIL_LIBRARIES)
+		SET(AVUTIL_FOUND 1)
+	ENDIF(AVUTIL_INCLUDE_DIRS AND AVUTIL_LIBRARIES)
+	MARK_AS_ADVANCED(AVUTIL_INCLUDE_DIRS AVUTIL_LIBRARIES)
+
+ENDIF(UNIX AND NOT APPLE)
+
+################################
+# FFMPEG includes & libraries
+IF(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND)
+	SET(FFMPEG_INCLUDE_DIRS
+		${AVFORMAT_INCLUDE_DIRS}
+		${AVCODEC_INCLUDE_DIRS}
+		${AVUTIL_INCLUDE_DIRS}
+	)
+	SET(FFMPEG_LIBRARIES
+		${AVFORMAT_LIBRARIES}
+		${AVCODEC_LIBRARIES}
+		${AVUTIL_LIBRARIES}
+	)
+	MARK_AS_ADVANCED(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES)
+IF(NOT WIN32)
+	SET(FFMPEG_FOUND 1)
+ELSE(NOT WIN32)
+	FIND_PACKAGE(INTTYPES REQUIRED)
+	IF(INTTYPES_FOUND)
+		SET(FFMPEG_INCLUDE_DIRS ${FFMPEG_INCLUDE_DIRS} ${INTTYPES_INCLUDE_DIR})
+		SET(FFMPEG_FOUND 1)
+	ENDIF(INTTYPES_FOUND)
+ENDIF(NOT WIN32)
+ENDIF(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDepMan.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDepMan.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindDepMan.cmake	(revision 29090)
@@ -0,0 +1,18 @@
+FIND_PATH(DEPMAN_PATH .cache
+	$ENV{DEPMAN_REPO}
+	$ENV{DEPMAN_PATH}
+	~/.depman
+	/Developer/DepMan
+	/DepMan
+	$ENV{USERPROFILE}/DepMan
+    NO_DEFAULT_PATH
+)
+
+SET(DEPMAN_FOUND "NO")
+IF(DEPMAN_PATH)
+  SET(DEPMAN_FOUND "YES")
+  SET(CMAKE_INCLUDE_PATH ${DEPMAN_PATH}/include ${DEPMAN_PATH}/Frameworks ${CMAKE_INCLUDE_PATH})
+  SET(CMAKE_LIBRARY_PATH ${DEPMAN_PATH}/lib ${DEPMAN_PATH}/Frameworks ${CMAKE_LIBRARY_PATH})
+ENDIF(DEPMAN_PATH)
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindGDAL.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindGDAL.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindGDAL.cmake	(revision 29090)
@@ -0,0 +1,58 @@
+# Locate gdal
+# This module defines
+# GDAL_LIBRARY
+# GDAL_FOUND, if false, do not try to link to gdal 
+# GDAL_INCLUDE_DIR, where to find the headers
+#
+# $GDAL_DIR is an environment variable that would
+# correspond to the ./configure --prefix=$GDAL_DIR
+#
+# Created by Robert Osfield. 
+
+FIND_PATH(GDAL_INCLUDE_DIR gdal.h
+    ${GDAL_DIR}/include
+    $ENV{GDAL_DIR}/include
+    $ENV{GDAL_DIR}
+    $ENV{OSGDIR}/include
+    $ENV{OSGDIR}
+    $ENV{OSG_ROOT}/include
+    ~/Library/Frameworks
+    /Library/Frameworks
+    /usr/local/include
+    /usr/include
+    /usr/include/gdal
+    /sw/include # Fink
+    /opt/local/include # DarwinPorts
+    /opt/csw/include # Blastwave
+    /opt/include
+    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include
+    /usr/freeware/include
+)
+
+FIND_LIBRARY(GDAL_LIBRARY 
+    NAMES gdal gdal_i gdal1.4.0 gdal1.3.2 GDAL
+    PATHS
+    ${GDAL_DIR}/lib
+    $ENV{GDAL_DIR}/lib
+    $ENV{GDAL_DIR}
+    $ENV{OSGDIR}/lib
+    $ENV{OSGDIR}
+    $ENV{OSG_ROOT}/lib
+    ~/Library/Frameworks
+    /Library/Frameworks
+    /usr/local/lib
+    /usr/lib
+    /sw/lib
+    /opt/local/lib
+    /opt/csw/lib
+    /opt/lib
+    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/lib
+    /usr/freeware/lib64
+)
+
+SET(GDAL_FOUND "NO")
+IF(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
+    SET(GDAL_FOUND "YES")
+ENDIF(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/ModuleInstall.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/ModuleInstall.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/ModuleInstall.cmake	(revision 29090)
@@ -0,0 +1,35 @@
+# INSTALL and SOURCE_GROUP commands for OSG/OT/Producer Modules
+
+# Required Vars:
+# ${LIB_NAME}
+# ${LIB_PUBLIC_HEADERS}
+
+SET(INSTALL_INCDIR include)
+SET(INSTALL_BINDIR bin)
+IF(WIN32)
+    SET(INSTALL_LIBDIR bin)
+    SET(INSTALL_ARCHIVEDIR lib)
+ELSE(WIN32)
+    SET(INSTALL_LIBDIR lib${LIB_POSTFIX})
+    SET(INSTALL_ARCHIVEDIR lib${LIB_POSTFIX})
+ENDIF(WIN32)
+
+SET(HEADERS_GROUP "Header Files")
+
+SOURCE_GROUP(
+    ${HEADERS_GROUP}
+    FILES ${LIB_PUBLIC_HEADERS}
+)
+
+
+INSTALL(
+    TARGETS ${LIB_NAME}
+    RUNTIME DESTINATION ${INSTALL_BINDIR}
+    LIBRARY DESTINATION ${INSTALL_LIBDIR}
+    ARCHIVE DESTINATION ${INSTALL_ARCHIVEDIR}
+)
+# FIXME: Do not run for OS X framework
+INSTALL(
+    FILES        ${LIB_PUBLIC_HEADERS}
+    DESTINATION ${INSTALL_INCDIR}/${LIB_NAME}
+)
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenThreads.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenThreads.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenThreads.cmake	(revision 29090)
@@ -0,0 +1,188 @@
+# OpenThreads is a C++ based threading library. Its largest userbase 
+# seems to OpenSceneGraph so you might notice I accept OSGDIR as an
+# environment path.
+# I consider this part of the Findosg* suite used to find OpenSceneGraph 
+# components.
+# Each component is separate and you must opt in to each module.
+# 
+# Locate OpenThreads
+# This module defines
+# OPENTHREADS_LIBRARY
+# OPENTHREADS_FOUND, if false, do not try to link to OpenThreads
+# OPENTHREADS_INCLUDE_DIR, where to find the headers
+#
+# $OPENTHREADS_DIR is an environment variable that would
+# correspond to the ./configure --prefix=$OPENTHREADS_DIR
+# used in building osg.
+#
+# Created by Eric Wing.
+
+# Header files are presumed to be included like
+# #include <OpenThreads/Thread>
+
+# To make it easier for one-step automated configuration/builds,
+# we leverage environmental paths. This is preferable 
+# to the -DVAR=value switches because it insulates the 
+# users from changes we may make in this script.
+# It also offers a little more flexibility than setting
+# the CMAKE_*_PATH since we can target specific components.
+# However, the default CMake behavior will search system paths
+# before anything else. This is problematic in the cases
+# where you have an older (stable) version installed, but
+# are trying to build a newer version.
+# CMake doesn't offer a nice way to globally control this behavior
+# so we have to do a nasty "double FIND_" in this module.
+# The first FIND disables the CMAKE_ search paths and only checks
+# the environmental paths.
+# If nothing is found, then the second find will search the
+# standard install paths.
+# Explicit -DVAR=value arguments should still be able to override everything.
+# Note: We have added an additional check for ${CMAKE_PREFIX_PATH}.
+# This is not an official CMake variable, but one we are proposing be
+# added to CMake. Be warned that this may go away or the variable name
+# may change.
+
+FIND_PATH(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread
+    $ENV{OPENTHREADS_INCLUDE_DIR}
+    $ENV{OPENTHREADS_DIR}/include
+    $ENV{OPENTHREADS_DIR}
+    $ENV{OSG_INCLUDE_DIR}
+    $ENV{OSG_DIR}/include
+    $ENV{OSG_DIR}
+    NO_DEFAULT_PATH
+)
+
+IF(NOT OPENTHREADS_INCLUDE_DIR)
+    FIND_PATH(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread
+        PATHS ${CMAKE_PREFIX_PATH}
+        PATH_SUFFIXES include
+    )
+ENDIF(NOT OPENTHREADS_INCLUDE_DIR)
+
+IF(NOT OPENTHREADS_INCLUDE_DIR)
+    FIND_PATH(OPENTHREADS_INCLUDE_DIR OpenThreads/Thread
+        ~/Library/Frameworks
+        /Library/Frameworks
+        /usr/local/include
+        /usr/include
+        /sw/include # Fink
+        /opt/local/include # DarwinPorts
+        /opt/csw/include # Blastwave
+        /opt/include
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/include
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/include
+    )
+ENDIF(NOT OPENTHREADS_INCLUDE_DIR)
+
+MARK_AS_ADVANCED(OPENTHREADS_INCLUDE_DIR)
+
+FIND_LIBRARY(OPENTHREADS_LIBRARY 
+    NAMES OpenThreads OpenThreadsWin32 
+    PATHS
+    $ENV{OPENTHREADS_LIBRARY_DIR}
+    $ENV{OPENTHREADS_DIR}/lib64
+    $ENV{OPENTHREADS_DIR}/lib
+    $ENV{OPENTHREADS_DIR}
+    $ENV{OSG_LIBRARY_DIR}
+    $ENV{OSG_DIR}/lib64
+    $ENV{OSG_DIR}/lib
+    $ENV{OSG_DIR}
+    NO_DEFAULT_PATH
+)
+
+IF(NOT OPENTHREADS_LIBRARY)
+    FIND_LIBRARY(OPENTHREADS_LIBRARY 
+        NAMES OpenThreads OpenThreadsWin32 
+        PATHS ${CMAKE_PREFIX_PATH}
+        PATH_SUFFIXES lib64 lib
+    )
+ENDIF(NOT OPENTHREADS_LIBRARY)
+
+IF(NOT OPENTHREADS_LIBRARY)
+    FIND_LIBRARY(OPENTHREADS_LIBRARY 
+        NAMES OpenThreads OpenThreadsWin32 
+        PATHS
+        ~/Library/Frameworks
+        /Library/Frameworks
+        /usr/local/lib64
+        /usr/local/lib
+        /usr/lib64
+        /usr/lib
+        /sw/lib64
+        /sw/lib
+        /opt/local/lib64
+        /opt/local/lib
+        /opt/csw/lib64
+        /opt/csw/lib
+        /opt/lib64
+        /opt/lib
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/lib
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/lib
+    )
+ENDIF(NOT OPENTHREADS_LIBRARY)
+
+MARK_AS_ADVANCED(OPENTHREADS_LIBRARY)
+
+FIND_LIBRARY(OPENTHREADS_LIBRARY_DEBUG 
+    NAMES OpenThreadsd OpenThreadsWin32d
+    PATHS
+    $ENV{OPENTHREADS_DEBUG_LIBRARY_DIR}
+    $ENV{OPENTHREADS_LIBRARY_DIR}
+    $ENV{OPENTHREADS_DIR}/lib64
+    $ENV{OPENTHREADS_DIR}/lib
+    $ENV{OPENTHREADS_DIR}
+    $ENV{OSG_LIBRARY_DIR}
+    $ENV{OSG_DIR}/lib64
+    $ENV{OSG_DIR}/lib
+    $ENV{OSG_DIR}
+    ${CMAKE_PREFIX_PATH}/lib64
+    ${CMAKE_PREFIX_PATH}/lib
+    ${CMAKE_PREFIX_PATH}
+    NO_DEFAULT_PATH
+)
+
+IF(NOT OPENTHREADS_LIBRARY_DEBUG)
+    FIND_LIBRARY(OPENTHREADS_LIBRARY_DEBUG 
+        NAMES OpenThreadsd OpenThreadsWin32d
+        PATHS ${CMAKE_PREFIX_PATH}
+        PATH_SUFFIXES lib64 lib
+    )
+ENDIF(NOT OPENTHREADS_LIBRARY_DEBUG)
+
+IF(NOT OPENTHREADS_LIBRARY_DEBUG)
+    FIND_LIBRARY(OPENTHREADS_LIBRARY_DEBUG 
+        NAMES OpenThreadsd OpenThreadsWin32d
+        PATHS
+        /usr/local/lib64
+        /usr/local/lib
+        /usr/lib64
+        /usr/lib
+        /sw/lib64
+        /sw/lib
+        /opt/local/lib64
+        /opt/local/lib
+        /opt/csw/lib64
+        /opt/csw/lib
+        /opt/lib64
+        /opt/lib
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]/lib
+        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]/lib
+    )
+ENDIF(NOT OPENTHREADS_LIBRARY_DEBUG)
+
+MARK_AS_ADVANCED(OPENTHREADS_LIBRARY_DEBUG)
+
+IF(OPENTHREADS_LIBRARY)
+  IF(NOT OPENTHREADS_LIBRARY_DEBUG)
+      #MESSAGE("-- Warning Debug OpenThreads not found, using: ${OPENTHREADS_LIBRARY}")
+      #SET(OPENTHREADS_LIBRARY_DEBUG "${OPENTHREADS_LIBRARY}")
+      SET(OPENTHREADS_LIBRARY_DEBUG "${OPENTHREADS_LIBRARY}" CACHE FILEPATH "Debug version of OpenThreads Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OPENTHREADS_LIBRARY_DEBUG)
+ENDIF(OPENTHREADS_LIBRARY)
+    
+SET(OPENTHREADS_FOUND "NO")
+IF(OPENTHREADS_INCLUDE_DIR AND OPENTHREADS_LIBRARY)
+  SET(OPENTHREADS_FOUND "YES")
+  # MESSAGE("-- Found OpenThreads: "${OPENTHREADS_LIBRARY})
+ENDIF(OPENTHREADS_INCLUDE_DIR AND OPENTHREADS_LIBRARY)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindCoreVideo.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindCoreVideo.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindCoreVideo.cmake	(revision 29090)
@@ -0,0 +1,16 @@
+# Locate CoreVideo
+# This module defines
+# COREVIDEO_LIBRARY
+# COREVIDEO_FOUND, if false, do not try to link to gdal 
+#
+
+IF(APPLE)
+	FIND_LIBRARY(COREVIDEO_LIBRARY CoreVideo)
+ENDIF(APPLE)
+
+SET(COREVIDEO_FOUND "NO")
+IF(COREVIDEO_LIBRARY)
+	SET(COREVIDEO_FOUND "YES")
+	MARK_AS_ADVANCED(COREVIDEO_LIBRARY)
+ENDIF(COREVIDEO_LIBRARY)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindINTTYPES.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindINTTYPES.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindINTTYPES.cmake	(revision 29090)
@@ -0,0 +1,15 @@
+# INTTYPES - inttypes.h for Windows platform
+#
+# INTTYPES_FOUND
+# INTTYPES_INCLUDE_DIR
+
+IF(WIN32)
+
+	FIND_PATH(INTTYPES_INCLUDE_DIR inttypes.h ${DEPMAN_PATH}/include)
+	MARK_AS_ADVANCED(INTTYPES_INCLUDE_DIR)
+	IF(INTTYPES_INCLUDE_DIR)
+		SET(INTTYPES_FOUND 1)
+	ENDIF(INTTYPES_INCLUDE_DIR)
+
+ENDIF(WIN32)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindSTRMBASE.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindSTRMBASE.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindSTRMBASE.cmake	(revision 29090)
@@ -0,0 +1,17 @@
+# STRMBASE - DirectShow Base Classes
+#
+# STRMBASE_FOUND
+# STRMBASE_INCLUDE_DIRS
+# STRMBASE_LIBRARIES
+
+IF(WIN32)
+
+	FIND_PATH(STRMBASE_INCLUDE_DIRS streams.h ${DEPMAN_PATH}/include)
+	FIND_LIBRARY(STRMBASE_LIBRARIES strmbase ${DEPMAN_PATH}/lib)
+	MARK_AS_ADVANCED(STRMBASE_INCLUDE_DIRS STRMBASE_LIBRARIES)
+	IF(STRMBASE_INCLUDE_DIRS AND STRMBASE_LIBRARIES)
+		SET(STRMBASE_FOUND 1)
+	ENDIF(STRMBASE_INCLUDE_DIRS AND STRMBASE_LIBRARIES)
+
+ENDIF(WIN32)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindAPR.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindAPR.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindAPR.cmake	(revision 29090)
@@ -0,0 +1,61 @@
+# Locate Apache Portable Runtime including APR-util and APR-xml (aka expat)
+# APR_LIBRARIES
+# APR_FOUND
+# APR_INCLUDE_DIRS
+
+IF(UNIX AND NOT APPLE)
+
+	# LINUX uses only pkg-config installed APR and APR-util
+	FIND_PACKAGE(PkgConfig REQUIRED)
+	FIND_PACKAGE(EXPAT REQUIRED)
+	PKG_SEARCH_MODULE(APRCORE REQUIRED apr-1)
+	PKG_SEARCH_MODULE(APRUTIL REQUIRED apr-util-1)
+
+	# SET variables
+	IF(EXPAT_FOUND AND APRCORE_FOUND AND APRUTIL_FOUND)
+		SET(APR_FOUND 1)
+		SET(APR_INCLUDE_DIRS ${APRCORE_INCLUDE_DIRS} ${APRUTIL_INCLUDE_DIRS} ${EXPAT_INCLUDE_DIRS})
+		SET(APR_LIBRARIES ${APRCORE_LIBRARIES} ${APRUTIL_LIBRARIES} ${EXPAT_LIBRARIES})
+	ENDIF(EXPAT_FOUND AND APRCORE_FOUND AND APRUTIL_FOUND)
+
+ELSE(UNIX AND NOT APPLE)
+
+	IF(APPLE)
+		FIND_PACKAGE(EXPAT REQUIRED)
+	ELSE(APPLE)
+		FIND_PATH(EXPAT_INCLUDE_DIRS apr_xml.h ${DEPMAN_PATH}/include/apr-1)
+		FIND_LIBRARY(EXPAT_LIBRARIES NAMES xml)
+		MARK_AS_ADVANCED(EXPAT_INCLUDE_DIRS EXPAT_LIBRARIES)
+		IF(EXPAT_INCLUDE_DIRS AND EXPAT_LIBRARIES)
+			SET(EXPAT_FOUND 1)
+		ENDIF(EXPAT_INCLUDE_DIRS AND EXPAT_LIBRARIES)
+	ENDIF(APPLE)
+
+	FIND_PATH(APR_INCLUDE_DIR apr.h ${DEPMAN_PATH}/include/apr-1)
+	MARK_AS_ADVANCED(APR_INCLUDE_DIR)
+
+	FIND_LIBRARY(APR_apr_LIBRARY NAMES apr apr-1)
+	MARK_AS_ADVANCED(APR_apr_LIBRARY)
+
+	FIND_LIBRARY(APR_aprutil_LIBRARY NAMES aprutil aprutil-1)
+	MARK_AS_ADVANCED(APR_aprutil_LIBRARY)
+
+	IF(APR_apr_LIBRARY AND APR_aprutil_LIBRARY AND EXPAT_LIBRARIES)
+		SET(APR_LIBRARIES ${APR_aprutil_LIBRARY} ${APR_apr_LIBRARY} ${EXPAT_LIBRARIES})
+	ENDIF(APR_apr_LIBRARY AND APR_aprutil_LIBRARY AND EXPAT_LIBRARIES)
+
+	IF(APR_INCLUDE_DIR AND EXPAT_INCLUDE_DIRS)
+		SET(APR_INCLUDE_DIRS ${APR_INCLUDE_DIR} ${EXPAT_INCLUDE_DIRS})
+	ENDIF(APR_INCLUDE_DIR AND EXPAT_INCLUDE_DIRS)
+
+	SET(APR_FOUND 0)
+	IF(APR_INCLUDE_DIRS AND APR_LIBRARIES)
+		SET(APR_FOUND 1)
+		IF(WIN32)
+			ADD_DEFINITIONS(-DAPR_DECLARE_STATIC -DAPU_DECLARE_STATIC)
+			SET(APR_LIBRARIES ws2_32.lib mswsock.lib rpcrt4.lib ${APR_LIBRARIES})
+		ENDIF(WIN32)
+	ENDIF(APR_INCLUDE_DIRS AND APR_LIBRARIES)
+
+ENDIF(UNIX AND NOT APPLE)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFreeType.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFreeType.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindFreeType.cmake	(revision 29090)
@@ -0,0 +1,31 @@
+# Locate FreeType
+# This module defines
+# FREETYPE_LIBRARY
+# FREETYPE_FOUND, if false, do not try to link to FreeType
+# FREETYPE_INCLUDE_DIRS, where to find the headers
+
+FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h 
+)
+MARK_AS_ADVANCED(FREETYPE_INCLUDE_DIR_ft2build)
+
+FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h 
+	/usr/include/freetype2
+	/usr/X11R6/include/freetype2
+)
+MARK_AS_ADVANCED(FREETYPE_INCLUDE_DIR_freetype2)
+
+FIND_LIBRARY(FREETYPE_LIBRARY 
+	NAMES freetype
+)
+MARK_AS_ADVANCED(FREETYPE_LIBRARY)
+
+IF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
+	SET(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
+ENDIF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
+
+SET(FREETYPE_FOUND "NO")
+IF(FREETYPE_LIBRARY AND FREETYPE_INCLUDE_DIRS)
+	SET(FREETYPE_FOUND "YES")
+ENDIF(FREETYPE_LIBRARY AND FREETYPE_INCLUDE_DIRS)
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindwxWidgets.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindwxWidgets.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindwxWidgets.cmake	(revision 29090)
@@ -0,0 +1,60 @@
+# --- Locate wxWidgets ---
+#
+# Variable definitions
+# --------------------
+# WXWIDGETS_FOUND
+# WXWIDGETS_INCLUDE_DIRS
+# WXWIDGETS_DEFINITIONS
+# WXWIDGETS_LIBRARIES    # only for non-win32 platforms
+#
+# Libraries are linked using #pragma directives on VS2005
+
+SET(WXWIDGETS_FOUND FALSE)
+
+IF(WIN32)
+	FIND_PATH(WXWIDGETS_INCLUDE_DIRS wx/wx.h ${DEPMAN_PATH}/include)
+	IF(WXWIDGETS_INCLUDE_DIRS)
+		SET(WXWIDGETS_FOUND TRUE)
+		SET(WXWIDGETS_INCLUDE_DIRS ${WXWIDGETS_INCLUDE_DIRS} ${DEPMAN_PATH}/include/msvc)
+		SET(WXWIDGETS_DEFINITIONS -D__WXMSW__ -DWXUSINGDLL -DNOPCH)
+		LINK_DIRECTORIES(${DEPMAN_PATH}/lib)
+		MARK_AS_ADVANCED(WXWIDGETS_INCLUDE_DIRS)
+	ENDIF(WXWIDGETS_INCLUDE_DIRS)
+ENDIF(WIN32)
+
+IF(APPLE)
+	FIND_PATH(WXWIDGETS_INCLUDE_DIRS wx-2.8/wx/wx.h ${DEPMAN_PATH}/include)
+	IF(WXWIDGETS_INCLUDE_DIRS)
+		SET(WXWIDGETS_FOUND TRUE)
+		SET(WXWIDGETS_INCLUDE_DIRS
+				${DEPMAN_PATH}/lib/wx/include/mac-ansi-release-static-2.8
+				${DEPMAN_PATH}/include/wx-2.8)
+		SET(WXWIDGETS_DEFINITIONS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXMAC__)
+		LINK_DIRECTORIES(${DEPMAN_PATH}/lib)
+		SET(WXWIDGETS_LIBRARIES
+				"-framework IOKit"
+				"-framework Carbon"
+				"-framework Cocoa"
+				"-framework System"
+				"-framework QuickTime"
+				wx_mac_aui-2.8
+				wx_mac_xrc-2.8
+				wx_mac_qa-2.8
+				wx_mac_html-2.8
+				wx_mac_adv-2.8
+				wx_mac_core-2.8
+				wx_base_carbon_xml-2.8
+				wx_base_carbon_net-2.8
+				wx_base_carbon-2.8
+				"-framework WebKit"
+				wxexpat-2.8
+				wxtiff-2.8
+				wxjpeg-2.8
+				wxpng-2.8
+				z
+				pthread
+				iconv)
+		MARK_AS_ADVANCED(WXWIDGETS_INCLUDE_DIRS)
+	ENDIF(WXWIDGETS_INCLUDE_DIRS)
+ENDIF(APPLE)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindPCRE.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindPCRE.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindPCRE.cmake	(revision 29090)
@@ -0,0 +1,20 @@
+# Locate PCRE
+# This module defines
+# PCRE_LIBRARY
+# PCRE_FOUND, if false, do not try to link to PCRE
+# PCRE_INCLUDE_DIRS, where to find the headers
+
+FIND_PATH(PCRE_INCLUDE_DIR pcre.h)
+MARK_AS_ADVANCED(PCRE_INCLUDE_DIR)
+
+FIND_LIBRARY(PCRE_LIBRARY pcre)
+MARK_AS_ADVANCED(PCRE_LIBRARY)
+
+SET(PCRE_FOUND "NO")
+IF(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
+	SET(PCRE_FOUND "YES")
+	IF(WIN32)
+		ADD_DEFINITIONS(-DPCRE_STATIC)
+	ENDIF(WIN32)
+ENDIF(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindQuickTime.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindQuickTime.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindQuickTime.cmake	(revision 29090)
@@ -0,0 +1,30 @@
+# Locate QuickTime
+# This module defines
+# QUICKTIME_LIBRARY
+# QUICKTIME_FOUND, if false, do not try to link to gdal 
+# QUICKTIME_INCLUDE_DIR, where to find the headers
+#
+# $QUICKTIME_DIR is an environment variable that would
+# correspond to the ./configure --prefix=$QUICKTIME_DIR
+# used in building gdal.
+
+# QuickTime on OS X looks different than QuickTime for Windows,
+# so I am going to case the two.
+
+IF(APPLE)
+	FIND_PATH(QUICKTIME_INCLUDE_DIR QuickTime/QuickTime.h)
+	FIND_LIBRARY(QUICKTIME_LIBRARY QuickTime)
+ELSE(APPLE)
+	FIND_PATH(QUICKTIME_INCLUDE_DIR QuickTime.h
+		$ENV{QUICKTIME_DIR}/include
+		$ENV{QUICKTIME_DIR}
+	)
+	FIND_LIBRARY(QUICKTIME_LIBRARY QuickTime)
+ENDIF(APPLE)
+
+SET(QUICKTIME_FOUND "NO")
+IF(QUICKTIME_LIBRARY AND QUICKTIME_INCLUDE_DIR)
+	SET(QUICKTIME_FOUND "YES")
+	MARK_AS_ADVANCED(QUICKTIME_LIBRARY QUICKTIME_INCLUDE_DIR)
+ENDIF(QUICKTIME_LIBRARY AND QUICKTIME_INCLUDE_DIR)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindImageMagick.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindImageMagick.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindImageMagick.cmake	(revision 29090)
@@ -0,0 +1,25 @@
+# --- Locate ImageMagick ---
+#
+# Variable definitions
+# --------------------
+# IMAGEMAGICK_FOUND
+# IMAGEMAGICK_INCLUDE_DIR
+# IMAGEMAGICK_DEFINITIONS
+# IMAGEMAGICK_LIBRARIES
+
+SET(IMAGEMAGICK_FOUND FALSE)
+
+IF(WIN32)
+	FIND_PATH(IMAGEMAGICK_INCLUDE_DIR magick/magick.h ${DEPMAN_PATH}/include)
+	IF(IMAGEMAGICK_INCLUDE_DIR)
+		SET(IMAGEMAGICK_FOUND TRUE)
+		SET(IMAGEMAGICK_DEFINITIONS -D_VISUALC_ -DNeedFunctionPrototypes -D_DLL -D_MAGICKMOD_)
+		LINK_DIRECTORIES(${DEPMAN_PATH}/lib)
+		SET(WXWIDGETS_LIBRARIES
+				CORE_RL_Magick++_.lib
+				CORE_RL_magick_.lib
+				CORE_RL_wand_.lib
+				X11.lib)
+		MARK_AS_ADVANCED(IMAGEMAGICK_INCLUDE_DIR)
+	ENDIF(IMAGEMAGICK_INCLUDE_DIR)
+ENDIF(WIN32)
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenSceneGraph.cmake
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenSceneGraph.cmake	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/CMakeModules/FindOpenSceneGraph.cmake	(revision 29090)
@@ -0,0 +1,773 @@
+# Locate OpenSceneGraph
+# This module defines
+# OSG*_LIBRARY (where * matches <empty>, DB, UTIL, ...)
+# OSG*_LIBRARY_DEBUG (where * matches <empty>, DB, UTIL, ...)
+# OSG_LIBRARIES (All core libraries)
+# OSG_LIBRARIES_DEBUG (All debug core libraries)
+# OSG_FOUND, if false, do not try to link to OpenSceneGraph
+# OSG_INCLUDE_DIR, where to find the headers
+#
+# $OSG_DIR is an environment variable that would
+# correspond to the ./configure --prefix=$OSG_DIR
+# used in building osg.
+#
+# Created by Eric Wing.
+
+# Header files are presumed to be included like
+# #include <osg/Version>
+
+# Try the user's environment request before anything else.
+
+
+FIND_PACKAGE(OpenThreads REQUIRED)
+
+# OSG Core
+FIND_PATH(OSG_INCLUDE_DIR osg/Version
+	$ENV{OSG_DIR}/include
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/include
+	/usr/include
+	/sw/include # Fink
+	/opt/local/include # DarwinPorts
+	/opt/csw/include # Blastwave
+	/opt/include
+)
+
+MARK_AS_ADVANCED(OSG_INCLUDE_DIR)
+
+FIND_LIBRARY(OSG_LIBRARY 
+	NAMES osg
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSG_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARY} ${OPENTHREADS_LIBRARY})
+
+FIND_LIBRARY(OSG_LIBRARY_DEBUG 
+	NAMES osgd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSG_LIBRARY_DEBUG)
+
+IF(OSG_LIBRARY)
+  IF(NOT OSG_LIBRARY_DEBUG)
+	  SET(OSG_LIBRARY_DEBUG "${OSG_LIBRARY}" CACHE FILEPATH "Debug version of osg Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSG_LIBRARY_DEBUG)
+ENDIF(OSG_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARY_DEBUG} ${OPENTHREADS_LIBRARY_DEBUG})	
+
+SET(OSG_FOUND "NO")
+IF(OSG_INCLUDE_DIR AND OSG_LIBRARY)
+  SET(OSG_FOUND "YES")
+ENDIF(OSG_INCLUDE_DIR AND OSG_LIBRARY)
+
+
+# osgUtil
+
+FIND_LIBRARY(OSGUTIL_LIBRARY 
+	NAMES osgUtil
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGUTIL_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGUTIL_LIBRARY})
+
+FIND_LIBRARY(OSGUTIL_LIBRARY_DEBUG 
+	NAMES osgUtild
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGUTIL_LIBRARY_DEBUG)
+
+IF(OSGUTIL_LIBRARY)
+  IF(NOT OSGUTIL_LIBRARY_DEBUG)
+	  SET(OSGUTIL_LIBRARY_DEBUG "${OSGUTIL_LIBRARY}" CACHE FILEPATH "Debug version of osgUtil Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGUTIL_LIBRARY_DEBUG)
+ENDIF(OSGUTIL_LIBRARY)
+	
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGUTIL_LIBRARY_DEBUG})
+
+SET(OSGUTIL_FOUND "NO")
+IF(OSGUTIL_INCLUDE_DIR AND OSGUTIL_LIBRARY)
+  SET(OSGUTIL_FOUND "YES")
+ENDIF(OSGUTIL_INCLUDE_DIR AND OSGUTIL_LIBRARY)
+
+# osgViewer
+
+FIND_LIBRARY(OSGVIEWER_LIBRARY 
+	NAMES osgViewer
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGVIEWER_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGVIEWER_LIBRARY})
+
+FIND_LIBRARY(OSGVIEWER_LIBRARY_DEBUG 
+	NAMES osgViewerd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGVIEWER_LIBRARY_DEBUG)
+
+IF(OSGVIEWER_LIBRARY)
+  IF(NOT OSGVIEWER_LIBRARY_DEBUG)
+	  SET(OSGVIEWER_LIBRARY_DEBUG "${OSGVIEWER_LIBRARY}" CACHE FILEPATH "Debug version of osgViewer Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGVIEWER_LIBRARY_DEBUG)
+ENDIF(OSGVIEWER_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGVIEWER_LIBRARY_DEBUG})
+
+SET(OSGVIEWER_FOUND "NO")
+IF(OSGVIEWER_INCLUDE_DIR AND OSGVIEWER_LIBRARY)
+  SET(OSGVIEWER_FOUND "YES")
+ENDIF(OSGVIEWER_INCLUDE_DIR AND OSGVIEWER_LIBRARY)
+
+
+# osgDB
+
+FIND_LIBRARY(OSGDB_LIBRARY 
+	NAMES osgDB
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGDB_LIBRARY})
+
+MARK_AS_ADVANCED(OSGDB_LIBRARY)
+
+FIND_LIBRARY(OSGDB_LIBRARY_DEBUG 
+	NAMES osgDBd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGDB_LIBRARY_DEBUG)
+
+IF(OSGDB_LIBRARY)
+  IF(NOT OSGDB_LIBRARY_DEBUG)
+	  SET(OSGDB_LIBRARY_DEBUG "${OSGDB_LIBRARY}" CACHE FILEPATH "Debug version of osgDB Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGDB_LIBRARY_DEBUG)
+ENDIF(OSGDB_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGDB_LIBRARY_DEBUG})
+	
+SET(OSGDB_FOUND "NO")
+IF(OSGDB_INCLUDE_DIR AND OSGDB_LIBRARY)
+  SET(OSGDB_FOUND "YES")
+ENDIF(OSGDB_INCLUDE_DIR AND OSGDB_LIBRARY)
+
+
+# osgGA
+
+FIND_LIBRARY(OSGGA_LIBRARY 
+	NAMES osgGA
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGGA_LIBRARY)
+
+FIND_LIBRARY(OSGGA_LIBRARY_DEBUG 
+	NAMES osgGAd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGGA_LIBRARY})
+
+MARK_AS_ADVANCED(OSGGA_LIBRARY_DEBUG)
+
+IF(OSGGA_LIBRARY)
+  IF(NOT OSGGA_LIBRARY_DEBUG)
+	  SET(OSGGA_LIBRARY_DEBUG "${OSGGA_LIBRARY}" CACHE FILEPATH "Debug version of osgGA Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGGA_LIBRARY_DEBUG)
+ENDIF(OSGGA_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGGA_LIBRARY_DEBUG})
+	
+SET(OSGGA_FOUND "NO")
+IF(OSGGA_INCLUDE_DIR AND OSGGA_LIBRARY)
+  SET(OSGGA_FOUND "YES")
+ENDIF(OSGGA_INCLUDE_DIR AND OSGGA_LIBRARY)
+
+# osgText
+
+FIND_LIBRARY(OSGTEXT_LIBRARY 
+	NAMES osgText
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGTEXT_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGTEXT_LIBRARY})
+
+FIND_LIBRARY(OSGTEXT_LIBRARY_DEBUG 
+	NAMES osgTextd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGTEXT_LIBRARY_DEBUG)
+
+IF(OSGTEXT_LIBRARY)
+  IF(NOT OSGTEXT_LIBRARY_DEBUG)
+	  SET(OSGTEXT_LIBRARY_DEBUG "${OSGTEXT_LIBRARY}" CACHE FILEPATH "Debug version of osgText Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGTEXT_LIBRARY_DEBUG)
+ENDIF(OSGTEXT_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGTEXT_LIBRARY_DEBUG})
+	
+SET(OSGTEXT_FOUND "NO")
+IF(OSGTEXT_INCLUDE_DIR AND OSGTEXT_LIBRARY)
+  SET(OSGTEXT_FOUND "YES")
+ENDIF(OSGTEXT_INCLUDE_DIR AND OSGTEXT_LIBRARY)
+
+# osgParticle
+
+FIND_LIBRARY(OSGPARTICLE_LIBRARY 
+	NAMES osgParticle
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGPARTICLE_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGPARTICLE_LIBRARY})
+
+FIND_LIBRARY(OSGPARTICLE_LIBRARY_DEBUG 
+	NAMES osgParticled
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGPARTICLE_LIBRARY_DEBUG)
+
+IF(OSGPARTICLE_LIBRARY)
+  IF(NOT OSGPARTICLE_LIBRARY_DEBUG)
+	  SET(OSGPARTICLE_LIBRARY_DEBUG "${OSGPARTICLE_LIBRARY}" CACHE FILEPATH "Debug version of osgParticle Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGPARTICLE_LIBRARY_DEBUG)
+ENDIF(OSGPARTICLE_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGPARTICLE_LIBRARY_DEBUG})
+	
+SET(OSGPARTICLE_FOUND "NO")
+IF(OSGPARTICLE_INCLUDE_DIR AND OSGPARTICLE_LIBRARY)
+  SET(OSGPARTICLE_FOUND "YES")
+ENDIF(OSGPARTICLE_INCLUDE_DIR AND OSGPARTICLE_LIBRARY)
+
+# osgFX
+
+FIND_LIBRARY(OSGFX_LIBRARY 
+	NAMES osgFX
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGFX_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGFX_LIBRARY})
+
+FIND_LIBRARY(OSGFX_LIBRARY_DEBUG 
+	NAMES osgFXd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGFX_LIBRARY_DEBUG)
+
+IF(OSGFX_LIBRARY)
+  IF(NOT OSGFX_LIBRARY_DEBUG)
+	  SET(OSGFX_LIBRARY_DEBUG "${OSGFX_LIBRARY}" CACHE FILEPATH "Debug version of osgParticle Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGFX_LIBRARY_DEBUG)
+ENDIF(OSGFX_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGFX_LIBRARY_DEBUG})
+	
+SET(OSGFX_FOUND "NO")
+IF(OSGFX_INCLUDE_DIR AND OSGFX_LIBRARY)
+  SET(OSGFX_FOUND "YES")
+ENDIF(OSGFX_INCLUDE_DIR AND OSGFX_LIBRARY)
+
+# osgTerrain
+
+FIND_LIBRARY(OSGTERRAIN_LIBRARY 
+	NAMES osgTerrain
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGTERRAIN_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGTERRAIN_LIBRARY})
+
+FIND_LIBRARY(OSGTERRAIN_LIBRARY_DEBUG 
+	NAMES osgTerraind
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGTERRAIN_LIBRARY_DEBUG)
+
+IF(OSGTERRAIN_LIBRARY)
+  IF(NOT OSGTERRAIN_LIBRARY_DEBUG)
+	  SET(OSGTERRAIN_LIBRARY_DEBUG "${OSGTERRAIN_LIBRARY}" CACHE FILEPATH "Debug version of osgTerrain Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGTERRAIN_LIBRARY_DEBUG)
+ENDIF(OSGTERRAIN_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGTERRAIN_LIBRARY_DEBUG})
+	
+SET(OSGTERRAIN_FOUND "NO")
+IF(OSGTERRAIN_INCLUDE_DIR AND OSGTERRAIN_LIBRARY)
+  SET(OSGTERRAIN_FOUND "YES")
+ENDIF(OSGTERRAIN_INCLUDE_DIR AND OSGTERRAIN_LIBRARY)
+
+# osgSim
+
+FIND_LIBRARY(OSGSIM_LIBRARY 
+	NAMES osgSim
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGSIM_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGSIM_LIBRARY})
+
+FIND_LIBRARY(OSGSIM_LIBRARY_DEBUG 
+	NAMES osgSimd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGSIM_LIBRARY_DEBUG)
+
+IF(OSGSIM_LIBRARY)
+  IF(NOT OSGSIM_LIBRARY_DEBUG)
+	  SET(OSGSIM_LIBRARY_DEBUG "${OSGSIM_LIBRARY}" CACHE FILEPATH "Debug version of osgSim Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGSIM_LIBRARY_DEBUG)
+ENDIF(OSGSIM_LIBRARY)
+	
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGSIM_LIBRARY_DEBUG})
+
+SET(OSGSIM_FOUND "NO")
+IF(OSGSIM_INCLUDE_DIR AND OSGSIM_LIBRARY)
+  SET(OSGSIM_FOUND "YES")
+ENDIF(OSGSIM_INCLUDE_DIR AND OSGSIM_LIBRARY)
+
+# osgShadow
+
+FIND_LIBRARY(OSGSHADOW_LIBRARY 
+	NAMES osgShadow
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGSHADOW_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGSHADOW_LIBRARY})
+
+FIND_LIBRARY(OSGSHADOW_LIBRARY_DEBUG 
+	NAMES osgShadowd
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGSHADOW_LIBRARY_DEBUG)
+
+IF(OSGSHADOW_LIBRARY)
+  IF(NOT OSGSHADOW_LIBRARY_DEBUG)
+	  SET(OSGSHADOW_LIBRARY_DEBUG "${OSGSHADOW_LIBRARY}" CACHE FILEPATH "Debug version of osgShadow Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGSHADOW_LIBRARY_DEBUG)
+ENDIF(OSGSHADOW_LIBRARY)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGSHADOW_LIBRARY_DEBUG})
+	
+SET(OSGSHADOW_FOUND "NO")
+IF(OSGSHADOW_INCLUDE_DIR AND OSGSHADOW_LIBRARY)
+  SET(OSGSHADOW_FOUND "YES")
+ENDIF(OSGSHADOW_INCLUDE_DIR AND OSGSHADOW_LIBRARY)
+
+# osgManipulator
+
+FIND_LIBRARY(OSGMANIPULATOR_LIBRARY 
+	NAMES osgManipulator
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGMANIPULATOR_LIBRARY)
+SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGMANIPULATOR_LIBRARY})
+
+FIND_LIBRARY(OSGMANIPULATOR_LIBRARY_DEBUG 
+	NAMES osgManipulatord
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+IF(OSGMANIPULATOR_LIBRARY)
+  IF(NOT OSGMANIPULATOR_LIBRARY_DEBUG)
+	  SET(OSGMANIPULATOR_LIBRARY_DEBUG "${OSGMANIPULATOR_LIBRARY}" CACHE FILEPATH "Debug version of osgManipulator Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGMANIPULATOR_LIBRARY_DEBUG)
+ENDIF(OSGMANIPULATOR_LIBRARY)
+	
+MARK_AS_ADVANCED(OSGMANIPULATOR_LIBRARY_DEBUG)
+
+SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGMANIPULATOR_LIBRARY_DEBUG})
+
+SET(OSGMANIPULATOR_FOUND "NO")
+IF(OSGMANIPULATOR_INCLUDE_DIR AND OSGMANIPULATOR_LIBRARY)
+  SET(OSGMANIPULATOR_FOUND "YES")
+ENDIF(OSGMANIPULATOR_INCLUDE_DIR AND OSGMANIPULATOR_LIBRARY)
+
+# osgIntrospection
+
+FIND_LIBRARY(OSGINTROSPECTION_LIBRARY 
+	NAMES osgIntrospection
+	PATHS 
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+MARK_AS_ADVANCED(OSGINTROSPECTION_LIBRARY)
+IF(OSGINTROSPECTION_LIBRARY)
+	SET(OSG_LIBRARIES ${OSG_LIBRARIES} ${OSGINTROSPECTION_LIBRARY})
+ENDIF(OSGINTROSPECTION_LIBRARY)
+
+FIND_LIBRARY(OSGINTROSPECTION_LIBRARY_DEBUG 
+	NAMES osgIntrospectiond
+	PATHS
+	$ENV{OSG_DIR}/lib64
+	$ENV{OSG_DIR}/lib
+	$ENV{OSG_DIR}
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local/lib64
+	/usr/local/lib
+	/usr/lib64
+	/usr/lib
+	/sw/lib
+	/opt/local/lib
+	/opt/csw/lib
+	/opt/lib
+)
+
+IF(OSGINTROSPECTION_LIBRARY)
+  IF(NOT OSGINTROSPECTION_LIBRARY_DEBUG)
+	  SET(OSGINTROSPECTION_LIBRARY_DEBUG "${OSGINTROSPECTION_LIBRARY}" CACHE FILEPATH "Debug version of osgIntrospection Library (use regular version if not available)" FORCE)
+  ENDIF(NOT OSGINTROSPECTION_LIBRARY_DEBUG)
+ENDIF(OSGINTROSPECTION_LIBRARY)
+	
+MARK_AS_ADVANCED(OSGINTROSPECTION_LIBRARY_DEBUG)
+IF(OSGINTROSPECTION_LIBRARY_DEBUG)
+	SET(OSG_LIBRARIES_DEBUG ${OSG_LIBRARIES_DEBUG} ${OSGINTROSPECTION_LIBRARY_DEBUG})
+ENDIF(OSGINTROSPECTION_LIBRARY_DEBUG)
+
+SET(OSGINTROSPECTION_FOUND "NO")
+IF(OSGINTROSPECTION_INCLUDE_DIR AND OSGINTROSPECTION_LIBRARY)
+  SET(OSGINTROSPECTION_FOUND "YES")
+ENDIF(OSGINTROSPECTION_INCLUDE_DIR AND OSGINTROSPECTION_LIBRARY)
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/win32/pscp.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/plugins-data/depman/win32/pscp.exe
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.pydevproject
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.pydevproject	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.pydevproject	(revision 29090)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse-pydev version="1.0"?>
+
+<pydev_project>
+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
+<path>/buildman/bin</path>
+</pydev_pathproperty>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.4</pydev_property>
+</pydev_project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/README
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/README	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/README	(revision 29090)
@@ -0,0 +1,38 @@
+BuildMan 1.0
+------------
+
+Copyright (C) 2007 AI2 | UPV
+
+Introduction
+------------
+
+BuildMan is a set of scripts for automatic and continuous build construction.
+It's based on 
+
+  * Python
+  * XML
+
+Features
+--------
+
+BuildMan is able to do the following tasks:
+
+   - Prepare solutions (Makefiles/VisualStudio) for CMake based projects.
+   - Launch building on Win/Linux/Mac using a XML config file. 
+   - Create new dependency packages for Win/Linux/Mac using DepMan-1.0
+   - Upload packages to DepMan servers
+   - Download packages from DepMan servers
+
+BuildMan is created using a plug-in system, so you can extend and add
+new target commands. By default is featured Build plug-in and depman 
+plug-in.
+
+Install
+-------
+
+To use buildman unpack the distribution in a folder (tipically
+/usr/local/buildman) and put the "bin" folder in your PATH or
+create symbolic links to /usr/local/buildman/bin/bmn.py in some folder
+of your PATH (/usr/local/bin)
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.project
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.project	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/.project	(revision 29090)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>buildman</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.python.pydev.PyDevBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.python.pydev.pythonNature</nature>
+	</natures>
+</projectDescription>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/buildman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/buildman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/buildman.xml	(revision 29090)
@@ -0,0 +1,30 @@
+<buildman>
+	<goals platform="linux,mac">
+		<delete path="/tmp/osgVP" />
+	</goals>
+	<goals platform="win">
+		<delete path="./osgVP" />
+	</goals>
+	<goals>
+		<svn option="co" url="https://josgplanets.ai2.upv.es/svn/josgplanets/trunk/libjni-osgvp" project-path="/tmp/osgVP" />
+		<clean all="False" />
+		<update file="/tmp/osgVP/build-scripts/depman.xml" />
+	</goals>
+	<goals platform="linux,mac">
+		<create-solution project-path="/tmp/osgVP" generator="unix" install="/tmp/osgVP-install" />
+		<compile-solution project-path="/tmp/osgVP" project-name="libjosg" install="True" />
+	</goals>
+	<goals platform="win">
+		<create-solution project-path="./osgVP" project-gen-path="./osgVP/CMake-VS7" generator="vs7" install="./osgVP-install" />
+		<compile-solution project-path="./osgVP" project-name="libjosg" project-gen-path="./osgVP/CMake-VS7" install="True" />
+	</goals> -->
+	<goals platform="linux">
+		<create from-xml="/tmp/osgVP/build-scripts/depman.xml" path="/tmp/binaries/linux32" />
+	</goals>
+	<goals platform="mac">
+		<create from-xml="/tmp/osgVP/build-scripts/depman.xml" path="/tmp/binaries/mac"/>
+	</goals>
+	<goals platform="win">
+		<create from-xml="./osgVP/build-scripts/depman.xml" path="./osgVP/binaries/win32" />
+	</goals>
+</buildman>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman-linux-gcc3.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman-linux-gcc3.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman-linux-gcc3.xml	(revision 29090)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<depman>
+	<package>
+		<group>es.upv.ai2</group><!-- requerido -->
+		<artifact>buildman</artifact><!-- requerido -->
+		<version>1.0-SNAPSHOT</version><!-- requerido -->
+		<platform>all</platform><!-- no requerido pero se puede sobreescribir -->
+		<compiler>all</compiler><!-- idem -->
+		<arch>all</arch><!-- idem -->
+		<libraryType>none</libraryType><!-- requerido -->
+
+		<!-- upload no requerido si aparece entonces se debe de subir -->
+		<!--<upload/> !--><!-- Esta opciÃ³n usarÃ­a los valores por defecto -->
+		<!--<upload> --><!-- Esta opciÃ³n usarÃ­a los valores asignados abajo, no son requeridos y se puede sobreescribir solo algunos de ellos -->
+		<!--	<sshserver>murray.ai2.upv.es</sshserver> -->
+		<!-- 	<destdir>/projects/AI2/www-aliases/depman/</destdir> -->
+		<!-- 	<username>depman</username> -->
+		<!--</upload> -->
+	</package>
+	<dependencies platform="linux">
+		<!-- others platform same configuration -->
+		<dependency>
+			<group>org.openscenegraph</group>
+			<artifact>openscenegraph</artifact>
+			<version>2.2.0</version>
+			<compiler>gcc3</compiler>
+			<type>dynamic</type>
+		</dependency>
+		<dependency>
+			<group>jogl</group>
+			<artifact>jogl</artifact>
+			<version>1.1.0</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency>
+			<group>org.gdal</group>
+			<artifact>gdal-gvsig</artifact>
+			<version>1.10</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency url="http://larry.ai2.upv.es:8080/~depman/" >
+			<group>es.upv.ai2</group>
+			<artifact>libjosg</artifact>
+			<version>2.0-SNAPSHOT</version>
+			<compiler>gcc3</compiler>
+			<type>dynamic</type>
+		</dependency>
+	</dependencies>
+</depman>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/buildman/doc/depman.xml	(revision 29090)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<depman>
+	<package>
+		<group>es.upv.ai2</group><!-- requerido -->
+		<artifact>buildman</artifact><!-- requerido -->
+		<version>1.0-SNAPSHOT</version><!-- requerido -->
+		<libraryType>dynamic</libraryType><!-- requerido -->
+				<!-- upload no requerido si aparece entonces se configura el servidor donde subir el paquete -->
+		<upload> <!-- Esta opciÃ³n usarÃ­a los valores asignados abajo, no son requeridos y se puede sobreescribir solo algunos de ellos -->
+			<sshserver>larry.ai2.upv.es</sshserver>
+		 	<destdir>public_html/</destdir>
+		 	<username>depman</username>
+		</upload>
+	</package>
+	<package platform="linux,mac">
+		<platform>all</platform><!-- no requerido pero se puede sobreescribir -->
+		<compiler>gcc4</compiler><!-- idem -->
+		<arch>all</arch><!-- idem -->
+	</package>
+	<package platform="win">
+		<compiler>vs7</compiler><!-- idem -->
+		<arch>i386</arch><!-- idem -->
+	</package>
+	<dependencies platform="win">
+		<dependency>
+			<group>org.openscenegraph</group>
+			<artifact>openscenegraph</artifact>
+			<version>2.2.0</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency>
+			<group>org.gdal</group>
+			<artifact>gdal</artifact>
+			<version>1.2.6</version>
+			<type>dynamic</type>
+			<compiler>vs6</compiler>
+		</dependency>
+		<dependency>
+			<group>jogl</group>
+			<artifact>jogl</artifact>
+			<version>1.1.0</version>
+			<type>dynamic</type>
+			<compiler>all</compiler>
+		</dependency>
+
+	</dependencies>
+	<dependencies platform="linux">
+		<!-- others platform same configuration -->
+		<dependency>
+			<group>org.openscenegraph</group>
+			<artifact>openscenegraph</artifact>
+			<version>2.2.0</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency>
+			<group>jogl</group>
+			<artifact>jogl</artifact>
+			<version>1.1.0</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency>
+			<group>org.gdal</group>
+			<artifact>gdal-gvsig</artifact>
+			<version>1.10</version>
+			<type>dynamic</type>
+		</dependency>
+		<dependency url="http://larry.ai2.upv.es:8080/~depman/" >
+			<group>es.upv.ai2</group>
+			<artifact>libjosg</artifact>
+			<version>2.0-SNAPSHOT</version>
+			<type>dynamic</type>
+		</dependency>
+	</dependencies>
+	<dependencies platform="mac">
+		<!-- others platform same configuration -->
+		<dependency>
+			<group>org.openscenegraph</group>
+			<artifact>openscenegraph</artifact>
+			<version>2.2.0</version>
+			<type>dynamic</type>
+			<architecture>universal</architecture>
+		</dependency>
+		<dependency>
+			<group>jogl</group>
+			<artifact>jogl</artifact>
+			<version>1.1.0</version>
+			<type>dynamic</type>
+			<compiler>all</compiler>
+		</dependency>
+		<!--dependency>
+			<group>org.gdal</group>
+			<artifact>gdal</artifact>
+			<version>1.4.0</version>
+			<type>framework</type>
+			</dependency-->
+		<dependency url="http://larry.ai2.upv.es:8080/~depman/" >
+			<group>es.upv.ai2</group>
+			<artifact>libjosg</artifact>
+			<version>2.0-SNAPSHOT</version>
+			<type>dynamic</type>
+			<architecture>universal</architecture>
+		</dependency>
+	</dependencies>
+
+</depman>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/build.xml	(revision 29090)
@@ -0,0 +1,246 @@
+<project name="Generar extension en Andami ext3DGUI" default="generate-without-source" basedir=".">
+	<description>
+        Instala el plugin de ejemplo en Andami.
+    </description>
+	<!-- set global properties for this build -->
+	<property name="src" location="src" />
+	<property name="build" location="bin" />
+	<property name="dist" location="dist" />
+	<property name="plugin" value="com.iver.ai2.gvsig3dgui" />
+	<property name="extension-dir" location="../_fwAndami/gvSIG/extensiones" />
+	<property name="andami-lib" value="../_fwAndami/lib" />
+	<property name="logos-dir" location="../_fwAndami/theme" />
+	<property name="gvsig-lib" location="../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/lib" />
+	<property name="ext3Dgui-lib" value="../_fwAndami/gvSIG/extensiones/com.iver.ai2.gvsig3dgui/lib" />
+	<property name="binaries" location="../binaries/" />
+	<property environment="env" />
+	<property name="buildman" value="${env.HOMEPATH}/DepMan/" />
+	<property name="buildman-lin" value="${env.HOME}/.depman/" />
+	<import file="../binaries/ant/utilities.xml" />
+	<!--property name="depman.executable" value="depman/bin/dmn.py" /-->
+
+
+	<property name="buildman.executable" value="buildman/bin/bmn.py" />
+
+	<!--property name="binaries-dir" location="../binaries" /-->
+
+	<target name="compile" description="compile the source">
+		<!-- Compile the Java code from ${src} to ${build} -->
+		<antcall target="gvSIG-import-build-number" />
+		<mkdir dir="${build}" />
+		<loadEclipseClasspath project="${basedir}" />
+		<gvSIG-javac classpath="${eclipseClasspath}" />
+	</target>
+
+	<target name="batch-build" description="Builds all. This is called by appgvSIG script" depends="compile,create-jar,copy-files,move-to-andami">
+	</target>
+
+	<target name="init">
+		<!-- Create the time stamp -->
+		<tstamp />
+		<!-- Create the build directory structure used by compile -->
+		<mkdir dir="${build}" />
+		<!-- Creamos un fichero con el timeStamp para que lo lea el FPanelAbout -->
+	</target>
+
+	<target name="create-jar">
+		<mkdir dir="${dist}" />
+		<mkdir dir="${dist}/lib" />
+
+		<jar jarfile="${dist}/lib/${plugin}.jar" basedir="${build}" />
+	</target>
+
+	<target name="copy-files">
+		<copy file="config/config.xml" todir="${dist}" />
+		<copy file="config/about.htm" todir="${dist}" />
+		<replace casesensitive="true" file="${dist}/about.htm" token="#build.number#" value="${build.number}" />
+
+		<copy todir="${dist}">
+			<fileset dir="config" includes="text*.properties" />
+		</copy>
+		<copy todir="${dist}/images">
+			<fileset dir="images/" includes="**/**" excludes="**/*.db" />
+		</copy>
+		<copy todir="${extension-dir}/${plugin}">
+			<fileset dir="resources" includes="**/**" />
+		</copy>
+
+		<!--copy todir="lib/">
+			<fileset dir="${dist}/lib/" includes="*.jar" />
+		</copy-->
+
+		<copy todir="${dist}/lib">
+			<fileset dir="lib/" includes="**/**" excludes="com.iver.ai2.gvsig3d_share.jar" />
+		</copy>
+		<copy todir="${gvsig-lib}">
+			<fileset dir="lib/" includes="com.iver.ai2.gvsig3d_share.jar" />
+		</copy>
+		<!--copy todir="${andami-lib}">
+			<fileset dir="lib/" includes="gluegen*.jar,jogl*.jar,libjosg-*.jar,libNative*.jar" />
+		</copy-->
+
+	</target>
+
+	<target name="move-to-andami">
+		<move todir="${extension-dir}/${plugin}">
+			<fileset dir="${dist}" includes="**/**" />
+		</move>
+
+	</target>
+
+	<target name="generate-without-source" description="generate the distribution without the source file" depends="create-jar,copy-files,move-to-andami">
+	</target>
+
+	<target name="clean" description="clean up">
+		<delete dir="${dist}" />
+		<delete dir="${build}" />
+	</target>
+
+	<target name="refresh-binaries">
+		<ant dir="../binaries" />
+	</target>
+
+
+
+
+	<condition property="isLinux">
+		<os family="unix" />
+	</condition>
+
+	<condition property="isWindows">
+		<or>
+			<os family="windows" />
+			<os family="win9x" />
+			<os name="Windows Vista" />
+		</or>
+	</condition>
+
+	<condition property="isMac">
+		<os family="mac" />
+	</condition>
+
+	<target name="copy-binaries" depends="copy-linux-binaries,copy-win-binaries">
+	</target>
+
+	<target name="copy-win-binaries" if="isWindows" depends="update-binaries-remote">
+		<property name="win-binaries" value="${binaries}/w32/3D" />
+		<mkdir dir="${win-binaries}" />
+		<copy todir="${win-binaries}">
+			<fileset dir="${buildman}/bin/" includes="**/**" excludes="*.exe" />
+		</copy>
+	</target>
+
+	<target name="copy-linux-binaries" if="isLinux" depends="update-binaries-remote">
+		<property name="linux-binaries" value="${binaries}/linux/3D" />
+		<mkdir dir="${linux-binaries}" />
+		<copy todir="${linux-binaries}">
+			<fileset dir="${buildman-lin}/lib/" includes="*.so*,**/*.so*" followsymlinks="false" />
+		</copy>
+		<echo>
+			OJO Falta los links
+		</echo>
+
+		<exec executable="${basedir}/gen_simb_link.sh">
+		</exec>
+		<!--
+	    <exec executable="bash">
+			<arg value="-c"/>
+			<arg value="find ${buildman-lin}/lib/ -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -s \2 \1/g' > ${linux-binaries}/install.sh.tmp"/>
+		</exec>
+		<concat destfile="${linux-binaries}/install-3D.sh">#!bin/sh
+
+		</concat>
+		<concat destfile="${linux-binaries}/install-3D.sh" append="true">
+			<filelist dir="${linux-binaries}" files="install.sh.tmp"/>
+		</concat>
+		<delete file="${linux-binaries}/install.sh.tmp"/>
+	    <exec executable="bash">
+			<arg value="-c"/>
+			<arg value="cd ${buildman-lin}/lib/ ; (find . -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/\1=\2/g' > ${linux-binaries}/links.properties)"/>
+		</exec>
+		-->
+
+
+	</target>
+
+	<target name="copy-linux-binaries-complete" if="isLinux" depends="update-binaries-remote">
+		<property name="linux-binaries" value="${binaries}/linux/3D" />
+		<delete includeemptydirs="true">
+			<fileset dir="${linux-binaries}/.." includes="**/*" excludes="*.head" />
+		</delete>
+		<mkdir dir="${linux-binaries}" />
+		<copy todir="${linux-binaries}">
+			<fileset dir="${buildman-lin}/lib/" includes="*.so*,**/*.so*" followsymlinks="false" />
+		</copy>
+		<echo>
+			Generando fichero de links simbolicos
+		</echo>
+
+		<exec executable="${basedir}/gen_simb_link.sh">
+		</exec>
+		<!--
+	    <exec executable="bash">
+			<arg value="-c"/>
+			<arg value="find ${buildman-lin}/lib/ -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -s \2 \1/g' > ${linux-binaries}/install.sh.tmp"/>
+		</exec>
+		<concat destfile="${linux-binaries}/install-3D.sh">#!bin/sh
+
+		</concat>
+		<concat destfile="${linux-binaries}/install-3D.sh" append="true">
+			<filelist dir="${linux-binaries}" files="install.sh.tmp"/>
+		</concat>
+		<delete file="${linux-binaries}/install.sh.tmp"/>
+	    <exec executable="bash">
+			<arg value="-c"/>
+			<arg value="cd ${buildman-lin}/lib/ ; (find . -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/\1=\2/g' > ${linux-binaries}/links.properties)"/>
+		</exec>
+		-->
+
+
+	</target>
+
+	<target name="update-binaries-cache">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--cache" />
+		</exec>
+	</target>
+
+	<target name="update-binaries-remote">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--remote" />
+		</exec>
+	</target>
+
+	<target name="update-binaries-atifglrx-remote">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--file" />
+			<arg value="depman-atifglrx.xml" />
+			<arg value="--remote" />
+		</exec>
+	</target>
+
+	<target name="get-win-binaries">
+		<exec executable="python">
+			<arg value="${depman.executable}" />
+			<arg value="--platform" />
+			<arg value="win" />
+			<arg value="update" />
+		</exec>
+	</target>
+	<target name="get-linux-binaries">
+		<exec executable="python">
+			<arg value="${depman.executable}" />
+			<arg value="--platform" />
+			<arg value="linux" />
+			<arg value="update" />
+		</exec>
+	</target>
+
+
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/maven-build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/maven-build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/maven-build.xml	(revision 29090)
@@ -0,0 +1,160 @@
+<project name="copy-native" default="install-binaries" basedir=".">
+	<description>
+		Downloads and copy all native dependencies.
+	</description>
+	<property name="binaries" location="${basedir}/../binaries/" />
+	<property name="buildman.executable" location="${basedir}/buildman/bin/bmn.py" />
+	<property environment="env" />
+	<condition property="depman" value="${env.HOMEPATH}/DepMan/">
+		<or>
+			<os family="windows" />
+			<os family="win9x" />
+			<os name="Windows Vista" />
+		</or>
+	</condition>
+	<condition property="depman" value="${env.HOME}/.depman/">
+		<and>
+			<os family="unix" />
+			<not>
+				<os family="mac" />
+			</not>
+		</and>
+	</condition>
+	<condition property="depman" value="/Developer/DepMan/">
+		<os family="mac" />
+	</condition>
+
+	<condition property="isLinux">
+		<os family="unix" />
+	</condition>
+	<condition property="isWindows">
+		<or>
+			<os family="windows" />
+			<os family="win9x" />
+			<os name="Windows Vista" />
+		</or>
+	</condition>
+	<condition property="isMac">
+		<os family="mac" />
+	</condition>
+	
+	<condition property="binaries-dir" value="${binaries}/w32/3D">
+		<or>
+			<os family="windows" />
+			<os family="win9x" />
+			<os name="Windows Vista" />
+		</or>
+	</condition>
+	<condition property="binaries-dir" value="${binaries}/linux/3D">
+		<os family="unix" />
+	</condition>
+	<condition property="binaries-dir" value="${binaries}/mac/3D">
+		<os family="mac" />
+	</condition>
+	
+	
+	<target name="install-binaries" depends="copy-binaries">
+		<copy todir="${install-binaries-dir}">
+			<fileset dir="${binaries-dir}" includes="**/**"
+				excludes="*.exe,*.head,links.properties" />
+		</copy>
+	</target>
+
+	<target name="copy-binaries"
+		depends="copy-linux-binaries,copy-win-binaries,copy-mac-binaries">
+	</target>
+
+	<target name="copy-win-binaries" if="isWindows"
+		depends="update-binaries-remote">
+		<mkdir dir="${binaries-dir}" />
+		<copy todir="${binaries-dir}">
+			<fileset dir="${depman}/bin/" includes="**/**"
+				excludes="*.exe" />
+		</copy>
+	</target>
+
+	<target name="copy-linux-binaries" if="isLinux"
+		depends="update-binaries-remote">
+		<mkdir dir="${binaries-dir}" />
+		<copy todir="${binaries-dir}">
+			<fileset dir="${depman}/lib/" includes="*.so*,**/*.so*"
+				followsymlinks="false" />
+		</copy>
+
+		<exec executable="${basedir}/gen_simb_link.sh" />
+
+		<exec executable="${binaries-dir}/install-3D.sh" dir="${install-binaries-dir}/../" />
+		<!--
+			<exec executable="bash">
+			<arg value="-c"/>
+			<arg value="find ${depman}/lib/ -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -s \2 \1/g' > ${binaries-dir}/install.sh.tmp"/>
+			</exec>
+			<concat destfile="${binaries-dir}/install-3D.sh">#!bin/sh
+			
+			</concat>
+			<concat destfile="${binaries-dir}/install-3D.sh" append="true">
+			<filelist dir="${binaries-dir}" files="install.sh.tmp"/>
+			</concat>
+			<delete file="${binaries-dir}/install.sh.tmp"/>
+			<exec executable="bash">
+			<arg value="-c"/>
+			<arg value="cd ${depman}/lib/ ; (find . -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/\1=\2/g' > ${binaries-dir}/links.properties)"/>
+			</exec>
+		-->
+	</target>
+	<target name="copy-mac-binaries" if="isMac"
+		depends="update-binaries-remote">
+		<mkdir dir="${binaries-dir}" />
+		<copy todir="${binaries-dir}">
+			<fileset dir="${depman}/lib/"
+				includes="*.so*,**/*.so*,*.dylib*,**/*.dylib*,*.jnilib*,**/*.jnilib*" />
+		</copy>
+
+		<!--exec executable="${basedir}/gen_simb_link_mac.sh" / -->
+
+		<!--
+			<exec executable="bash">
+			<arg value="-c"/>
+			<arg value="find ${depman}/lib/ -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -s \2 \1/g' > ${binaries-dir}/install.sh.tmp"/>
+			</exec>
+			<concat destfile="${binaries-dir}/install-3D.sh">#!bin/sh
+			
+			</concat>
+			<concat destfile="${binaries-dir}/install-3D.sh" append="true">
+			<filelist dir="${binaries-dir}" files="install.sh.tmp"/>
+			</concat>
+			<delete file="${binaries-dir}/install.sh.tmp"/>
+			<exec executable="bash">
+			<arg value="-c"/>
+			<arg value="cd ${depman}/lib/ ; (find . -type l -exec ls -l {} ';' | sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/\1=\2/g' > ${binaries-dir}/links.properties)"/>
+			</exec>
+		-->
+	</target>
+
+
+	<target name="update-binaries-cache">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--cache" />
+		</exec>
+	</target>
+
+	<target name="update-binaries-remote">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--remote" />
+		</exec>
+	</target>
+
+	<target name="update-binaries-atifglrx-remote">
+		<exec executable="python">
+			<arg value="${buildman.executable}" />
+			<arg value="update" />
+			<arg value="--file" />
+			<arg value="depman-atifglrx.xml" />
+			<arg value="--remote" />
+		</exec>
+	</target>
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/depman.xml	(revision 29090)
@@ -0,0 +1,87 @@
+<depman>
+ <dependencies platform="win">
+   <!-- override platform win with compiler vs7 -->
+   <dependency>
+     <group>org.openscenegraph</group>
+     <artifact>openscenegraph</artifact>
+     <version>2.2.0</version>
+     <type>dynamic</type>
+     <compiler>vs7</compiler>
+   </dependency>
+   <dependency>
+     <group>es.upv.ai2</group>
+     <artifact>osgvp</artifact>
+     <version>2.1.6.5</version>
+     <type>dynamic</type>
+     <compiler>vs7</compiler>
+   </dependency>
+   <dependency>
+     <group>org.gdal</group>
+     <artifact>gdal</artifact>
+     <version>1.2.6</version>
+     <type>dynamic</type>
+     <compiler>vs6</compiler>
+   </dependency>
+   <dependency>
+     <group>jogl</group>
+     <artifact>jogl</artifact>
+     <version>1.1.0</version>
+     <type>dynamic</type>
+     <compiler>all</compiler>
+   </dependency>
+
+ </dependencies>
+ <dependencies platform="linux">
+   <!-- others platform same configuration -->
+   <dependency>
+     <group>org.openscenegraph</group>
+     <artifact>openscenegraph</artifact>
+     <version>2.2.0</version>
+     <type>dynamic</type>
+   </dependency>
+   <dependency>
+     <group>es.upv.ai2</group>
+     <artifact>osgvp</artifact>
+     <version>2.1.6.5</version>
+     <type>dynamic</type>
+   </dependency>
+   <dependency>
+     <group>jogl</group>
+     <artifact>jogl</artifact>
+     <version>1.1.0</version>
+     <type>dynamic</type>
+   </dependency>
+   <!-- dependency>
+     <group>org.gdal</group>
+     <artifact>gdal</artifact>
+     <version>1.4.0</version>
+     <type>dynamic</type>
+   </dependency-->
+ </dependencies>
+<dependencies platform="mac">
+   <!-- others platform same configuration -->
+   <dependency>
+     <group>org.openscenegraph</group>
+     <artifact>openscenegraph</artifact>
+     <version>2.2.0</version>
+     <type>dynamic</type>
+     <architecture>universal</architecture>
+   </dependency>
+   <dependency>
+     <group>es.upv.ai2</group>
+     <artifact>osgvp</artifact>
+     <version>2.1.6.5</version>
+     <type>dynamic</type>
+     <architecture>universal</architecture>
+   </dependency>
+   <dependency>
+     <group>jogl</group>
+     <artifact>jogl</artifact>
+     <version>1.1.0</version>
+     <type>dynamic</type>
+     <compiler>all</compiler>
+   </dependency>
+ </dependencies>
+
+</depman>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/config.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/config.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/config.xml	(revision 29090)
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<plugin-config>
+	<depends plugin-name="com.iver.cit.gvsig" />
+	<depends plugin-name="com.iver.core" />
+	<libraries library-dir="./lib" />
+	<resourceBundle name="text" />
+	<extensions>
+		<extension class-name="org.gvsig.gvsig3dgui.Extension3D"
+			description="Shows a 3D View" active="true" priority="50">
+			<tool-bar name="Tools3D">
+				<selectable-tool icon="images/ejemplo.png"
+					action-command="SHOW3D" tooltip="show_3Dview" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.InitialWarningExtension3D"
+			description="Initial warning message" active="true" priority="1">
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.navigation.NavigationMenu3D"
+			description="Extensión encargada de manejar los ditintos tipos de manipuladores de la vista."
+			active="true" priority="31">
+			<menu text="Vista/navegacion/Default_Navigation" action-command="DEFAULT_SELECT"
+				icon="default-manipulator-icon" />
+			<menu text="Vista/navegacion/Pan_Navigation" action-command="PAN_SELECT"
+				icon="roll-manipulator-icon" />
+			<menu text="Vista/navegacion/Zoom_Navigation" action-command="ZOOM_SELECT"
+				icon="zoom-manipulator-icon" />
+			<menu text="Vista/navegacion/Azimut_Navigation" action-command="AZIMUT_SELECT"
+				icon="azimut-manipulator-icon" />
+			<menu text="Vista/navegacion/Active_north" action-command="ACTIVE"
+				icon="north-disable-icon" />
+			<!--
+				<menu text="Vista/modos/Wire_Frame" action-command="WIRE_FRAME"
+				icon="images/WireFrame.png"/>
+			-->
+			<tool-bar name="NavigationMenu3D" position="3">
+				<selectable-tool group="navigation" is-default="true"
+					icon="default-manipulator-icon" action-command="DEFAULT_SELECT"
+					tooltip="Default_Navigation" position="1" />
+				<selectable-tool group="navigation" icon="roll-manipulator-icon"
+					action-command="PAN_SELECT" tooltip="Pan_Navigation" position="2" />
+				<selectable-tool group="navigation" icon="zoom-manipulator-icon"
+					action-command="ZOOM_SELECT" tooltip="Zoom_Navigation" position="3" />
+				<selectable-tool group="navigation" icon="azimut-manipulator-icon"
+					action-command="AZIMUT_SELECT" tooltip="Azimut_Navigation"
+					position="4" />
+				<action-tool icon="north-disable-icon" name="NORTH"
+					action-command="ACTIVE" tooltip="Active_north" position="5" />
+				<!--
+					<action-tool icon="images/WireFrame.png"
+					action-command="WIRE_FRAME" tooltip="Wire_Frame" position="6"/>
+				-->
+				<action-tool icon="global-zoom-icon" action-command="RESET_VIEW"
+					tooltip="Reset_View" position="7" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.layer.MenuZoom3D"
+			description="Extensión encargada de abrir el menu de opciones de zoom 3D."
+			active="true" priority="51">
+			<menu text="Vista/navegacion/Zoom_Select" action-command="ZOOM_SELECT"
+				icon="zoom-selection-icon" />
+			<menu text="Capa/Transparency" name="TRANSPARENCY"
+				action-command="TRANSPARENCY" icon="transparency-icon" />
+			<tool-bar name="MenuZoom3D" position="4">
+				<action-tool icon="zoom-selection-icon" action-command="ZOOM_SELECT"
+					tooltip="Zoom_Select" position="2" />
+				<action-tool icon="transparency-icon" name="TRANSPARENCY"
+					action-command="TRANSPARENCY" tooltip="Transparency" position="1" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.camera.Menu3D"
+			description="Extensión encargada de abrir el menu de opciones 3D."
+			active="true" priority="40">
+			<menu text="Vista/navegacion/Encuadre" action-command="ENCUADRE"
+				icon="encuadrator-icon" />
+			<!--
+				<menu text="Vista/navegacion/Insertar Punto"
+				action-command="POINT3D" icon="images/InsertPoint.png"/>
+			-->
+			<tool-bar name="Menu3D" position="5">
+				<action-tool icon="encuadrator-icon" action-command="ENCUADRE"
+					tooltip="gestion_encuadre" position="1" />
+				<!--
+					<action-tool icon="images/InsertPoint.png" action-command="POINT3D"
+					tooltip="insercion_de_puntos_3D" position="2"/>
+				-->
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.display.DisplayMenu"
+			description="Extensión encargada de abrir el menu de opciones de visualización."
+			active="true" priority="51">
+			<menu text="Vista/Visualización/Opciones de Visualización"
+				action-command="DISPLAY" icon="display-icon" />
+			<tool-bar name="MenuVisualizacion" position="4">
+				<action-tool icon="display-icon" action-command="DISPLAY"
+					tooltip="Visualizacion" position="2" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.display.FullScreenMenu"
+			description="Extensión encargada de activar el modo de pantalla completa"
+			active="true" priority="51">
+			<menu text="Vista/Visualización/Pantalla Completa"
+				action-command="FULLSCREEN" icon="fullscreen-icon" />
+			<tool-bar name="MenuFullScreen" position="4">
+				<action-tool icon="fullscreen-icon" action-command="FULLSCREEN"
+					tooltip="Pantalla Completa" position="2" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.display.ProjectionMode"
+			description="Extensión encargada de cambiar el tipo de proyeccion entre Perspectiva y Ortográfica"
+			active="true" priority="51">
+			<menu text="Vista/Visualización/Tipo de Proyeccion"
+				action-command="PROJECTION" icon="projection-icon" />
+			<tool-bar name="MenuProjection" position="4">
+				<action-tool icon="projection-icon" action-command="PROJECTION"
+					tooltip="Modo de Proyeccion" position="2" />
+			</tool-bar>
+		</extension>
+
+		<extension class-name="org.gvsig.gvsig3dgui.display.EnableCompass"
+			description="Extensión encargada de mostrar/ocultar la brujula"
+			active="false"
+			priority="51">
+
+			<menu text="Vista/Visualización/Brujula" action-command="COMPASS" icon="compass-icon"/>
+			<tool-bar name="EnableCompass" position="4">
+				<action-tool icon="compass-icon" action-command="COMPASS"  tooltip="Modo de Brujula" position="2"/>
+			</tool-bar>
+		</extension>
+		
+			
+		<extension class-name="org.gvsig.gvsig3dgui.view.ViewPropertiesExtension3D"
+			description="Extensión encargada de manejar de activar siempre al norte."
+			active="true">
+			<menu text="Vista/propiedades" action-command="PROPERTIES" />
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.view.Export"
+			description="Extensión encargada de exportar una vista al formato de imagen que se seleccione."
+			active="true">
+			<menu text="Vista/Exportar/Imagen" />
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.import3D.CreateNewLayerOSG"
+			description="Crear una nueva capa." active="true">
+			<menu text="Vista/new_layer/new_osg" action-command="CREARCAPA" />
+			<tool-bar name="DriverOSG" position="6">
+				<action-tool icon="create_new_layer_OSG" action-command="CREARCAPA"
+					tooltip="Crear_capa_osg" position="1" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.import3D.MenuImport3D"
+			description="Extensión encargada de importar objetos 3D no GIS."
+			active="true" priority="30">
+			<menu text="Vista/import/Objeto_3D" action-command="OBJECT" />
+			<!--
+				menu text="Vista/import/Objeto_3D_Vectorial"
+				action-command="OBJECT_VECTORIAL"/
+			-->
+			<!--menu text="Vista/Crear_capa"
+				action-command="CREARCAPA" /-->
+			<!--
+				menu text="Vista/Capturar_capa" action-command="SALVARCAPA" /
+			-->
+			<tool-bar name="DriverOSG" position="6">
+				<action-tool icon="insert_new_geometry_OSG"
+					action-command="OBJECT" tooltip="Importar" position="2" />
+				<!--
+					action-tool icon="images/plugin_edit.png"
+					action-command="SALVARCAPA" tooltip="Salvar_capa" position="3" /
+				-->
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.import3D.SaveLayerOSG"
+			description="Salvar una capa." active="true">
+			<menu text="Vista/save_layer_osg" action-command="SALVARCAPA" />
+			<tool-bar name="DriverOSG" position="6">
+				<action-tool icon="save_layer_OSG" action-command="SALVARCAPA"
+					tooltip="save_layer_osg" position="3" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.layer.ViewSelectionControls3D"
+			description="Extensión encargada de gestionar la vista." active="true"
+			priority="30">
+			<menu text="Vista/seleccion/seleccionar_por_punto"
+				action-command="SELPOINT" icon="view-select-geometry" />
+			<menu text="Vista/seleccion/seleccionar_por_rectangulo"
+				action-command="SELRECT" icon="view-select-by-rectangle" />
+			<menu text="Vista/seleccion/seleccionar_por_poligono"
+				action-command="SELPOL" icon="view-select-by-polygon" />
+			<menu text="Vista/seleccion/Seleccion_por_capa" action-command="SELECTIONBYSHAPE" />
+			<menu text="Vista/seleccion/separator" action-command="separator"
+				is_separator="true" />
+			<menu text="Vista/seleccion/invert_selection" action-command="INVERT_SELECTION"
+				icon="view-select-invert" />
+			<tool-bar name="Tools_Select" position="7">
+				<selectable-tool icon="view-select-geometry"
+					action-command="SELPOINT" tooltip="seleccionar_por_punto" position="1" />
+				<selectable-tool icon="view-select-by-rectangle"
+					action-command="SELRECT" tooltip="seleccionar_por_rectangulo"
+					position="2" />
+				<selectable-tool icon="view-select-by-polygon"
+					action-command="SELPOL" tooltip="seleccionar_por_poligono"
+					position="3" />
+				<action-tool icon="view-select-invert" action-command="INVERT_SELECTION"
+					tooltip="invert_selection" position="4" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.legend.Legend3DExtension"
+			description="Extensión para nuevas leyendas 3D." active="true"
+			priority="30">
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.layout.layout3DExtension"
+			description="Extensión encargada del layout para 3D." active="true"
+			priority="30">
+			<menu text="Mapa/insert_3D_view" action-command="INSERT_3D_VIEW"
+				icon="insert_3d_view_map" />
+			<tool-bar name="Layout_Tools_Insert_Cartografy" position="7">
+				<!--
+					selectable-tool icon="layout-insert-view"
+					action-command="RECTANGLEVIEW" tooltip="insertar_vista"
+					position="1"/
+				-->
+				<selectable-tool icon="insert_3d_view_map"
+					action-command="INSERT_3D_VIEW" tooltip="insert_3d_view_map"
+					position="4" />
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.manipulator.Manipulator3DExtension"
+			description="Extensión encargada de la manipulación de geometrias 3D."
+			active="true" priority="40">
+			<tool-bar name="Editing_tools" position="7">
+				<selectable-tool icon="rotation_manipulator"
+					action-command="ROTATION_MANIPULATOR" tooltip="rotation_manipulator"
+					position="1" />
+				<selectable-tool icon="tabbox_manipulator"
+					action-command="TABBOX_MANIPULATOR" tooltip="tabbox_manipulator"
+					position="2" />
+				<!--
+					<selectable-tool icon="scale_manipulator"
+					action-command="SCALE_MANIPULATOR" tooltip="scale_manipulator"
+					position="3"/>
+				-->
+			</tool-bar>
+		</extension>
+		<extension class-name="org.gvsig.gvsig3dgui.AboutExtension3D"
+			description="Extension to add about panel." active="true" priority="1">
+		</extension>
+		
+		<extension class-name="org.gvsig.gvsig3dgui.layer.properties.Module3D"
+			description="Módulo adaptador para la librería de raster." active="true"
+			priority="30">
+		</extension>
+		<skin-extension class-name="org.gvsig.gvsig3dgui.skin.JDialogSkin">
+		</skin-extension>
+	</extensions>
+</plugin-config>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/logo_ai2.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/logo_ai2.jpg
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text.properties
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text.properties	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text.properties	(revision 29090)
@@ -0,0 +1,145 @@
+#Translations for language [es]
+#Mon Dec 04 18:37:02 GMT+01:00 2006
+show_3Dview=Vista 3D
+Vista3D=Vista 3D
+Default_Navigation=Navegación combinada
+Pan_Navigation=Desplazamiento
+Zoom_Navigation=Zoom
+Azimut_Navigation=Inclinación
+Wire_Frame=Wire Frame
+Reset_View=Zoom completo
+Active_north=Siempre al norte
+Ac_north=Activar
+Des_north=Desactivar
+# Buttons
+Close=Cerrar
+Accept=Aceptar
+Apply=Aplicar
+Cancel=Cancelar
+# Transparency tool
+Transparency=Transparencia de la capa
+# Herramienta de visualizacion
+Display=Propiedades de Visualización
+Anaglyphic=Anaglifo
+HorizontalInterlace=Entrelazado Horizontal
+VerticalInterlace=Entrelazado Vertical
+HorizontalSplit=Split Horizontal
+LeftEye=Ojo Izquierdo
+RightEye=Ojo Derecho
+QuadBuffer=Quad Buffer
+HeadMounted= Casco Visor
+Monitor=Monitor
+PowerWall=PowerWall
+RealityCenter=Centro de Realidad Virtual 
+None=Ninguno
+2X=2X
+4X=4X
+0=0
+1=1
+Refresh_automaticaly=Refrescar la vista automaticamente
+FullScreen="Pantalla Completa"
+# 3D View Properties
+view_3D_properties=Propiedades de la vista 3D
+Name=Nombre:
+Creation_Date=Fecha de creacion:
+Owner=Propietario:
+Proyection_Select=Seleccione tipo:
+Commentaries=Comentarios:
+Vertical_Exageration=Exageración vertical:
+Background_Color=Color de fondo:
+Spherical=Esferica
+Flat=Plana
+Select_Color=Seleccion de color
+##
+Layer_Refresh=Refrescar la capa
+Layer_options=Opciones de capa 3D
+Rasterize_layer_question=¿Desea rasterizar la capa (Si/No)?
+Elevation_layer_question=¿Desea usar esta capa como elevación (Si/No)?
+Only_one_elevation_messg=Ya existe una capa de elevación en la vista.
+Only_one_elevation_title=Informaci\u00f3n sobre capa de elevaci\u00f3n
+Heigth_layer_question=Altura de los vectores (en metros)
+#HUD
+North=N
+South=S
+East=E
+West=O
+Ext3D.latitude=LAT 
+Ext3D.longitude=LONG
+X=X
+Y=Y
+No_available=Servicio no disponible
+Heigth_Z=Valor Z asociado a la capa
+Raster_layer=Rasterizar la capa
+Layer_Properties=Propiedades de la capa.
+North_plane=ESTA HERRAMIENTA NO ESTA DISPONIBLE EN VISTA PLANA
+#Preferences
+Swing_Compability=Activar compatibilidad con Java / Swing
+AWT=Si
+GL=No
+#AnimationGui
+Check_Text=Visualizaci\u00f3n frames
+Label_Duration =Duraci\u00f3n
+Label_Mode=Modo
+Window_Title=Controles de animación
+Text_Secs=Duraci\u00f3n(segs)
+initial_warning_3D=<HTML><B>\u00a1ATENCI\u00d3N\!</B><br>La extension 3D podria no mostrarse correctamente. Por favor realice las siquiente operaciones:<br> 
+initial_canvas_warning=Menu Ventana-&gt;Preferencias: menu 3D, desavilitar quitar la compatibilidad con Java / Swing.<br>
+initial_skin_warning=Menu Ventana-&gt;Preferencias: menu General-&gt;Skin seleccionar el JdialogSkin o DockingSkin</HTML>
+Nivel_de_extrusión=Nivel de extrusi\u00f3n
+#Importacion de objetos
+Objeto_3D=Objeto 3D
+Objeto_3D_GIS=Objeto 3D GIS
+Objeto_3D_GIS_Vectorial=Objeto 3D GIS Vectorial
+Latitude=Latitud:
+Longitude=Longitud:
+Rotation=Rotaci\u00f3n:
+EscaladoX=EscaladoX:
+EscaladoY=EscaladoY:
+EscaladoZ=EscaladoZ:
+Hight=Altura:
+File=Fichero
+Examine=Examinar
+Importar_Objeto_3D=Importar Objeto 3D
+Importar_Objeto_3D_Vectorial=Importar Objeto 3D Vectorial
+Ruta_manual=Introducir ruta
+root_in=Introduce o selecciona un fichero
+no_file=Fichero no introducido
+no_file2=Fichero no encontrado
+no_root=La ruta no existe
+editable_layer_select_info=Selecciona una capa editable OSG
+editable_layer_select=Capa no selecionada o capa no válida
+#Panel Propiedades
+Factor=Factor
+Offset=Offset
+Opciones_de_imagen=Opciones de imagen
+Opciones_de_elevación=Opciones de elevaci\u00f3n
+Opciones_de_objeto=Opciones de objeto
+Pegado_sobre_el_terreno=Pegado sobre el terreno
+Elevacion=Elevaci\u00f3n
+Propiedades_3D=Propiedades 3D
+Layer3D=Layer3D
+Capa_Vectorial=Capa Vectorial
+Opciones=Opciones
+Valor_minimo_de_escala=Valor mínimo de escala
+Valor_maximo_de_escala=Valor máximo de escala
+Informacion=Informac\u00f3n
+Altura_en_metros=Altura en metros
+Nivel_de_detalle=Nivel de detalle
+Capa_Raster=Capa Raster
+Activar_profundidad_maxima=Activar profundidad máxima
+Activar_intervalo=Activar intervalo
+Rango_maximo=Rango máximo
+Rango_minimo=Rango mínimo
+new_osg=Nuevo OSG
+new_layer=Nueva capa
+Rotation_degreesX=Rotaci\u00f3n(grados)X:
+Rotation_degreesY=Rotaci\u00f3n(grados)Y:
+Rotation_degreesZ=Rotaci\u00f3n(grados)Z:
+Crear_capa_osg=Crear nueva capa OSG
+save_layer_osg=Salvar capa OSG
+Nivel_de_extrusion=Nivel de extrusi\u00f3n
+Altura_fija=Altura fija
+Extrusion=Extrusi\u00f3n
+Valor_inicial=Valor inicial
+Valor_extrusionado=Valor extrusionado
+info_extrusion=Acceso a campos numéricos de capas vectoriales, aplicando un nivel de extrusi\u00f3n individual o fijo.
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/about.htm
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/about.htm	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/about.htm	(revision 29090)
@@ -0,0 +1,40 @@
+<html>
+  <head>
+    <title>Extension 3D del programa GvSIG </title>
+    <meta content="">
+    <style></style>
+  </head>
+  <body>
+<table width="60%" border="0">
+  <tr>
+    <td width="50%"><div align="right"><img src="images/logoIver.png" width="87" height="50"></div></td>
+    <td width="50%"><img src="logo_ai2.jpg"></td>
+  </tr>
+  <tr>
+    <td colspan="2"><font face="Arial, Helvetica, sans-serif">&copy; Copyright
+      Generalitat Valenciana, IVER T.I and other contributors 2008.</font></td>
+  </tr>
+</table>
+  <h2>Plugin 3D para gvSIG</h2>	
+		<p><b>Iver T.I y AI2</b> ha añadido la <b>Extensi&oacute;n 3D</b>
+		 a GvSIG.</p>
+		
+		<p><b>Desarrollo:</b></p>
+		
+		<p>Directores del proyecto:</p>
+		<ul>
+			<li>Salvador Bayarri</li>
+			<li>Javier Lluch</li>
+		</ul>
+		<p>Equipo de desarrollo:</p>
+		<ul>
+			<li>Rafael Gait&aacute;n,</li>
+			<li>Julio Campos,</li>
+			<li>Jordi Torres,</li>
+			<li>Mar&iacute;a Ten,</li>
+			<li>Angel Fraile,</li>
+			<li>Jes&uacute;s Zarzoso</li>
+		</ul>
+  <p><b> Build Number: 6</b></p>
+  </body>
+</html>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text_ca.properties
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text_ca.properties	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/config/text_ca.properties	(revision 29090)
@@ -0,0 +1,12 @@
+#Translations for language [ca]
+#Mon Dec 04 18:37:02 GMT+01:00 2006
+show_3Dview=Vista 3D
+Default_Select=Navegación por defecto
+Pan_Select=Desplazamiento
+Zoom_Select=Zoom
+Azimut_Select=Inclinaci\u00f3n
+Wire_Frame=Wire Frame
+Reset_View=Resetear Vista
+Nivel_de_extrusión=Nivel de extrusi\u00f3n
+Objeto_3D=Objeto 3D
+Objeto_3D_GIS=Objeto 3D GIS
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/doc/config_eclipse.html
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/doc/config_eclipse.html	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/doc/config_eclipse.html	(revision 29090)
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE>Configuraci&oacute;n del arranque de gvSIG dentro de eclipse con 3D</TITLE>
+</HEAD>
+<BODY LANG="es-ES" DIR="LTR">
+<H2>Plugin de 3D para gvSIG:</H2>
+<H3>Cambios en la configuraci&oacute;n del arranque
+de gvSIG para que funcione el plugin:</H3>
+<P ALIGN=JUSTIFY>El plugin de 3D requiere unas librer&iacute;as en el
+<I>classpath</I> de arranque de <I>andami</I> y para no tener que
+modificar las propiedades del proyecto, vamos a explicar los cambios en la
+configuraci&oacute;n del <I>Run</I> para que arranque la aplicaci&oacute;n correctamente:</P>
+<ol>
+  <li>Abrir la configuraci&oacute;n del <I>Run</I>.</li>
+  <li>PestaÃ±a <b><i>Classpath</i></b> </li>
+  <li>Pinchar sobre el elemento de la lista <i>User entries</i></li>
+  <li>Bot&oacute;n <i>Add Jars...</i></li>
+  <li>De <i>_fwAndami/lib</i> seleccionar los siguientes proyectos<BR>
+  	<ul>
+  		<li>jogl*.jar</li>
+  		<li>libosg-*.jar</li>
+  		<li>libNative-*.jar</li>
+  		<li>gluegen-rt-*.jar</li>
+  	</ul>
+  </li>
+</ol>
+</BODY>
+</HTML>
\ No newline at end of file

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/doc/config_eclipse.html
___________________________________________________________________
Added: svn:mime-type
   + text/html

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/DefaultManipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/DefaultManipulator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomManipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomManipulator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/AzimuthCursor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/AzimuthCursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomCursor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomCursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/rotation_manipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/rotation_manipulator.png
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/mini_check_2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/mini_check_2.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/projection.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/projection.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/NavigationCursor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/NavigationCursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/WireFrame.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/WireFrame.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/zoom.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/zoom.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/RollManipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/RollManipulator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/Alpha.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/Alpha.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/logoIver.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/logoIver.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/encuadre.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/encuadre.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/rotar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/rotar.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/North.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/North.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3DSel_old.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3DSel_old.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/tabbox_manipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/tabbox_manipulator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3DSel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3DSel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/Global.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/Global.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/fullscreen.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/fullscreen.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_edit.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_edit.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/display.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/display.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/mini_no_check_2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/mini_no_check_2.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_add.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_add.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomSeleccion.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ZoomSeleccion.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_link.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/plugin_link.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/tabbox_manipulator.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/tabbox_manipulator.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/InsertPoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/InsertPoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/logo3D_es.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/logo3D_es.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/layout-insert-view3D.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/layout-insert-view3D.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/AzimutManipulator.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/AzimutManipulator.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/NorthDes.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/NorthDes.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3D_old.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3D_old.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/norte.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/norte.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3D.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ProjectView3D.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/compass-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/compass-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ejemplo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/ejemplo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/PanCursor.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images/PanCursor.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/images
___________________________________________________________________
Added: svn:ignore
   + *.db


Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/generate-install.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/generate-install.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/generate-install.sh	(revision 29090)
@@ -0,0 +1,32 @@
+echo  CONFIGURING BASE PROJECTS  
+echo  CONFIGURING BASE PROJECTS  
+echo  CONFIGURING BASE PROJECTS  
+cd ../build/projects/gvsig-plugin-base
+mvn clean
+mvn install -Dmaven.test.skip
+mvn clean
+echo CLEANING  3D  PROJECTS
+echo CLEANING  3D  PROJECTS  
+echo CLEANING  3D  PROJECTS
+cd ../gvsig-plugin-3D
+mvn clean
+echo  CLEANING ANIMATION PROJECTS  
+echo  CLEANING ANIMATION PROJECTS  
+echo  CLEANING ANIMATION PROJECTS  
+cd ../gvsig-plugin-animation
+mvn clean
+echo  CONFIGURING 3D PROJECTS  
+echo  CONFIGURING 3D PROJECTS  
+echo  CONFIGURING 3D PROJECTS  
+cd ../gvsig-plugin-3D
+mvn install -Dmaven.test.skip -Dinstall-extension
+echo  CONFIGURING ANIMATION PROJECTS  
+echo  CONFIGURING ANIMATION PROJECTS  
+echo  CONFIGURING ANIMATION PROJECTS  
+cd ../gvsig-plugin-animation
+mvn install -Dmaven.test.skip -Dinstall-extension
+echo  GENERATING INSTALLER  
+echo  GENERATING INSTALLER  
+echo  GENERATING INSTALLER  
+cd ../../../ext3Dgui
+mvn install -Dmaven.test.skip -Dgenerate-install
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link.sh	(revision 29090)
@@ -0,0 +1,7 @@
+export BINARIES_3D=$PWD/../binaries/linux/3D;
+echo $BINARIES_3D;
+cd $HOME/.depman/lib
+find . -type l -exec ls -l {} ';' |sed 's/.*[.][/]//g' | sed 's/\(.*\) -> \(.*\)$/ln -sf \2 \1/g' > $BINARIES_3D/install-3D.tmp ;
+cat $BINARIES_3D/install-3D.sh.head $BINARIES_3D/install-3D.tmp > $BINARIES_3D/install-3D.sh ;
+chmod +x $BINARIES_3D/install-3D.sh
+rm -f $BINARIES_3D/install-3D.tmp

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/gen_simb_link.sh
___________________________________________________________________
Added: svn:executable
   + *

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/compass.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/compass.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/flag.ive
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/flag.ive
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/arial.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/resources/arial.ttf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/build.xml	(revision 29090)
@@ -0,0 +1,258 @@
+<?xml version="1.0" ?>
+<project default="main">
+
+
+	<property file="./build.number"/>
+	<!--COMPROBAR EXTENSIONES -->
+	<!--property name="version" value="1.9b" />
+	<property name="bversion" value="build_${build.number}" />
+	<property name="APPNAME" value="gvSIG3D" />
+	<property name="OUTPUT_DIR" location="./target/installers" /-->
+
+
+	<property name="DIR_LIN" location="./distribution/linux-distribution" />
+	<property name="DIR_WIN" location="./distribution/win-distribution" />
+	<property name="DIR_MAC" location="./mac-distribution" />
+	<property name="baseFileName" value="${APPNAME}-${version}-build-${bversion}" />
+	<property name="LINUXBIN" value="${baseFileName}-linux-i586.bin" />
+	<property name="LINUXBINWITHJRE" value="${baseFileName}-linux-i586-withjre.bin" />
+	<property name="WINDOWSZIP" value="${baseFileName}-windows-i586.7z" />
+	<property name="WINDOWSEXE" value="${baseFileName}-windows-i586.exe" />
+	<property name="WINDOWSEXEWITHJRE" value="${baseFileName}-windows-i586-withjre.exe" />
+	<property name="MAC_10_ZIP" value="${baseFileName}-mac-10_4.zip" />
+	<property name="JARNAME" value="${APPNAME}-${bversion}.jar" />
+	<property name="INSTALLER_DIR" value="${APPNAME}-${version}_installer" />
+	<property name="nombre_autoinstalador" value="gvSIG ${version} build ${build.number} autoinstalador" />
+	<!--OJO!!!! HAY QUE REVISAR ESTO -->
+	<property environment="env" />
+
+
+	<condition property="LAUNCHER7Z" value="../build/distribution/launcher/7z/7za" else="../build/distribution/launcher/7z/7z.exe">
+		<os family="unix" />
+	</condition>
+	<!--condition property="LAUNCHER7Z" value="7za" else="7z.exe">
+			<os family="unix" />
+		</condition-->
+
+	<condition property="Lang.Is.Spanish">
+		<contains string="${env.LANG}" substring="es" />
+	</condition>
+	<condition property="directorio.base">
+		<available file="../install" type="dir" />
+	</condition>
+
+	<target name="E_Spanish" if="Lang.Is.Spanish">
+		<property name="ERROR_BASEDIR" value="Este script debe invocarse desde el directorio install del workspace" />
+	</target>
+
+	<target name="E_notSpanish" unless="Lang.Is.Spanish">
+		<property name="ERROR_BASEDIR" value="This script must be run from the workspace\install's directory" />
+	</target>
+
+	<target name="check" depends="E_Spanish,E_notSpanish">
+		<fail message="${ERROR_BASEDIR}" unless="directorio.base" />
+	</target>
+
+	<!-- target name="main" depends="Linux,Windows" -->
+	<target name="main" depends="Linux,Windows">
+		<echo message="DISTRIBUCION" />
+	</target>
+	<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	-->
+	<target name="Linux" depends="CreateJarLin,InstallationLin,concatenation,cleanDirLIN">
+		<echo> ********************************************* </echo>
+		<echo> ********         LINUX DONE         *********</echo>
+		<echo> ********************************************* </echo>
+	</target>
+
+	<target name="CreateJarLin" description="Generacion del instalador(jar) para Linux">
+		<!-- 		Generamos el instalador (jar) para Linux -->
+		<delete file="../${JARNAME}" />
+		<ant dir="${DIR_LIN}">
+			<property name="JARNAME" value="${JARNAME}" />
+			<property name="GVSIG_VERSION" value="${version}" />
+			<property name="APPNAME" value="${APPNAME}" />
+		</ant>
+	</target>
+	<target name="InstallationLin" description="Generacion de la distribucion">
+		<echo> ********************************************* </echo>
+		<echo> Buildnumber----> ${build.number} --- version--> ${version}</echo>
+		<echo> ********************************************* </echo>
+
+		<!-- 		INSTALACION PARA LINUX -->
+		<delete dir="${DIR_LIN}/${INSTALLER_DIR}" />
+		<mkdir dir="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall" />
+		<move todir="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall">
+			<fileset file="./${JARNAME}" />
+		</move>
+
+		<!-- 		carpetas CVS no se copiaran, ANT las excluye por defecto -->
+		<copy todir="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall">
+			<fileset dir="../build/distribution/launcher/izpack-launcher-1.3_linux/dist">
+				<exclude name="launcher.ini" />
+			</fileset>
+		</copy>
+		<chmod file="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall/launcher-Linux" perm="ugo+rx" />
+
+		<copy file="${DIR_LIN}/resources/launcher.ini.j15" tofile="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall/launcher.ini" />
+		<replace file="${DIR_LIN}/${INSTALLER_DIR}/tmp_gvSIGInstall/launcher.ini" token="%JARNAME%" value="${JARNAME}" />
+
+		<!-- 		comprimimos la carpeta tmp_gvSIGInstall en tmp.tgz -->
+		<tar destfile="${DIR_LIN}/${INSTALLER_DIR}/tmp.tgz" compression="gzip">
+			<tarfileset dir="${DIR_LIN}/${INSTALLER_DIR}" mode="755">
+				<include name="tmp_gvSIGInstall/launcher-Linux" />
+			</tarfileset>
+			<tarfileset dir="${DIR_LIN}/${INSTALLER_DIR}">
+				<include name="tmp_gvSIGInstall/*" />
+				<exclude name="tmp_gvSIGInstall/launcher-Linux" />
+			</tarfileset>
+		</tar>
+
+		<antcall target="concatenation" />
+
+		<!--echo message="#!/bin/sh${line.separator}" file="${DIR_LIN}/${INSTALLER_DIR}/xx.tmp" append="true" />
+		<echo message="lcount=59${line.separator}" file="${DIR_LIN}/${INSTALLER_DIR}/xxx.tmp" append="true" />
+		<fixcrlf srcdir="${DIR_LIN}/${INSTALLER_DIR}/" includes="**/xx.tmp" eol="lf" eof="remove" />
+		<concat destfile="${DIR_LIN}/${INSTALLER_DIR}/${LINUXBIN}" binary="true">
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/xx.tmp" />
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/xxx.tmp" />
+			<fileset file="../build/distribution/launcher/izpack-launcher-1.3_linux/h_gvSIG-install.sh" />
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/tmp.tgz" />
+		</concat-->
+
+
+	</target>
+
+	<target name="concatenation" description="this target concats all the files into a new bin file">
+		<echo message="#!/bin/sh" file="${DIR_LIN}/${INSTALLER_DIR}/xx.tmp" />
+		<echo message="lcount=59" file="${DIR_LIN}/${INSTALLER_DIR}/xxx.tmp" />
+		<fixcrlf srcdir="${DIR_LIN}/${INSTALLER_DIR}/" includes="**/xx.tmp,**/xxx.tmp" eol="lf" eof="remove" />
+		<concat destfile="${DIR_LIN}/${INSTALLER_DIR}/${LINUXBIN}" binary="true">
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/xx.tmp" />
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/xxx.tmp" />
+			<fileset file="../build/distribution/launcher/izpack-launcher-1.3_linux/h_gvSIG-install.sh" />
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/tmp.tgz" />
+		</concat>
+		<chmod file="${DIR_LIN}/${INSTALLER_DIR}/${LINUXBIN}" perm="ugo+rx" />
+	</target>
+
+	<target name="cleanDirLIN" description="Limpiamos los directorios DIR_LIN">
+
+		<delete file="${DIR_LIN}/${INSTALLER_DIR}/xx.tmp" />
+		<mkdir dir="${OUTPUT_DIR}" />
+		<mkdir dir="${OUTPUT_DIR}/linux" />
+		<move todir="${OUTPUT_DIR}/linux">
+			<fileset file="${DIR_LIN}/${INSTALLER_DIR}/${LINUXBIN}" />
+		</move>
+		<chmod file="${OUTPUT_DIR}/linux/${LINUXBIN}" perm="ugo+rx" />
+		<delete dir="${DIR_LIN}/${INSTALLER_DIR}" />
+
+	</target>
+
+	<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	-->
+	<target name="Windows" depends="CreateJarWin,InstallationWin,cleanDirWIN">
+		<echo> ********************************************* </echo>
+		<echo> ********        WINDOWS DONE        *********</echo>
+		<echo> ********************************************* </echo>
+	</target>
+
+	<target name="CreateJarWin" description="Generacion del instalador(jar) para Windows">
+
+		<!-- 	Instalador para Windows -->
+
+		<echo> ********************************************* </echo>
+		<echo> Buildnumber----> ${build.number} --- version--> ${version}</echo>
+		<echo> ********************************************* </echo>
+		<delete file="./${JARNAME}" />
+		<ant dir="${DIR_WIN}">
+			<property name="JARNAME" value="${JARNAME}" />
+			<property name="GVSIG_VERSION" value="${version}" />
+			<property name="APPNAME" value="${APPNAME}" />
+			<property name="INSTALL_FILE" value="${DIR_WIN}/install_15.xml" />
+			<!-- property name="INSTALL_FILE" value="${DIR_WIN}/install.xml" / -->
+		</ant>
+
+	</target>
+	<target name="InstallationWin" description="Generacion de la distribucion">
+
+		<!-- Coping install.bat file -->
+		<copy todir="${DIR_WIN}/${INSTALLER_DIR}">
+			<fileset dir="${DIR_WIN}/installer_files">
+				<exclude name="install.bat" />
+			</fileset>
+		</copy>
+
+		<!-- Coping the izpack launcher , excluding launcher-win32.ini  -->
+		<copy todir="${DIR_WIN}/${INSTALLER_DIR}">
+			<fileset dir="../build/distribution/launcher/izpack-launcher-1.3/dist">
+				<exclude name="launcher-Win32.ini" />
+			</fileset>
+		</copy>
+
+		<!-- Coping the launcher-win32.ini  -->
+		<copy file="${DIR_WIN}/resources/launcher-Win32.ini.j15" tofile="${DIR_WIN}/${INSTALLER_DIR}/launcher-Win32.ini" />
+
+		<!-- Replacing the token JARNAME with the real name of the jar file  -->
+		<replace file="${DIR_WIN}/${INSTALLER_DIR}/launcher-Win32.ini" token="%JARNAME%" value="${JARNAME}" />
+
+		<!-- Moving the jar file  -->
+		<move todir="${DIR_WIN}/${INSTALLER_DIR}/">
+			<fileset file="./${JARNAME}" />
+		</move>
+		<!-- Removing 7zip file, only if it exits  -->
+		<delete file="${DIR_WIN}/${WINDOWSZIP}" />
+		<!-- Creating new 7zip file -->
+		<!--exec executable="${LAUNCHER7Z}"-->
+		<exec executable="${LAUNCHER7Z}">
+			<arg line="a -r ${DIR_WIN}/${WINDOWSZIP} ${DIR_WIN}/${INSTALLER_DIR}/*" />
+		</exec>
+
+		<copy file="../build/distribution/launcher/7z/dist_config.txt" tofile="${DIR_WIN}/dist_config.txt" />
+		<replace file="${DIR_WIN}/dist_config.txt" token="%TITLE%" value="gvSIG-${bversion}" />
+		<concat destfile="${DIR_WIN}/${WINDOWSEXE}" binary="true">
+			<fileset file="../build/distribution/launcher/7z/7zS.sfx" />
+			<fileset file="${DIR_WIN}/dist_config.txt" />
+			<fileset file="${DIR_WIN}/${WINDOWSZIP}" />
+		</concat>
+
+
+	</target>
+
+	<!-- UTILIZAR ESTE TARGET PARA LIMPIAR TODOS LOS DIRECTORIOS Y FICHEROS TEMPORALES CREADOS-->
+	<target name="cleanDirWIN" description="Limpiamos los directorios DIR_WIN">
+		<mkdir dir="${OUTPUT_DIR}" />
+		<mkdir dir="${OUTPUT_DIR}/win" />
+		<move todir="${OUTPUT_DIR}/win">
+			<fileset file="${DIR_WIN}/${WINDOWSEXE}" />
+		</move>
+		<delete file="${DIR_WIN}/${WINDOWSZIP}" />
+		<delete file="${DIR_WIN}/dist_config.txt" />
+		<delete dir="${DIR_WIN}/${INSTALLER_DIR}" />
+
+		<!--delete dir="${DIR_WIN}/extensiones" />
+		<delete dir="${DIR_WIN}/bin" /-->
+	</target>
+
+	<!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+	-->
+	<target name="Mac">
+		<mkdir dir="${OUTPUT_DIR}" />
+		<ant dir="${DIR_MAC}">
+			<property name="build.number" value="${build.number}" />
+		</ant>
+		<!-- El zip se crea en dentro y se copia por un problema con los permisos-->
+		<!--zip destfile="${OUTPUT_DIR}/${MAC_10_ZIP}" basedir="${DIR_MAC}" includes="gvSIG*.app/**" filemode="755" /-->
+		<copy todir="${OUTPUT_DIR}">
+			<fileset dir="${DIR_MAC}" includes="gvSIG*.zip" />
+		</copy>
+		<delete dir="${DIR_MAC}/distr" />
+		<!--OJO!!!! HAY QUE REVISAR ESTO -->
+		<echo> ********************************************* </echo>
+		<echo> ********          MAC DONE        *********</echo>
+		<echo> ********************************************* </echo>
+	</target>
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/extension-distribution.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/extension-distribution.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/extension-distribution.xml	(revision 29090)
@@ -0,0 +1,63 @@
+<assembly>
+	<id>distribution</id>
+	<formats>
+		<format>dir</format>
+	</formats>
+	<fileSets>
+	<!-- Extructure for the extension -->
+		<fileSet>
+			<directory>config</directory>
+			<outputDirectory>${extension-distribution}
+			</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>images</directory>
+			<outputDirectory>/${extension-distribution}/images
+			</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>resources</directory>
+			<outputDirectory>/${extension-distribution}/resources
+			</outputDirectory>
+		</fileSet>
+	</fileSets>
+	<files>
+		<file>
+			<source>build.number</source>
+			<outputDirectory>${extension-distribution}
+			</outputDirectory>
+		</file>
+	</files>
+	<!--
+		***********************************************************************
+	-->
+  <!-- *													   *-->
+	<!--
+		***********************************************************************
+	-->
+	<dependencySets>
+		<dependencySet>
+			<outputDirectory>${extension-distribution}/${library-dir}
+			</outputDirectory>
+			<includes>
+				<include>org.gvsig:lib3DMap</include>
+				<include>org.gvsig:libCacheService
+				</include>
+				<include>org.gvsig:ext3Dgui</include>
+				<include>org.gvsig:libG*</include>
+				<include>org.gvsig:libFMap_geometries</include>
+			</includes>
+		</dependencySet>
+		<dependencySet>
+			<outputDirectory>${gvsig-extension-distribution}/lib
+			</outputDirectory>
+			<includes>
+				<include>org.gvsig.osgvp.libosgvp:*
+				</include>
+				<include>jogl:*</include>
+				<include>org.gvsig:lib3DMap-share</include>
+				<include>org.gvsig:extSymbology</include>
+			</includes>
+		</dependencySet>
+	</dependencySets>
+</assembly>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install_15.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install_15.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install_15.xml	(revision 29090)
@@ -0,0 +1,171 @@
+<installation version="1.0">
+	<info>
+		<appname>3D</appname>
+		<appversion>1.2</appversion>
+		<authors>
+			<author
+				name="Generalitat Valenciana. Conselleria d'Infraestructures i Transport"
+				email="" />
+			<author name="Iver TecnologÃ­as de la InformaciÃ³n S.A."
+				email="" />
+		</authors>
+		<url>http://www.gvsig.gva.es/</url>
+		<javaversion>1.5</javaversion>
+	</info>
+
+	<guiprefs height="600" resizable="yes" width="800">
+		<laf name="liquid">
+			<os family="windows" />
+		</laf>
+	</guiprefs>
+
+	<locale>
+		<!-- only keep the languages which are also available in gvSIG -->
+		<langpack iso3="spa" />
+		<langpack iso3="val" />
+		<langpack iso3="eng" />
+		<!--	<langpack iso3="cat"/>
+			<langpack iso3="chn"/> -->
+		<langpack iso3="cze" />
+		<!--	<langpack iso3="dan"/> -->
+		<langpack iso3="deu" />
+		<!--	<langpack iso3="fin"/>-->
+		<langpack iso3="fra" />
+		<langpack iso3="glg" />
+		<!--	<langpack iso3="hun"/> -->
+		<langpack iso3="ita" />
+		<!--	<langpack iso3="jpn"/>
+			<langpack iso3="mys"/>
+			<langpack iso3="ned"/>
+			<langpack iso3="nor"/>
+			<langpack iso3="pol"/> -->
+		<langpack iso3="por" />
+		<!--	<langpack iso3="rom"/>
+			<langpack iso3="rus"/>
+			<langpack iso3="scg"/>
+			<langpack iso3="svk"/>
+			<langpack iso3="swe"/>
+			<langpack iso3="ukr"/> -->
+	</locale>
+
+	<native os="windows" type="izpack" name="ShellLink.dll" />
+
+	<resources>
+		<res src="resources/gpl.txt" id="LicencePanel.licence" />
+		<res src="resources/LEEME.html" id="HTMLInfoPanel.info" />
+		<res src="resources/images/Logo_gvsig_gva.jpg"
+			id="Installer.image" />
+		<res src="resources/userInputSpec.xml" id="userInputSpec.xml" />
+		<parsable os="windows" targetfile="resources/userInputSpec.xml" />
+		<res src="resources/userInputLang.xml_val"
+			id="userInputLang.xml_val" />
+		<res src="resources/userInputLang.xml_spa"
+			id="userInputLang.xml_spa" />
+
+	</resources>
+
+	<panels>
+		<panel classname="HTMLInfoPanel" />
+		<panel classname="LicencePanel" />
+		<panel classname="PacksPanel" />
+		<panel classname="UserInputPanel" />
+		<panel classname="InstallPanel" />
+		<panel classname="SimpleFinishPanel" />
+	</panels>
+
+	<variables>
+		<variable name="A"
+			value="../../target/ext3D-distribution/ext3D/win" />
+	</variables>
+
+
+
+	<packs>
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="GvSIG UPDATES" required="yes">
+			<description>GvSIG updates</description>
+
+
+			<!-- dll necesarias para la extension 3D -->
+			<fileset targetdir="$INSTALL_PATH/lib"
+				dir="../../../binaries/w32/3D" override="true">
+				<include name="**/*" />
+			</fileset>
+
+			<fileset targetdir="$JAVA_HOME/bin"
+				dir="../../../binaries/w32/3D" override="true">
+				<include name="**/*" />
+			</fileset>
+
+
+			<fileset
+				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				dir="../../../build/product/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				override="true" os="windows">
+				<include name="**/*.jar" />
+				<exclude name="**/*extSymbology*.jar" />
+			</fileset>
+			
+			<!--file os="windows"
+				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				src="../ext3D-distribution/ext3D/win/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/lib3DMap-share-1.0-SNAPSHOT.jar"
+				override="true" /-->
+
+			<!-- Sobreescribiendo el nuevo .ini -->
+			<!-- file os="windows" targetdir="$INSTALL_PATH/bin"
+				src="resources/gvSIG.ini" override="true" />
+				<parsable os="windows"
+				targetfile="$INSTALL_PATH/bin/gvSIG.ini" /-->
+
+		</pack>
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="3D extensions" required="yes">
+			<description>Install 3D Extension</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.ext3Dgui"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="3D Animation" required="yes">
+			<description>Install 3D Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimation3D"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="2D animation" required="yes">
+			<description>Install 2D Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimation2D"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="Common animation" required="yes">
+			<description>Install Common Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimationCommon"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="Animation GUI" required="yes">
+			<description>Install Animation GUI</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimationGUI"
+				override="true" />
+		</pack>
+		
+		<pack name="Docking Skin" required="yes">
+			<description>Install Docking Skin</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extDockingSkin"
+				override="true" />
+		</pack>
+
+
+
+	</packs>
+</installation>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_por
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_por	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_por	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.bat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.bat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.bat	(revision 29090)
@@ -0,0 +1,19 @@
+@echo off
+cd "$INSTALL_PATH\"
+
+IF OS_%os% == OS_Windows_NT GOTO wnt
+GOTO win
+
+:wnt
+SET PATH=$INSTALL_PATH\lib;%PATH%
+cd bin
+"$JAVA_HOME\bin\java.exe" -Djava.library.path="$INSTALL_PATH\lib" -cp andami.jar;./lib/gvsig-i18n.jar;./lib/beans.jar;./lib/log4j-1.2.8.jar;./lib/iver-utiles.jar;./lib/castor-0.9.5.3-xml.jar;./lib/crimson.jar;./lib/xerces_2_5_0.jar;./lib/javaws.jar;./lib/xml-apis.jar;lib/looks-2.0.2.jar;./lib/JWizardComponent.jar;./lib/kxml2.jar;./lib/jcalendar.jar -Xmx500M com.iver.andami.Launcher gvSIG gvSIG/extensiones %1
+GOTO end
+
+:win
+SET PATH="$INSTALL_PATH\lib";%PATH%
+cd bin
+"$JAVA_HOME\bin\java.exe" -Djava.library.path="$INSTALL_PATH\lib" -cp andami.jar;./lib/gvsig-i18n.jar;./lib/beans.jar;./lib/log4j-1.2.8.jar;./lib/iver-utiles.jar;./lib/castor-0.9.5.3-xml.jar;./lib/crimson.jar;./lib/xerces_2_5_0.jar;./lib/javaws.jar;./lib/xml-apis.jar;lib/looks-2.0.2.jar;./lib/JWizardComponent.jar;./lib/kxml2.jar;./lib/jcalendar.jar -Xmx500M com.iver.andami.Launcher gvSIG gvSIG/extensiones %1
+
+:end
+pause
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cat	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_fra
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_fra	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_fra	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_eng
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_eng	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_eng	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/LEEME.html
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/LEEME.html	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/LEEME.html	(revision 29090)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<style type="text/css">
+html, body, h1, h2, h3, h4, div, p, ul, li, input {
+   font-family: Arial, Helvetica, sans-serif;
+}
+
+h1 {
+   font-size: large;
+}
+
+h2 {
+   font-size: large;
+}
+
+h3 {
+   font-size: medium;
+}
+</style>
+</head>
+<body>
+<h1>gvSIG, el SIG en software libre de la Generalitat Valenciana
+(http://www.gvsig.gva.es).</h1>
+
+<h2>Autores:</h2>
+<ul>
+<li>Generalitat Valenciana
+ (Conselleria d'Infraestructures i Transport).</li>
+<li>Iver Tecnolog&iacute;as de la Informaci&oacute;n S.A.</li>
+</ul>
+
+<p>Software con licencia GNU/GPL
+(http://www.fsf.org/licensing/licenses/gpl.html)</p>
+
+<p>Contacto:
+	gvsig@gva.es<p>
+
+<h2>Requisitos de la aplicaci&oacute;n:</h2>
+<h3>Sistema</h3>
+<ul>
+<li>M&iacute;nimos: Pentium IV / 512 MB RAM / Targeta grafica compatible con OpenGL 1.5</li>
+<li>Recomendables: Pentium IV / 1 GB RAM / Targeta Grafica compatible con OpenGL 2.0</li>
+<li>Sistemas operativos: plataformas Windows y Linux.
+ Probado en XP, Ubuntu Linux y Mac OS X.</li>
+</ul>
+
+<h3>Software instalado</h3> (disponible en http://www.gvsig.gva.es o en http://java.sun.com)
+<ul>
+<li>M&aacute;quina Virtual Java 1.5.</li>
+<li>JAI (Java Advanced Imaging).</li>
+<li>JAI Image I/O.</li>
+</ul>
+
+<p style="text-align:justify">Nota: Las librer&iacute;as JAI y JAI Image I/O deben estar instaladas sobre la M&aacute;quina Virtual Java que gvSIG utilice en su ejecuci&oacute;n. Si se instala una nueva JVM en el sistema y se usa para ejecutar gvSIG ser&aacute; indispensable instalar las librer&iacute;as sobre &eacute;sta (gvSIG se ejecuta con la JVM que tenga por defecto el sistema operativo; para saber cu&aacute;l es, ejecutar <span style="monospace">"java&nbsp;-version"</span> en un interfaz de comandos o consola).</p>
+
+<h2>M&aacute;s informaci&oacute;n y soporte en:</h2>
+<h3> Web oficial del proyecto:</h3>
+	http://www.gvsig.gva.es
+
+<h3>Listas de distribuci&oacute;n:</h3>
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios</span> (soporte para usuarios).
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores</span> (soporte para desarrolladores).
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional</span> (soporte para desarrolladores o usuarios de habla no hispana).
+
+</body>
+</html>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/andami-config.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/andami-config.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/andami-config.xml	(revision 29090)
@@ -0,0 +1,5 @@
+<andami-config locale-language="$ISO3_LANG" pluginsDirectory="gvSIG/extensiones">
+	<andami update="yes"/>
+        <plugin name="com.iver.cit.gvsig" update="yes"/>
+        <plugin name="com.iver.core" update="no"/>
+</andami-config>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_deu
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_deu	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_deu	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_ita
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_ita	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_ita	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.ini
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.ini	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gvSIG.ini	(revision 29090)
@@ -0,0 +1,201 @@
+[default]
+
+
+; Ruta al achivo Jar a lanzar
+jar =
+
+
+; Comando a ejecutar:
+;    Admite remplazo de variable:
+;	* #JAVA# ejecutable de java
+;	* #JAVA_HOME# path del Java_home
+;	* #JAR# el valor de la variable 'jar' de este fichero
+;	* #ARGS# cadena con todos los argumentos con los que se ha llamado al lanzador
+;	* #ARG1#, #ARG2#, ... #ARG9#: parametro recivido en 'n' lugar
+;	* #ARG0#: Nombre del ejecutable del lanzador
+;	* #CLASSPATH#: path declarados en la seccion classpath
+;    Tambien admite los valores de la seccion 'Variables' encerrados entre
+;    el caracter almuadilla '#'
+; 	 * Nota: los nombres de las variables son case sensitive
+command = #JAVA# -Djava.library.path="#GVSIG_INSTALL_PATH#\lib" -cp #CLASSPATH# -Xmx500M com.iver.andami.Launcher gvSIG gvSIG/extensiones #ARGS#
+
+
+
+
+; Lanzar el Jar en ansincrono o no:
+;     * si(se lanza el javaw.exe y finaliza el lanzador):S SI YES Y 1
+;     * si(el lanzado se espera a que termine la ejecucion del javaw.exe):{distinto de los anterirores}
+launchJarAsync = 0
+
+; Modo: dice si se va a usar en modo lanzador de la instalacion o de la aplicacion
+; (De momento solo afecta al titulo)
+;     * Instalacion: INSTALL
+;     * Applicacion: APPLICATION
+launchMode = APPLICATION
+
+; Realizar la comprobaciones o no:
+;     * si(por defecto):S SI YES Y 1
+;     * no(debera estar especificado el parametro'jre_home'):{distinto de los anterirores}
+doChecks = No
+
+; Ruta el Java_home a usar en caso de 'doChecks-->No'
+jre_home = $JAVA_HOME
+;ejemplo: jre_home = C:/Archivos de programa/Java/j2re1.4.2_11
+
+
+; Habilita la pregunta al usuario de si hay que hacer las comprobaciones de JRE etc...
+;     - por defecto se hace la pregunta
+;     - Si la respuesta del usario es 'no' se solicita la usuario que indique el ejectuable de la JRE
+;     * si(se pregunta al usario):S SI YES Y 1
+;     * no(no se pregunta y se realizan las comprobaciones):{distinto de los anterirores}
+askForCheckingProcess = No
+
+
+
+; Version de JRE requerida
+jre_version = 1.5.0
+jre_version_prefered = 1.5.0_12
+
+
+
+; Descarga remota
+; 	* los valores valido de downloadEnabled son:
+;		- habilitado: S SI YES Y 1
+;		- deshabilitado: {distinto de los anteriores}
+downloadEnabled = 0
+
+
+
+; Path del instalable del jre (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jre =
+downloadJre =
+
+
+
+; Path del instalable del jai (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jai =
+downloadJai =
+
+
+
+; Path del instalable del jai io (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jai_io =
+downloadJai_io =
+
+
+
+; Esta seccion indica una lista de fichero a
+; copiar antes de lanzar el comando.
+; Los ficheros se copiaran si no existen en el
+; destino.
+; Destino puede ser un directorio, pero debe finalizar
+; con '/'
+; Pueden usarse variables declaradas en la
+; seccion 'variables' colocadas entre '#'
+;  * Nota: los nombres de las variables son case sensitive
+; Requiere los valores:
+;	* source1: primer fichero origen
+;	* target1: primer destino
+;	* source2: segundo fichero origen
+;	* target2: segundo destino
+;	...
+;	* source{n}: 'n' fichero origen
+;	* target{n}: 'n' destino
+[CopyRequiredFiles]
+source1 = #GVSIG_INSTALL_PATH#/lib/msvcp71.dll
+target1 = #JAVA_HOME#/bin/
+
+source2 = #GVSIG_INSTALL_PATH#/lib/msvcr71.dll
+target2 = #JAVA_HOME#/bin/
+
+source3 = #GVSIG_INSTALL_PATH#/lib/jmrsid.dll
+target3 = #JAVA_HOME#/bin/
+
+source4 = #GVSIG_INSTALL_PATH#/lib/lti_dsdk_cdll.dll
+target4 = #JAVA_HOME#/bin/
+
+source5 = #GVSIG_INSTALL_PATH#/lib/lti_dsdk_dll.dll
+target5 = #JAVA_HOME#/bin/
+
+
+source6 = #GVSIG_INSTALL_PATH#/lib/jecwcompress.dll
+target6 = #JAVA_HOME#/bin/
+
+source7 = #GVSIG_INSTALL_PATH#/lib/jecw.dll
+target7 = #JAVA_HOME#/bin/
+
+source8 = #GVSIG_INSTALL_PATH#/lib/NCScnet.dll
+target8 = #JAVA_HOME#/bin/
+
+source9 = #GVSIG_INSTALL_PATH#/lib/NCSEcwC.dll
+target9 = #JAVA_HOME#/bin/
+
+source10 = #GVSIG_INSTALL_PATH#/lib/NCSEcw.dll
+target10 = #JAVA_HOME#/bin/
+
+source11 = #GVSIG_INSTALL_PATH#/lib/NCSUtil.dll
+target11 = #JAVA_HOME#/bin/
+
+
+
+source12 = #GVSIG_INSTALL_PATH#/lib/gdal.dll
+target12 = #JAVA_HOME#/bin/
+
+
+source13 = #GVSIG_INSTALL_PATH#/lib/jgdal060.dll
+target13 = #JAVA_HOME#/bin/
+
+source14 = #GVSIG_INSTALL_PATH#/lib/glut32.dll
+target14 = #JAVA_HOME#/bin/
+
+source15 = #GVSIG_INSTALL_PATH#/lib/jpeg62.dll
+target15 = #JAVA_HOME#/bin/
+
+source16 = #GVSIG_INSTALL_PATH#/lib/libimage.dll
+target16 = #JAVA_HOME#/bin/
+
+source17 = #GVSIG_INSTALL_PATH#/lib/libpng13.dll
+target17 = #JAVA_HOME#/bin/
+
+source18 = #GVSIG_INSTALL_PATH#/lib/libtiff3.dll
+target18 = #JAVA_HOME#/bin/
+
+source19 = #GVSIG_INSTALL_PATH#/lib/zlib1.dll
+target19 = #JAVA_HOME#/bin/
+
+source20 = #GVSIG_INSTALL_PATH#/lib/CrsJniProj.dll
+target20 = #JAVA_HOME#/bin/
+
+source21 = #GVSIG_INSTALL_PATH#/lib/proj.dll
+target21 = #JAVA_HOME#/bin/
+
+
+; En esta seccion se pueden definir valores
+; que se pueden utilizar en el parametro 'command'
+; o en la copia de los ficheros
+;  * Nota: los nombres son case sensitive
+[Variables]
+GVSIG_INSTALL_PATH = $INSTALL_PATH
+
+[EnvironVariables]
+PROJ_LIB=$INSTALL_PATH/bin/gvSIG/extensiones/org.gvsig.crs/data
+
+
+; En esta seccion se indican las rutas a directorios o ficheros
+; que se quieran incluir en el classpath. Pueden ser rutas a Directorios,
+; en cuyo caso deben de acabar en '/', o rutas a ficheros, pudiendo usar
+; los comodines '*' y '?'
+; Pueden usarse variables declaradas en la
+; seccion 'variables' colocadas entre '#'
+;  * Nota: los nombres de las variables son case sensitive
+;  Por Ejemplo:
+; path1=C:\Program Files\gvSIG_1/bin/lib/
+; path2=#INSTALL_PATH#/bin/lib/*.jar
+; path3=#INSTALL_PATH#/bin/andami.jar
+[classpath]
+path1=$INSTALL_PATH/bin/andami.jar
+path2=$INSTALL_PATH/bin/lib/*.jar
+path3=$INSTALL_PATH/bin/lib/*.zip
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gpl.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gpl.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/gpl.txt	(revision 29090)
@@ -0,0 +1,125 @@
+	GNU GENERAL PUBLIC LICENSE
+	Version 2, June 1991
+
+	 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+		Preamble
+
+	The licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.  This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it.  (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.)  You can apply it to your programs, too.
+
+	When we speak of free software, we are referring to freedom, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+	To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+	For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must show them these terms so they know their
+rights.
+
+	We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+	Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software.  If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+	Finally, any free program is threatened constantly by software	patents.  We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary.  To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+	The precise terms and conditions for copying, distribution and modification follow.
+
+				GNU GENERAL PUBLIC LICENSE
+	TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+	0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License.  The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.  (Hereinafter, translation is included without limitation in the term "modification".)  Each licensee is addressed as "you".
+
+	Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1.	You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2.	You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+c)	If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License.  (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3.	You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+c)	Accompany it with the information you received as to the offer to distribute corresponding source code.  (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it.  For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.  However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4.	You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5.	You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Program or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6.	Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions.  You may not impose any further restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to this License.
+
+7.	If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all.  For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8.	If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.
+
+9.	The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time.  Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10.	If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11.	BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12.	IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+<one line to give the program's name and a brief idea of what it does.> Copyright (C) <year>  <name of author>
+
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License.  Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary.  Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+<signature of Ty Coon>, 1 April 1989
+Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs.  If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library.  If this is what you want to do, use the GNU Library General Public License instead of this License.
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cze
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cze	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_cze	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/win_shortcut_spec.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/win_shortcut_spec.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/win_shortcut_spec.xml	(revision 29090)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<shortcuts>
+
+	<skipIfNotSupported/>
+	<programGroup 	defaultName="Gva/gvSIG"
+									location="applications"/>
+	<shortcut	name="gvSIG"
+						target="$INSTALL_PATH/bin/gvSIG.exe"
+						workingDirectory="$INSTALL_PATH/bin"
+						description="gvSIG application"
+						iconFile="$INSTALL_PATH/bin/ico-gvSIG.ico"
+						iconIndex="0"
+						initialState="normal"
+						programGroup="yes"
+						desktop="yes"
+						applications="no"
+						startMenu="yes"
+						startup="no">
+		<createForPack name="gvSIG program"/>
+	</shortcut>
+		
+   	<shortcut	name="User Manual"
+				target="$INSTALL_PATH\user-doc\user-doc-0.3.pdf"
+		     	programGroup="yes"
+				desktop="no"
+				applications="no"
+				startMenu="no"
+				startup="no"
+				iconFile="$INSTALL_PATH\bin\help.ico"
+				commandLine=""
+				description="Documentation">  
+     <createForPack name="Documentation" />
+   </shortcut>
+   
+	<shortcut
+         name="Uninstall gvSIG"
+         programGroup="yes"
+         desktop="no"
+         applications="no"
+         startMenu="no"
+         startup="no"
+         type="Application"
+         encoding="UTF-8"
+         target="$INSTALL_PATH\bin\uninstall.bat"
+         commandLine=""
+         workingDirectory=""
+         description="Uninstall gvSIG"
+         iconIndex="0"
+         iconFile="$INSTALL_PATH\bin\uninstall.ico"
+         initialState="noShow">
+	</shortcut>
+   
+</shortcuts>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_val
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_val	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_val	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_spa
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_spa	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputLang.xml_spa	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.JPG
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.JPG
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/papelera.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/papelera.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/Logo_gvsig_gva.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/Logo_gvsig_gva.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall1.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/Logo-gvSIG.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/Logo-gvSIG.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.GIF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.GIF
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/help.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/uninstall.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/images/ico-gvSIG.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputSpec.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputSpec.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/userInputSpec.xml	(revision 29090)
@@ -0,0 +1,21 @@
+<userInput>
+	<panel order="0">
+		<field 	type="search" 
+				variable="INSTALL_PATH"
+				size="45">
+  			<description align="left" />
+  			<spec 	txt="Path to gvSIG:" 
+		  			id="text.label"
+  					checkfilename="bin/andami.jar"
+        			type="directory" 
+        			result="directory">
+  			<choice value="/usr/local/gvSIG_1.0" os="unix" />
+  			<choice value="/opt/gvSIG_1.0" os="unix" />
+  			<choice value="$USER_HOME/gvSIG_1.0" os="unix" />
+  			<choice value="C:\Archivos de Programa\gvSIG_1.0" os="windows" />
+  			<choice value="C:\Program Files\gvSIG_1.0" os="windows" />
+  			</spec>
+		</field>
+	</panel>
+</userInput>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/install.bat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/install.bat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/install.bat	(revision 29090)
@@ -0,0 +1,19 @@
+REM This is used at installation time, in order to perform some extra actions
+REM that the installer is not able to do
+
+REM different syntax in win98 and (nt, xp)
+
+SET > salida.txt
+SET
+IF OS_%os% == OS_Windows_NT GOTO wnt
+GOTO win
+
+:wnt
+IF NOT EXIST $USER_HOME\gvSIG MKDIR $USER_HOME\gvSIG
+IF NOT EXIST $USER_HOME\gvSIG\andami-config.xml COPY $INSTALL_PATH\bin\andami-config.xml $USER_HOME\gvSIG\andami-config.xml
+
+:win
+IF NOT EXIST "$USER_HOME"\gvSIG MKDIR "$USER_HOME"\gvSIG
+IF NOT EXIST "$USER_HOME"\gvSIG\andami-config.xml COPY "$INSTALL_PATH"\bin\andami-config.xml "$USER_HOME"\gvSIG\andami-config.xml
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/launcher-Win32.ini.j15
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/launcher-Win32.ini.j15	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/launcher-Win32.ini.j15	(revision 29090)
@@ -0,0 +1,144 @@
+[default]
+; Nombre de la aplicacion
+appname = gvSIG
+
+; Ruta al achivo Jar a lanzar
+jar = %JARNAME%
+
+
+; Comando a ejecutar:
+;    Admite remplazo de variable:
+;	* #JAVA# ejecutable de java
+;	* #JAVA_HOME# path del Java_home
+;	* #JAR# el valor de la variable 'jar' de este fichero
+;	* #ARGS# cadena con todos los argumentos con los que se ha llamado al lanzador
+;	* #ARG1#, #ARG2#, ... #ARG9#: parametro recivido en 'n' lugar
+;	* #ARG0#: Nombre del ejecutable del lanzador
+;    Tambien admite los valores de la seccion 'Variables' encerrados entre
+;    el caracter almuadilla '#'
+; 	 * Nota: los nombres de las variables son case sensitive
+command = #JAVA# -jar #JAR#
+
+
+
+
+; Lanzar el Jar en ansincrono o no:
+;     * si(se lanza el javaw.exe y finaliza el lanzador):S SI YES Y 1
+;     * si(el lanzado se espera a que termine la ejecucion del javaw.exe):{distinto de los anterirores}
+launchJarAsync = 0
+
+; Modo: dice si se va a usar en modo lanzador de la instalacion o de la aplicacion
+; (De momento solo afecta al titulo)
+;     * Instalacion: INSTALL
+;     * Applicacion: APPLICATION
+launchMode = INSTALL
+
+; Realizar la comprobaciones o no:
+;     * si(por defecto):S SI YES Y 1
+;     * no(debera estar especificado el parametro'jre_home'):{distinto de los anterirores}
+doChecks = YES
+
+; Realizar la comprobacion de codigo que
+; retorna la JRE
+;     * si(por defecto):S SI YES Y 1
+;     * no:{distinto de los anterirores}
+checksJREExecutionTerminationCode = YES
+
+
+
+; Ruta el Java_home a usar en caso de 'doChecks-->No'
+jre_home =
+;ejemplo: jre_home = C:/Archivos de programa/Java/j2re1.4.2_11
+
+
+; Habilita la pregunta al usuario de si hay que hacer las comprobaciones de JRE etc...
+;     - por defecto se hace la pregunta
+;     - Si la respuesta del usario es 'no' se solicita la usuario que indique el ejectuable de la JRE
+;     * si(se pregunta al usario):S SI YES Y 1
+;     * no(no se pregunta y se realizan las comprobaciones):{distinto de los anterirores}
+askForCheckingProcess = SI
+
+
+
+; Version de JRE requerida
+jre_version = 1.5.0
+jre_version_prefered = 1.5.0_12
+
+
+
+; Descarga remota
+; 	* los valores valido de downloadEnabled son:
+;		- habilitado: S SI YES Y 1
+;		- deshabilitado: {distinto de los anteriores}
+downloadEnabled = 1
+
+
+
+; Path del instalable del jre (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jre = jre-1_5_0_12-windows-i586-p.exe
+downloadJre = http://www.gvsig.org/runtime/jre-1_5_0_12-windows-i586-p.exe
+
+
+; Comprobar si esta instaladas las Jai
+;	- habilitado: S SI YES Y 1 (por defecto)
+;	- deshabilitado: {distinto de los anteriores}
+checkJai=S
+; Path del instalable del jai (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jai = jai-1_1_3-lib-windows-i586-jre.exe
+;downloadJai = http://www.gvsig.org/jai-1_1_2_01-lib-windows-i586-jre.exe
+downloadJai = http://www.gvsig.gva.es/fileadmin/conselleria/images/Documentacion/descargas/software/windows/jai-1_1_3-lib-windows-i586-jre.exe
+
+
+; Comprobar si esta instaladas las Jai Image I/O
+;	- habilitado: S SI YES Y 1 (por defecto)
+;	- deshabilitado: {distinto de los anteriores}
+checkJai_io=N
+; Path del instalable del jai io (si no existe y estan
+;	habilitadas las descargas, lo dejara aqui)
+jai_io =
+downloadJai_io =
+
+
+
+; Esta seccion indica una lista de fichero a
+; copiar antes de lanzar el comando.
+; Los ficheros se copiaran si no existen en el
+; destino.
+; Destino puede ser un directorio, pero debe finalizar
+; con '/'
+; Pueden usarse variables declaradas en la
+; seccion 'variables' colocadas entre '#'
+;  * Nota: los nombres de las variables son case sensitive
+; Requiere los valores:
+;	* source1: primer fichero origen
+;	* target1: primer destino
+;	* source2: segundo fichero origen
+;	* target2: segundo destino
+;	...
+;	* source{n}: 'n' fichero origen
+;	* target{n}: 'n' destino
+[CopyRequiredFiles]
+source1=
+target1=
+
+source2=
+target2=
+
+source3=
+target3=
+
+
+; En esta seccion se pueden definir valores
+; que se pueden utilizar en el parametro 'command'
+; o en la copia de los ficheros
+;  * Nota: los nombres son case sensitive
+[Variables]
+
+
+
+; En esta seccion se pueden definir valores
+; que se estableceran como variables de entorno
+; al arrancar el lanzador (y heredara la aplicacion)
+[EnvironVariables]
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/uninstall.bat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/uninstall.bat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/resources/uninstall.bat	(revision 29090)
@@ -0,0 +1 @@
+java -jar "$INSTALL_PATH/Uninstaller/uninstaller.jar"
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/build.xml	(revision 29090)
@@ -0,0 +1,38 @@
+<project name="instalador-gvSIG" default="init" basedir=".">
+	<!--
+	<property name="dir_inst" location="C:\Archivos de programa"/>
+	<property name="base_dir" location="./"/>		
+	<property name="dir_libs" location="C:\Archivos de programa\IzPack\lib"/>
+	<property name="vers" location="0.6"/>
+	<property name="izpack_dir" location="C:\Archivos de programa\IzPack"/>
+	-->
+	
+	<property name="dir_inst" location="/usr/local"/>
+	<property name="base_dir" location="./"/>	
+	<!--property name="base_dir" location="D:\java\workspaces\osg_2_2_1-snapshot\ext3Dgui\target\ext3Dgui-1.0-SNAPSHOT-distribution\ext3Dgui-1.0-SNAPSHOT\win\	"/-->
+	<property name="izpack_dir" location="../../../build/distribution/IzPack/"/>
+	<property name="dir_libs" location="${izpack_dir}/lib"/>
+	<property name="INSTALL_FILE" location="install_15.xml"/>
+	<property name="JARNAME" location="default_name_installer-WIN"/>
+	
+	<taskdef name="izpack" classpath="${dir_libs}/compiler.jar" classname="com.izforge.izpack.ant.IzPackTask"/>
+	
+	<target name="init">
+		<izpack input="${INSTALL_FILE}" 
+				output="${JARNAME}" 
+				installerType="standard" 
+				basedir="${base_dir}" 
+				izPackDir="${izpack_dir}/"/>
+	</target>
+	
+	<target name="clean">
+		<delete>
+			<fileset dir=".">
+			    <include name="**.zip"/>
+			</fileset>
+		</delete>
+		<delete dir="bin" />
+		<delete dir="extensions" />
+	</target>
+	
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/README.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/README.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/README.txt	(revision 29090)
@@ -0,0 +1,39 @@
+gvSIG v1.0 RC1
+
+
+Application Requirements:
+
+    - System
+
+        · At least: Pentium III / 256 MB RAM.
+
+        · Recommended: Pentium 4 / 512 MB RAM.
+
+        · OSes: platforms Windows and Linux.
+        Tested in Win98/XP, Linux Suse 8.2/9.0/9.2 and Linux Debian(Lliurex).
+
+
+    - Installed Software (available in http://www.gvsig.gva.es or in http://java.sun.com)
+
+        · Java VM 1.4.2 (06 or above).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+Note: The JAI and JAI Image I/O must be installed into the same Java VM that runs gvSIG.
+
+
+Further information and support:
+
+    Official web site:
+
+        http://www.gvsig.gva.es
+
+    Mailing lists:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (users).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (developers).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (non-spanish users and developers).
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/install.bat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/install.bat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/install.bat	(revision 29090)
@@ -0,0 +1 @@
+java -jar JARNAME
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LLIG-ME.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LLIG-ME.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LLIG-ME.txt	(revision 29090)
@@ -0,0 +1,42 @@
+gvSIG v1.0 RC1
+
+
+Requisits de l'aplicació:
+
+    - Sistema
+
+        · Mínims: Pentium III / 256 MB RAM.
+
+        · Recomanables: Pentium 4 / 512 MB RAM.
+
+        · Sistemes operatius: plataformes Windows i Linux.
+        Provat en Win98/XP, Linux Suse 8.2/9.0/9.2 i Linux Debian(Lliurex).
+
+
+    - Programari instal·lat (disponible en http://www.gvsig.gva.es o en http://java.sun.com)
+
+        · Màquina Virtual Java 1.4.2 (06 o superior).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+
+Nota: les libreries JAI i JAI Image I/O han d'estar instal·lades sobre la Màquina Virtual Java que gvSIG utilitze en l'execució.
+
+
+Més informació í suport:
+
+    Web oficial del projecte:
+
+        http://www.gvsig.gva.es
+
+    Llistes de distribució:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (suport per a usuaris).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (suport per a desenvolupadors).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (suport per a usuaris o desenvolupadors de parla no-hispana).
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LEEME.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LEEME.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/installer_files/LEEME.txt	(revision 29090)
@@ -0,0 +1,39 @@
+gvSIG v1.0 RC1
+
+Requisitos de la aplicación:
+
+    - Sistema
+
+        · Mínimos: Pentium III / 256 MB RAM.
+
+        · Recomendables: Pentium 4 / 512 MB RAM.
+
+        · Sistemas operativos: plataformas Windows y Linux.
+        Probado en Win98/XP, Linux Suse 8.2/9.0/9.2 y Linux Debian(Lliurex).
+
+
+    - Software instalado (diponible en http://www.gvsig.gva.es o en http://java.sun.com)
+
+        · Máquina Virtual Java 1.4.2 (06 o superior).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+
+Nota: Las librerías JAI y JAI Image I/O deben estar instaladas sobre la Máquina Virtual Java que gvSIG utilice en su ejecución.
+
+
+Más información y soporte:
+
+    Web oficial del proyecto:
+
+        http://www.gvsig.gva.es
+
+    Listas de distribución:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (soporte para usuarios).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (soporte para desarrolladores).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (soporte para usuarios o desarrolladores de habla no hispana).
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/exec
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/exec
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/Notas_asociaciacion_archivos.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/Notas_asociaciacion_archivos.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/Notas_asociaciacion_archivos.txt	(revision 29090)
@@ -0,0 +1,496 @@
+
+Pareceser que hay que añadir unas claves al registro... 
+puede hacerse generando un fichero .reg 
+con las claves preparadas y usando el regedit en modo silencioso
+
+el comando es:
+  regedit /s fichero.reg
+
+
+la claves son:
+HKCR\{ext}  = {typeAbr}
+HKCR\{typeAbr}\ = {typeName}
+HKCR\{typeAbr}\DefaultIcon = {FileIcon}
+HKCR\{typeAbr}\shell\open\command = {exeCommand}
+
+
+estas no parecen necesarias:
+HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\{ext}\Application = {exeName}
+HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\{ext}\OpenWithList\a = {exeName}
+
+donde:
+{ext} = ".gvp"
+{typeAbr} ="gvSIGProject"
+{typeName} ="gvSIG Project file"
+{FileIcon} = "gvSIG.ico" || "gvSIG.exe"
+{exeCommand} = "gvSIG.exe %L"
+{exeName} = "gvSIG.exe"
+
+
+Ejeplo de fichero .reg:
+REGEDIT4
+
+[HKEY_CLASSES_ROOT\.gvp]
+@="gvSIGProject"
+
+[HKEY_CLASSES_ROOT\gvSIGProject]
+@="gvSIG Project file"
+
+[HKEY_CLASSES_ROOT\gvSIGProject\DefaultIcon]
+@="C:\\Archivos de programas\\gvSIG_1.0\\bin\\ico-gvSIG.ico,0"
+
+
+[HKEY_CLASSES_ROOT\gvSIGProject\shell\open]
+@="Abrir"
+
+[HKEY_CLASSES_ROOT\gvSIGProject\shell\open\command]
+@="C:\\Archivos de programas\\gvSIG_1.0\\bin\\gvSIG.exe \"%1\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+*******************************************************************
+URL's y recortes:
+
+
+http://en.wikipedia.org/wiki/Windows_registry
+
+http://www.akadia.com/services/windows_registry_tutorial.html
+
+http://webtools.live2support.com/windows/
+
+
+
+
+
+
+
+http://www.freevbcode.com/ShowCode.asp?ID=2799
+******************
+usando VB
+
+
+Public Sub associate(EXT As String, FileType As String, _
+   FileName As String)
+On Error Resume Next
+Dim b As Object
+Set b = CreateObject("wscript.shell")
+b.regwrite "HKCR\" & EXT & "\", FileType
+b.regwrite "HKCR\" & FileType & "\", "MY file"
+b.regwrite "HKCR\" & FileType & "\DefaultIcon\", FileName
+b.regwrite "HKCR\" & FileType & "\shell\open\command\", _
+   FileName & " %L"
+b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application"
+b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application", FileName
+b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\"
+b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\a", FileName
+
+End Sub
+
+'Sample Usage
+Private Sub Form_Load()
+associate ".jpg", "JPGFile", _
+   "C:\Program Files\Accessories\MSPAINT.EXE"
+Unload Me
+End Sub
+
+
+****************
+
+
+http://www.ss64.com/nt/:
+http://www.ss64.com/nt/ftype.html
+**************************************************************************
+FTYPE
+
+Display or change the link between a FileType and an executable program
+
+Syntax
+   FTYPE fileType=executable_path
+
+   FTYPE
+
+   FTYPE fileType
+
+   FTYPE fileType=
+
+Key
+   fileType        : The type of file
+
+   executable_path : The executable program including any command line parameters             
+
+More than one file extension may be associated with the same File Type.
+e.g. both the extension .JPG and the extension .JPEG may be associated with the File Type "jpegfile"
+
+File Types can be displayed in the Windows Explorer GUI: [View, Options, File Types] however the spelling is usually different to that expected by the FTYPE command e.g. the File Type "txtfile" is displayed in the GUI as "Text Document"and "jpegfile" is displayed as "image/jpeg"
+
+Several FileTypes can be linked to the same executable application, but
+one FileType cannot be linked to more than one executable application.
+
+FTYPE file type will display the current executable program for that file type.
+
+FTYPE without any parameters will display all FileTypes and the executable program for each.
+
+Defining command line parameters
+
+It is almost always necessary to supply command line parameters so that when a document is opened not only is the relevant application loaded into memory but the document itself also loaded into the application. To make this happen the filename of the document must be passed back to the application.
+
+Command line parameters are exactly like batch file parameters, %0 is the executable program and %1 will reference the document filename
+
+so a simple command line might be:
+
+MyApplication.exe "%1"
+
+If any further parameters are required by the application they can be passed as %2, %3. To pass ALL parameters to an application use %*. To pass all the remaining parameters starting with the nth parameter, use %~n where n is between 2 and 9.
+
+The FileType should always be created before making a File Association
+
+For example:
+
+FTYPE htmlfile="C:\PROGRA~1\Plus!\MICROS~1\iexplore.exe" -nohome
+ASSOC .html=htmlfile
+
+FTYPE pagemill.html=C:\PROGRA~1\Adobe\PAGEMI~1.0\PageMill.exe "%1"
+ASSOC .html=pagemill.html
+
+FTYPE rtffile="C:\Program Files\Windows NT\Accessories\WORDPAD.EXE" "%1"
+ASSOC .rtf=rtffile
+
+FTYPE word.rtf.8="C:\Program Files\Microsoft Office\Office\winword.exe" /n
+ASSOC .rtf=word.rtf.8
+
+Switching a File Association between multiple applications
+
+If you have multiple applications that use the same file extension, the ASSOC command can be used to switch the file extension between the different FileTypes.
+
+Deleting a FileType
+
+Specify executable_path=nothing and the FTYPE command will delete the executable_path for that FileType.
+For example:
+FTYPE htmlfile=
+
+Backing up your FileTypes
+
+FTYPE >backup_types.txt
+ASSOC >backup_ext.txt
+
+Restoring your FileTypes from a Backup
+
+FOR /F "tokens=* delims=" %G IN (backup_types.txt) DO FTYPE %G
+FOR /F "tokens=* delims=" %G IN (backup_ext.txt) DO ASSOC %G
+
+This will recreate the CLASS id's in the registry at HKey_Classes_Root\.<file extension>
+If you put the commands above in a batch file change the %G to be %%G
+
+Using File associations at the command line
+
+If you have a file association between .DOC and Word for Windows then at a command prompt you can open a document with any of the following commands:
+
+Start "My Document.doc"
+"Monthly Report.doc"
+JULY.DOC
+
+note that the file extension must be supplied for this to work
+
+"True to type - Of a plant, or group of plants, which matches the accepted description of the cultivar to which it is assumed to belong"
+
+Related Commands:
+
+ASSOC - Change file extension associations
+Batch file to list the application associated with a file extension
+ASSOCIAT - One step file association (Resource Kit)
+
+**************************************************************************
+
+http://www.ss64.com/nt/assoc.html
+*************************************************************************
+
+ASSOC
+
+Display or change the association between a file extension and a fileType
+
+Syntax
+   ASSOC .ext = [fileType]
+   ASSOC
+   ASSOC .ext
+   ASSOC .ext =
+
+Key
+    .ext      : The file extension
+    fileType  : The type of file 
+
+A file extension is the last few characters in a FileName after the period.
+So a file called JANUARY.HTML has the file extension .HTML
+
+The File extension is used by Windows NT to determine the type of information stored in the file and therefore which application(s) will be able to display the information in the file. File extensions are not case sensitive and are not limited to 3 characters.
+
+More than one file extension may be associated with the same File Type.
+e.g. both the extension .JPG and the extension .JPEG may be associated with the File Type "jpegfile"
+
+At any one time a given file extension may only be associated with one File Type.
+e.g. If you change the extension .JPG so it is associated with the File Type "txtfile" then it's normal association with "jpegfile" will disappear. Removing the association to "txtfile" does not restore the association to "jpegfile"
+
+File Types can be displayed in the Windows Explorer GUI: [View, Options, File Types] however the spelling is usually different to that expected by the ASSOC command e.g. the File Type "txtfile" is displayed in the GUI as "Text Document"and "jpegfile" is displayed as "image/jpeg"
+
+The command ASSOC followed by just a file extension will display the current File Type for that extension.
+
+ASSOC without any parameters will display all the current file associations.
+
+ASSOC with ".ext=" will delete the association for that file extension.
+
+Did you leave the Always Use This Program To Open This File option turned on?
+To change it back so it prompts you to specify a program each time, just delete the association for that file type
+ASSOC .ext=
+[where .ext is the file extension].
+Now when you double-click on a file of that type, the system will ask you what program you want to use.
+
+Using the ASSOC command will edit values stored in the registry at HKey_Classes_Root\.<file extension>
+Therefore it's possible to use registry permissions to protect a file extension and prevent any file association changes.
+
+Examples:
+
+Viewing file associations:
+
+ASSOC .txt
+ASSOC .doc
+ASSOC >backup.txt
+
+Editing file associations:
+
+ASSOC .txt=txtfile
+ASSOC .DIC=txtfile
+ASSOC .html=Htmlfile
+
+Deleting a file association:
+
+ASSOC .html=
+
+Repair .REG and .EXE file associations:
+
+ASSOC .EXE=exefile
+ASSOC .REG=regfile
+
+Digging through CLASSES_ROOT entries often reveals more than one shell for the same application, for example the Apple Quick Time player has two entries, one to "open" (which gives an annoying nag screen) and one to just "play" the QT file:
+[HKEY_CLASSES_ROOT\MOVFile\shell\open] and [play]
+
+In cases like this you can change the default action e.g.
+[HKEY_CLASSES_ROOT\MOVFile\shell]
+@="play"
+
+"Of all forms of caution, caution in love is perhaps the most fatal to true happiness" - Bertrand Russell
+
+Related:
+
+FTYPE - Edit file types (used in file extension associations)
+Batch file to list the application associated with a file extension
+ASSOCIAT - One step file association (Resource Kit)
+Q162059 - Associate Internet Explorer with MS Office files
+JSIFAQ - Tip 9715 - List File Types with executable path
+
+****************************************************************
+
+
+http://www.ss64.com/nt/associate.html
+**********************************************************************
+ASSOCIATE.exe (Resource Kit)
+
+One step file association.
+
+This utility does the job of both ASSOC and FTYPE, in one step. ASSOCIATE assigns an extension directly with an executable application. This is done by automatically adding a new FileType to the system registry.
+
+Syntax
+      ASSOCIATE .ext filename [/q /d /f]
+
+Key
+   .ext     : Extension to be associated.
+   filename : Executable program to associate .ext with.
+   /q       : Quiet - Suppress interactive prompts.
+   /f       : Force - Force overwrite or delete without questions.
+   /d       : Delete - Delete the association.
+
+A file extension is the last few characters in a FileName after the period.
+So a file called JANUARY.HTML has the file extension .HTML
+
+The File extension is used by Windows NT to determine the type of information stored in the file and therefore which application(s) will be able to display the information in the file. File extensions are not case sensitive and are not limited to 3 characters.
+
+Example: adding a File Association
+
+To add the File Type "SQLfile"=Notepad.exe and also set the File Association of .SQL="SQLfile" run this command:
+
+ASSOCIATE .SQL Notepad.exe
+
+Example: Removing a File Association
+
+ASSOCIATE .SQL /d
+
+Note that /d will delete the File Association but will NOT delete the File Type.
+
+File types created by Associate.exe are always given a name in the form xxxfile, where xxx is the file extension.
+
+"There are three roads to ruin; women, gambling and technicians. The most pleasant is with women, the quickest is with gambling, but the surest is with technicians" - Georges Pompidou
+
+Related Commands:
+
+ASSOC Change file extension associations
+FTYPE Display or modify file types used in file extension associations
+**********************************************************************
+
+
+
+
+WINDOWS 98
+
+
+http://groups.google.com/group/alt.msdos.batch/browse_thread/thread/556321da29c9ca2e/e60e3330cd284b99?lnk=gst&q=file+association&rnum=2#e60e3330cd284b99
+***************************************************************************
+
+	
+De:		William Allen - ver perfil
+Fecha:		Mié 26 mar 2003 14:28
+Correo electrónico: 		"William Allen" <_inval...@mayfly13.fsnet.co.uk>
+Grupos: 		alt.msdos.batch
+Sin calificar
+Valoración:	 
+mostrar opciones
+Responder | Responder al autor | Reenviar | Imprimir | Mensaje individual | Mostrar mensaje original | Notificar abuso | Buscar mensajes de este autor
+
+"Robert Mark Bram" wrote in message
+> I recently asked this question in alt.msdos.batch.nt -- but I need an answer
+> for Win 98..
+
+> Can use a batch file to create a windows file association?
+
+Yes. Windows 95/98/ME users can use the Windows 98 Resource Kit
+utility ASSOCIAT.EXE (cloned from the NT4 Resource Kit), which will
+operate with the Windows 95/98/ME registries to create file associations
+very easily. ASSOCIAT.EXE provides an informative ERRORLEVEL and
+is designed for use in Batch files. Downloadable free from the Microsoft FTP site:
+ftp://ftp.microsoft.com/Services/TechNet/samples/ps/win98/Reskit/FILE/
+
+and click on file: ASSOCIAT.EXE
+
+For syntax help with using ASSOCIAT.EXE, use the /? switch
+associat /?
+
+Full documentation, usage instructions, and syntax examples for Batch
+usage of all the Windows 98 Resource Kit Batch tools (which you can
+use in Windows 95 and ME, too):
+ftp://ftp.microsoft.com/Services/TechNet/samples/ps/win98/reskit/help...
+This is a fully indexed and searchable compiled help file. Although
+each utility responds to the usual /? for brief help, this main file has
+huge detail. When you have the file, look in the Contents section
+under "Scripting Tools". 
+
+
+*************************************************************************
+
+PARA TODOS LOS WINDOWS
+
+http://www.robvanderwoude.com/index.html
+http://www.robvanderwoude.com/files/defopen.txt
+
+defopen.bat
+
+Create a default file association to Notepad and add "Open with Notepad", "Print with Notepad" and "Command Prompt Here" options to popup menus
+
+************************************************************************
+@ECHO OFF
+:: No parameters required
+IF NOT [%1]==[] GOTO Syntax
+
+:: Choose the correct command processor for the current operating system
+SET _cmd=
+:: Variable to add shortcut to menu entry (NT only,
+:: since COMMAND.COM cannot echo an ampersand)
+SET _=
+ECHO.%COMSPEC% | FIND /I "command.com" >NUL
+IF NOT ERRORLEVEL 1 SET _cmd=command.com /e:4096
+ECHO.%COMSPEC% | FIND /I "cmd.exe" >NUL
+IF NOT ERRORLEVEL 1 SET _cmd=cmd.exe
+IF [%_cmd%]==[cmd.exe] SET _=^&
+
+:: Create a temporary .REG file
+> "%Temp%.\DefOpen.reg" ECHO REGEDIT4
+>>"%Temp%.\DefOpen.reg" ECHO.
+ECHO Adding "Open with Notepad" entry
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\open]
+>>"%Temp%.\DefOpen.reg" ECHO @="%_%Open with Notepad"
+>>"%Temp%.\DefOpen.reg" ECHO.
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\open\command]
+>>"%Temp%.\DefOpen.reg" ECHO @="notepad.exe \"%%1\""
+>>"%Temp%.\DefOpen.reg" ECHO.
+ECHO Adding "Print with Notepad" entry
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\print]
+>>"%Temp%.\DefOpen.reg" ECHO @="%_%Print with Notepad"
+>>"%Temp%.\DefOpen.reg" ECHO.
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\print\command]
+>>"%Temp%.\DefOpen.reg" ECHO @="notepad.exe /p \"%%1\""
+>>"%Temp%.\DefOpen.reg" ECHO.
+
+:: If neither COMMAND.COM nor CMD.EXE then skip this step
+IF [%_cmd%]==[] ECHO Skipping "Command Prompt Here" entry
+IF [%_cmd%]==[] GOTO Merge
+
+ECHO Adding "Command Prompt Here" entry
+:: Add Command Prompt Here for files
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\prompt]
+>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
+>>"%Temp%.\DefOpen.reg" ECHO.
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\*\shell\prompt\command]
+>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\\..\""
+>>"%Temp%.\DefOpen.reg" ECHO.
+:: Add Command Prompt Here for directories
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Directory\shell\prompt]
+>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
+>>"%Temp%.\DefOpen.reg" ECHO.
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Directory\shell\prompt\command]
+>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\""
+>>"%Temp%.\DefOpen.reg" ECHO.
+:: Add Command Prompt Here for drives
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Drive\shell\prompt]
+>>"%Temp%.\DefOpen.reg" ECHO @="Command Prompt Here"
+>>"%Temp%.\DefOpen.reg" ECHO.
+>>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\Drive\shell\prompt\command]
+>>"%Temp%.\DefOpen.reg" ECHO @="%_cmd% /k cd \"%%1\""
+>>"%Temp%.\DefOpen.reg" ECHO.
+
+:: Merge the temporary .REG file
+:Merge
+START /WAIT REGEDIT /S "%Temp%.\DefOpen.reg"
+
+:: Delete the temporary .REG file
+DEL "%Temp%.\DefOpen.reg"
+
+:: Ready
+GOTO End
+
+:Syntax
+ECHO.
+ECHO DefOpen.bat,  Version 3.00 for Windows 95/98/NT 4/2000/XP
+ECHO Adds a default association: when a file without a file association
+ECHO is double-clicked, it will be opened with Notepad.
+ECHO Adds three new entries to the right mouse button menu as well:
+ECHO "Open with Notepad", "Print with Notepad" and "Command Prompt Here".
+ECHO.
+ECHO Usage:  DEFOPEN
+ECHO.
+ECHO Written by Rob van der Woude
+ECHO http://www.robvanderwoude.com
+ECHO Notepad registry tip courtesy of Regedit.com
+ECHO http://www.regedit.com
+
+:: Clean up variables and quit
+:End
+SET _cmd=
+SET _=
+*****************************
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/win-distribution/install.xml	(revision 29090)
@@ -0,0 +1,136 @@
+<installation version="1.0">
+	<info>
+		<appname>gvSIG_1.0 piloto 3D</appname>
+		<appversion>1.0</appversion>
+		<authors>
+			<author
+				name="Generalitat Valenciana. Conselleria d'Infraestructures i Transport"
+				email="" />
+			<author name="Iver TecnologÃ­as de la InformaciÃ³n S.A."
+				email="" />
+		</authors>
+		<url>http://www.gvsig.gva.es/</url>
+		<javaversion>1.4</javaversion>
+	</info>
+
+	<guiprefs height="600" resizable="yes" width="800">
+		<laf name="liquid">
+			<os family="windows" />
+		</laf>
+	</guiprefs>
+
+	<locale>
+		<!-- only keep the languages which are also available in gvSIG -->
+		<langpack iso3="spa" />
+		<langpack iso3="val" />
+		<langpack iso3="eng" />
+		<!--	<langpack iso3="cat"/>
+			<langpack iso3="chn"/> -->
+		<langpack iso3="cze" />
+		<!--	<langpack iso3="dan"/> -->
+		<langpack iso3="deu" />
+		<!--	<langpack iso3="fin"/>-->
+		<langpack iso3="fra" />
+		<langpack iso3="glg" />
+		<!--	<langpack iso3="hun"/> -->
+		<langpack iso3="ita" />
+		<!--	<langpack iso3="jpn"/>
+			<langpack iso3="mys"/>
+			<langpack iso3="ned"/>
+			<langpack iso3="nor"/>
+			<langpack iso3="pol"/> -->
+		<langpack iso3="por" />
+		<!--	<langpack iso3="rom"/>
+			<langpack iso3="rus"/>
+			<langpack iso3="scg"/>
+			<langpack iso3="svk"/>
+			<langpack iso3="swe"/>
+			<langpack iso3="ukr"/> -->
+	</locale>
+
+	<native os="windows" type="izpack" name="ShellLink.dll" />
+
+	<resources>
+		<res src="resources/gpl.txt" id="LicencePanel.licence" />
+		<res src="resources/LEEME.html" id="HTMLInfoPanel.info" />
+		<res src="resources/images/Logo_gvsig_gva.jpg"
+			id="Installer.image" />
+		<res src="resources/userInputSpec.xml" id="userInputSpec.xml" />
+		<parsable os="windows" targetfile="resources/userInputSpec.xml" />
+		<res src="resources/userInputLang.xml_val"
+			id="userInputLang.xml_val" />
+		<res src="resources/userInputLang.xml_spa"
+			id="userInputLang.xml_spa" />
+		>
+	</resources>
+
+	<panels>
+		<panel classname="HTMLInfoPanel" />
+		<panel classname="LicencePanel" />
+		<panel classname="PacksPanel" />
+		<panel classname="UserInputPanel" />
+		<panel classname="InstallPanel" />
+		<panel classname="SimpleFinishPanel" />
+	</panels>
+
+
+
+
+	<packs>
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="GvSIG UPDATES" required="yes">
+			<description>Extension piloto 3D</description>
+
+
+			<!-- dll necesarias para la extension 3D -->
+			<fileset targetdir="$INSTALL_PATH/lib"
+				dir="../../ext3D/binaries/w32" override="true">
+				<include name="**/*" />
+			</fileset>
+
+			<fileset targetdir="$JAVA_HOME/bin"
+				dir="../../ext3D/binaries/w32" override="true">
+				<include name="**/*" />
+			</fileset>
+
+
+			<!-- Copiando JDialogSkin -->
+			<file
+				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.core/"
+				src="/bin/gvSIG/extensiones/com.iver.core/com.iver.core.jar"
+				override="true" />
+			
+			<!-- Copiando la cache 
+			<file targetdir="$USER_HOME/gvSIG/.data/"
+				src="/home/rgaitan/Desktop/cache" override="true" />
+			-->
+			<!-- Sobreescribiendo el nuevo .ini -->
+			<file os="windows" targetdir="$INSTALL_PATH/bin"
+				src="resources/gvSIG.ini" override="true" />
+			<parsable os="windows"
+				targetfile="$INSTALL_PATH/bin/gvSIG.ini" />
+
+			<file targetdir="$INSTALL_PATH/bin/"
+				src="../../_fwAndami/theme" override="true" />
+		</pack>
+
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="3D extensions" required="yes">
+			<description>Install 3D Extension</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="/extensiones/com.iver.ai2.gvsig3d"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="Catalog client" required="yes">
+			<description>Install Catalog client</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="/extensiones/es.gva.cit.gvsig.catalogClient"
+				override="true" />
+		</pack>
+
+
+	</packs>
+
+</installation>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/exec
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/exec
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/Notas_asociaciacion_archivos.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/Notas_asociaciacion_archivos.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/Notas_asociaciacion_archivos.txt	(revision 29090)
@@ -0,0 +1,123 @@
+PARA KDE: dejar un fichero '.desktop' en el directorio $HOME/.kde/share/mimelnk/application
+como este:
+
+[Desktop Entry]
+Comment=
+Hidden=false
+Icon=/x/apps/gvSIG_0.1_856/bin/ico-gvSIG.png
+MimeType=application/gvSIG
+Patterns=*.gvp;*.GVP
+Type=MimeType
+
+
+y apadir a fichero $HOME/.kde/share/config/profilerc algo asi:
+
+[application/gvSIG - 1]
+AllowAsDefault=true
+Application=kde-gvSIG.sh-3.desktop
+GenericServiceType=Application
+Preference=1
+ServiceType=application/gvSIG
+
+y el el fichero de menu ($HOME/.kde/share/applnk/.../gvSIG*.desktop)
+la entrada 'MimeType' debe estar 'IGUAL' que en el fichero que
+hemos dejado en $HOME/.kde/share/mimelnk/application
+
+
+
+Para GNOME:
+
+POR Estudiar
+
+Para FIREFOX:
+
+POR Estudiar
+
+
+
+Los archivos usados para la asociacion estan en ./resources/mime
+y los scripts que los manejan son ./resources/postinstall.sh y
+./resources/unistall.sh
+
+
+
+
+
+
+
+
+
+**************************************************************
+URL's y recortes:
+
+
+
+
+http://www.ces.clemson.edu/linux/fc4_desktop.shtml
+*********************************************************************
+File Association. At the top of the context menu for a file in Nautilus is found the 'Open with "Preferred Application" menu item. Next, is found the 'Open with' menu item, which lists all other applications which can open the file. These menu items are controlled respectively by the following files:
+
+  /usr/share/applications/defaults.list
+  /usr/share/applications/mimeinfo.cache
+
+Each line in defaults.list contains a desktop file followed by a mimetype. For example, the line
+
+  application/postscript=evince.desktop
+
+shows that Evince is the preferred application for opening postscript files. Each line in mimeinfo.cache contains a desktop file followed by a list of mimetypes. For example, the line
+
+  image/gif=gthumb.desktop;gimp-2.2.desktop;
+      gnome-eog.desktop;
+
+shows the list of applications available for opening gif files. Gnome constructs the mimeinfo.cache file by processing the mimetypes recorded in the desktop files. Gnome comes with a pre-built system-wide defaults.list. At the user level there are parallel files
+
+  ~/.local/applications/defaults.list
+  ~/.local/applications/mimeinfo.cache
+
+Users can add lines to these files as follows.
+
+  In a Nautilus window, right click on a file
+  Select Properties
+  Select the 'Open With' tab
+  To add to the current 'Open With' list
+  Hit Add and select an application
+  Hit Add again
+  Select the preferred application radio button
+   
+************************
+
+http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
+************************
+
+<MIME> = /usr/local/share/mime
+<MIME> = /usr/share/mime
+
+
+Each application that wishes to contribute to the MIME database will install a single XML file, named after the application, into one of the three <MIME>/packages/ directories (depending on where the user requested the application be installed). After installing, uninstalling or modifying this file, the application MUST run the update-mime-database command, which is provided by the freedesktop.org shared database[SharedMIME].
+
+update-mime-database is passed the mime directory containing the packages subdirectory which was modified as its only argument. It scans all the XML files in the packages subdirectory, combines the information in them, and creates a number of output files. 
+
+
+
+Here is an example source file, named diff.xml:
+
+<?xml version="1.0"?>
+<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
+  <mime-type type="text/x-diff">
+    <comment>Differences between files</comment>
+    <comment xml:lang="af">verskille tussen lêers</comment>
+    ...
+    <magic priority="50">
+      <match type="string" offset="0" value="diff\t"/>
+      <match type="string" offset="0" value="***\t"/>
+      <match type="string" offset="0" value="Common subdirectories: "/>
+    </magic>
+    <glob pattern="*.diff"/>
+    <glob pattern="*.patch"/>
+  </mime-type>
+</mime-info>
+
+********************
+
+
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/install.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/install.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/install.xml	(revision 29090)
@@ -0,0 +1,184 @@
+<installation version="1.0">
+	<info>
+		<appname>3D</appname>
+		<appversion>1.2</appversion>
+		<authors>
+			<author
+				name="Generalitat Valenciana. Conselleria d'Infraestructures i Transport"
+				email="" />
+			<author name="Iver TecnologÃ­as de la InformaciÃ³n S.A."
+				email="" />
+		</authors>
+		<url>http://www.gvsig.gva.es/</url>
+		<javaversion>1.5</javaversion>
+	</info>
+
+	<guiprefs height="600" resizable="yes" width="800">
+		<laf name="liquid">
+			<os family="unix" />
+		</laf>
+	</guiprefs>
+
+	<locale>
+		<!-- only keep the languages which are also available in gvSIG -->
+		<langpack iso3="spa" />
+		<langpack iso3="val" />
+		<langpack iso3="eng" />
+		<!--	<langpack iso3="cat"/>
+			<langpack iso3="chn"/> -->
+		<langpack iso3="cze" />
+		<!--	<langpack iso3="dan"/> -->
+		<langpack iso3="deu" />
+		<!--	<langpack iso3="fin"/>-->
+		<langpack iso3="fra" />
+		<langpack iso3="glg" />
+		<!--	<langpack iso3="hun"/> -->
+		<langpack iso3="ita" />
+		<!--	<langpack iso3="jpn"/>
+			<langpack iso3="mys"/>
+			<langpack iso3="ned"/>
+			<langpack iso3="nor"/>
+			<langpack iso3="pol"/> -->
+		<langpack iso3="por" />
+		<!--	<langpack iso3="rom"/>
+			<langpack iso3="rus"/>
+			<langpack iso3="scg"/>
+			<langpack iso3="svk"/>
+			<langpack iso3="swe"/>
+			<langpack iso3="ukr"/> -->
+	</locale>
+
+	<resources>
+		<res src="resources/gpl.txt" id="LicencePanel.licence" />
+		<res src="resources/LEEME.html" id="HTMLInfoPanel.info" />
+		<res src="resources/images/Logo_gvsig_gva.jpg"
+			id="Installer.image" />
+		<res src="resources/userInputSpec.xml" id="userInputSpec.xml" />
+		<parsable os="linux" targetfile="resources/userInputSpec.xml" />
+		<res src="resources/userInputLang.xml_val"
+			id="userInputLang.xml_val" />
+		<res src="resources/userInputLang.xml_spa"
+			id="userInputLang.xml_spa" />
+	</resources>
+
+	<panels>
+		<panel classname="HTMLInfoPanel" />
+		<panel classname="LicencePanel" />
+		<panel classname="PacksPanel" />
+		<panel classname="UserInputPanel" />
+		<panel classname="InstallPanel" />
+		<panel classname="SimpleFinishPanel" />
+	</panels>
+
+	<packs>
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="GvSIG UPDATES" required="yes">
+			<description>GvSIG updates</description>
+
+
+			<!-- so necesarias para la extension 3D -->
+			<!-- dll necesarias para la extension 3D -->
+			<fileset targetdir="$INSTALL_PATH/libs"
+				dir="../../../binaries/linux/3D" override="true"
+				os="unix">
+				<include name="**/*" />
+				<exclude name="*.head" />
+			</fileset>
+			
+			
+<!--			<fileset targetdir="$INSTALL_PATH/libs"-->
+<!--				dir="../ext3D-distribution/ext3D/linux/lib" override="true"-->
+<!--				os="unix">-->
+<!--				<include name="**/*" />-->
+<!--				<exclude name="*.head" />-->
+<!--			</fileset>-->
+			
+			<fileset
+				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				dir="../../../build/product/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				override="true" os="unix">
+				<include name="**/*.jar" />
+				<exclude name="**/*extSymbology*.jar" />
+			</fileset>
+
+
+<!--			<fileset-->
+<!--				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"-->
+<!--				dir="../ext3D-distribution/ext3D/linux/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"-->
+<!--				override="true" os="unix">-->
+<!--				<include name="**/*.jar" />-->
+<!--			</fileset>-->
+
+			<!-- file os="unix"
+				targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/"
+				src="../ext3D-distribution/ext3D/linux/bin/gvSIG/extensiones/com.iver.cit.gvsig/lib/lib3DMap-*.jar"
+				override="true" /-->
+
+
+			<!-- Sobreescribiendo el sh -->
+			<file os="unix" targetdir="$INSTALL_PATH"
+				src="resources/install.sh" override="true" />
+			<parsable os="unix" targetfile="$INSTALL_PATH/install.sh" />
+
+			<parsable os="unix" targetfile="$INSTALL_PATH/libs/install-3D.sh" />
+			<executable
+				targetfile="$INSTALL_PATH/libs/install-3D.sh" stage="postinstall"
+				keep="true" failure="ask" />
+
+		</pack>
+
+
+		<pack name="3D extensions" required="yes">
+			<description>Install 3D Extension</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.ext3Dgui"
+				override="true" />
+		</pack>
+		
+	
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="3D Animation" required="yes">
+			<description>Install 3D Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimation3D"
+				override="true" />
+		</pack>
+		
+	
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="2D animation" required="yes">
+			<description>Install 2D Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimation2D"
+				override="true" />
+		</pack>
+		
+	
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="Common animation" required="yes">
+			<description>Install Common Animation</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimationCommon"
+				override="true" />
+		</pack>
+		
+		<!-- aki se ponen las cosas que ha que machacar -->
+		<pack name="Animation GUI" required="yes">
+			<description>Install Animation GUI</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extAnimationGUI"
+				override="true" />
+		</pack>
+
+		<pack name="Docking Skin" required="yes">
+			<description>Install Docking Skin</description>
+			<file targetdir="$INSTALL_PATH/bin/gvSIG/extensiones/"
+				src="../../../build/product/gvSIG/extensiones/org.gvsig.extDockingSkin"
+				override="true" />
+		</pack>
+
+
+
+	</packs>
+
+</installation>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cat
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cat	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cat	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/unix_shortcut_spec.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/unix_shortcut_spec.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/unix_shortcut_spec.xml	(revision 29090)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<shortcuts>
+	<programGroup 	defaultName="Gva/gvSIG"
+					location="applications"/>
+					
+   <shortcut	name="gvSIG User Manual" 
+   				programGroup="no" 
+   				desktop="no" 
+   				applications="no" 
+   				startMenu="yes" 
+   				startup="no" 
+   				target="acroread" 
+   				workingDirectory="" 
+   				commandLine="$INSTALL_PATH/doc/user/user-doc-0.3.pdf" 
+   				initialState="noShow" 
+   				iconFile="$INSTALL_PATH/bin/help.png" 
+   				iconIndex="0" 
+   				url="$INSTALL_PATH/doc/user/user-doc-0.3.pdf" 
+   				type="Application" 
+   				encoding="UTF-8" 
+   				description="gvSIG user documentation (PDF format)"> 
+   				<createForPack name="Documentation"/> 
+   	</shortcut>
+   	<shortcut	name="gvSIG"
+				programGroup="yes"
+				desktop="yes"
+				startMenu="yes"
+				applications="no"
+				startup="no"
+				target="$INSTALL_PATH/bin/gvSIG.sh"
+				workingDirectory="$INSTALL_PATH/bin"
+				initialState="normal"
+				iconFile="$INSTALL_PATH/bin/ico-gvSIG.png"
+				iconIndex="0"
+				type="Application"
+				encoding="UTF-8"
+				description="gvSIG application">
+		<createForPack name="gvSIG program"/>
+	</shortcut>
+   <shortcut	name="gvSIG Uninstaller"
+				programGroup="yes"
+				desktop="yes"
+				applications="no"
+				startMenu="yes"
+				startup="no"
+				target="$INSTALL_PATH/Uninstaller/uninstall.sh"
+				initialState="normal"
+				iconFile="$INSTALL_PATH/bin/uninstall.png"
+				iconIndex="0"
+				workingDirectory="$INSTALL_PATH/Uninstaller"
+				type="Application"
+				encoding="UTF-8"
+				description="gvSIG uninstaller">
+		<createForPack name="gvSIG program" />
+	</shortcut> 
+</shortcuts>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_fra
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_fra	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_fra	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gvSIG.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gvSIG.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gvSIG.sh	(revision 29090)
@@ -0,0 +1,16 @@
+#!/bin/sh
+# gvSIG.sh
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$INSTALL_PATH/libs/"
+export PROJ_LIB="$INSTALL_PATH/bin/gvSIG/extensiones/org.gvsig.crs/data"
+cd "$INSTALL_PATH/bin"
+#java -Djava.library.path=/usr/lib:"$INSTALL_PATH/libs" -cp andami.jar:./lib/gvsig-i18n.jar:./lib/beans.jar:./lib/log4j-1.2.8.jar:./lib/iver-utiles.jar:./lib/castor-0.9.5.3-xml.jar:./lib/crimson.jar:./lib/xerces_2_5_0.jar:./lib/javaws.jar:./lib/xml-apis.jar:./lib/looks-2.0.2.jar:./lib/JWizardComponent.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/jogl.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/gluegen-rt.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-core-1.0-SNAPSHOT.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-features-1.0-SNAPSHOT.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-planets-1.0-SNAPSHOT.jar:./gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-viewer-1.0-SNAPSHOT.jar -Xmx500M com.iver.andami.Launcher gvSIG gvSIG/extensiones $1
+
+for i in ./lib/*.jar ; do
+  LIBRARIES=$LIBRARIES:"$i"
+done
+for i in ./lib/*.zip ; do
+  LIBRARIES=$LIBRARIES:"$i"
+done
+
+$JAVA_HOME/bin/java -Djava.library.path=/usr/lib:"$INSTALL_PATH/libs" -cp andami.jar$LIBRARIES -Xmx500M com.iver.andami.Launcher gvSIG gvSIG/extensiones "$@"
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_eng
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_eng	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_eng	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/LEEME.html
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/LEEME.html	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/LEEME.html	(revision 29090)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<style type="text/css">
+html, body, h1, h2, h3, h4, div, p, ul, li, input {
+   font-family: Arial, Helvetica, sans-serif;
+}
+
+h1 {
+   font-size: large;
+}
+
+h2 {
+   font-size: large;
+}
+
+h3 {
+   font-size: medium;
+}
+</style>
+</head>
+<body>
+<h1>gvSIG, el SIG en software libre de la Generalitat Valenciana
+(http://www.gvsig.gva.es).</h1>
+
+<h2>Autores:</h2>
+<ul>
+<li>Generalitat Valenciana
+ (Conselleria d'Infraestructures i Transport).</li>
+<li>Iver Tecnolog&iacute;as de la Informaci&oacute;n S.A.</li>
+</ul>
+
+<p>Software con licencia GNU/GPL
+(http://www.fsf.org/licensing/licenses/gpl.html)</p>
+
+<p>Contacto:
+	gvsig@gva.es<p>
+
+<h2>Requisitos de la aplicaci&oacute;n:</h2>
+<h3>Sistema</h3>
+<ul>
+<li>M&iacute;nimos: Pentium IV / 512 MB RAM / Targeta grafica compatible con OpenGL 1.5</li>
+<li>Recomendables: Pentium IV / 1 GB RAM / Targeta Grafica compatible con OpenGL 2.0</li>
+<li>Sistemas operativos: plataformas Windows y Linux.
+ Probado en XP, Ubuntu Linux y Mac OS X.</li>
+</ul>
+
+<h3>Software instalado</h3> (disponible en http://www.gvsig.gva.es o en http://java.sun.com)
+<ul>
+<li>M&aacute;quina Virtual Java 1.5.</li>
+<li>JAI (Java Advanced Imaging).</li>
+<li>JAI Image I/O.</li>
+</ul>
+
+<p style="text-align:justify">Nota: Las librer&iacute;as JAI y JAI Image I/O deben estar instaladas sobre la M&aacute;quina Virtual Java que gvSIG utilice en su ejecuci&oacute;n. Si se instala una nueva JVM en el sistema y se usa para ejecutar gvSIG ser&aacute; indispensable instalar las librer&iacute;as sobre &eacute;sta (gvSIG se ejecuta con la JVM que tenga por defecto el sistema operativo; para saber cu&aacute;l es, ejecutar <span style="monospace">"java&nbsp;-version"</span> en un interfaz de comandos o consola).</p>
+
+<h2>M&aacute;s informaci&oacute;n y soporte en:</h2>
+<h3> Web oficial del proyecto:</h3>
+	http://www.gvsig.gva.es
+
+<h3>Listas de distribuci&oacute;n:</h3>
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios</span> (soporte para usuarios).
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores</span> (soporte para desarrolladores).
+<span style="monospace"> http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional</span> (soporte para desarrolladores o usuarios de habla no hispana).
+
+</body>
+</html>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/andami-config.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/andami-config.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/andami-config.xml	(revision 29090)
@@ -0,0 +1,5 @@
+<andami-config locale-language="$ISO3_LANG" pluginsDirectory="gvSIG/extensiones">
+	<andami update="yes"/>
+        <plugin name="com.iver.cit.gvsig" update="yes"/>
+        <plugin name="com.iver.core" update="no"/>
+</andami-config>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_deu
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_deu	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_deu	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_ita
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_ita	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_ita	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cze
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cze	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_cze	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gpl.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gpl.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/gpl.txt	(revision 29090)
@@ -0,0 +1,125 @@
+	GNU GENERAL PUBLIC LICENSE
+	Version 2, June 1991
+
+	 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+		Preamble
+
+	The licenses for most software are designed to take away your freedom to share and change it.  By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.  This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it.  (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.)  You can apply it to your programs, too.
+
+	When we speak of free software, we are referring to freedom, not price.  Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+	To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+	For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have.  You must make sure that they, too, receive or can get the source code.  And you must show them these terms so they know their
+rights.
+
+	We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+	Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software.  If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+	Finally, any free program is threatened constantly by software	patents.  We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary.  To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+	The precise terms and conditions for copying, distribution and modification follow.
+
+				GNU GENERAL PUBLIC LICENSE
+	TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+	0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License.  The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.  (Hereinafter, translation is included without limitation in the term "modification".)  Each licensee is addressed as "you".
+
+	Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.  The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1.	You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2.	You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+c)	If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License.  (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works.  But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3.	You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+c)	Accompany it with the information you received as to the offer to distribute corresponding source code.  (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it.  For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.  However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4.	You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License.  Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5.	You are not required to accept this License, since you have not signed it.  However, nothing else grants you permission to modify or distribute the Program or its derivative works.  These actions are prohibited by law if you do not accept this License.  Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6.	Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions.  You may not impose any further restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to this License.
+
+7.	If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License.  If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all.  For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices.  Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8.	If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded.  In such case, this License incorporates the limitation as if written in the body of this License.
+
+9.	The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time.  Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.  If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10.	If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission.  For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.  Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11.	BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12.	IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+<one line to give the program's name and a brief idea of what it does.> Copyright (C) <year>  <name of author>
+
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License.  Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary.  Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+<signature of Ty Coon>, 1 April 1989
+Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs.  If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library.  If this is what you want to do, use the GNU Library General Public License instead of this License.
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_val
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_val	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_val	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/win_shortcut_spec.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/win_shortcut_spec.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/win_shortcut_spec.xml	(revision 29090)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<shortcuts>
+
+	<skipIfNotSupported/>
+	<programGroup 	defaultName="Gva/gvSIG"
+									location="applications"/>
+	<shortcut	name="gvSIG"
+						target="$INSTALL_PATH/bin/gvSIG.exe"
+						workingDirectory="$INSTALL_PATH/bin"
+						description="gvSIG application"
+						iconFile="$INSTALL_PATH/bin/ico-gvSIG.ico"
+						iconIndex="0"
+						initialState="normal"
+						programGroup="yes"
+						desktop="yes"
+						applications="no"
+						startMenu="yes"
+						startup="no">
+		<createForPack name="gvSIG program"/>
+	</shortcut>
+		
+   	<shortcut	name="User Manual"
+				target="$INSTALL_PATH\user-doc\user-doc-0.3.pdf"
+		     	programGroup="yes"
+				desktop="no"
+				applications="no"
+				startMenu="no"
+				startup="no"
+				iconFile="$INSTALL_PATH\bin\help.ico"
+				commandLine=""
+				description="Documentation">  
+     <createForPack name="Documentation" />
+   </shortcut>
+   
+	<shortcut
+         name="Uninstall gvSIG"
+         programGroup="yes"
+         desktop="no"
+         applications="no"
+         startMenu="no"
+         startup="no"
+         type="Application"
+         encoding="UTF-8"
+         target="$INSTALL_PATH\bin\uninstall.bat"
+         commandLine=""
+         workingDirectory=""
+         description="Uninstall gvSIG"
+         iconIndex="0"
+         iconFile="$INSTALL_PATH\bin\uninstall.ico"
+         initialState="noShow">
+	</shortcut>
+   
+</shortcuts>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_spa
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_spa	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_spa	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Ruta a gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall1.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/Logo-gvSIG.gif
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/Logo-gvSIG.gif	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/Logo-gvSIG.gif	(revision 29090)
@@ -0,0 +1,5 @@
+P7 332
+#IMGINFO:270x272 Indexed (13326 bytes)
+#END_OF_COMMENTS
+59 60 255
+I$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶Ú¶%HII·Ú¶¶%HIIÛ¶¶¶I$IIÛ¶¶Û$I$IÛ¶Ú·$IHI$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶Ú¶%HIÿúúþûú(EIÚ·¶ºE(IEÛ¶ºÖ%H)I×ºÖ¶%HII$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶þúúþúúúúúùúöúùúÚÖ»$IHE»Öº·$IHI×º¶·D)HI$IIÛ¶¶¶IH%IÛ¶¶Ú%HÿúÿùûùûùúùúöùúÙöùúùöùúõ)I$ÛÖ»¶$IIH·Ú·¶D)IÛ¶¶¶I$IIÛ¶¶Ú%H%IÿþúúúúùúõúôÚõùôöùõùÕúõùöùùö¶(IE)Ú·Öº$IIEº×ºÛ¶¶¶I$IIÛ¶¶Ú%H%ÿþúúùöùõùÕôõôõôÕôõôùÕôöøöùõÙöù$II×º¶¶I$IIÛ¶¶Û¶¶¶I$IIÛ¶¶Ú%þûùúúùõõôÙðùôõÔõôõôÕôõôõÔùõôöùõÙõú)Ö»Ö¶)DI)ÛÖ¶Û¶¶¶I$IIÛ¶¶ÚûùûùÙõõôõØñøõôõÔõôõôÕôõôôÕøñùôõÕùõôú¶¶·ºDI%IÚ·ºI$IIÛ¶¶¶IH%ÿúùúùõôÕôõôõôÕôôõôÙðùôõÔõôõôÕôõôõøÑÕÕÕ%HIÛ¶¶×(E(I$IIÛ¶¶¶IþûùúùõõôÕôõôõØñøõôÕôõôôõÔõôõôÕøñøõÔõ±±‘ŒûÕÿÿÿÿÿûµ¶I$IIÛ¶¶¶ÿúþúöøõÕôõôõôÕøðùôÕôõôõÔõôõôõÔõôøñØõÑ±‘�mIÚÿÿÿÿû¶l)I$IIÛ¶¶¶þúúúôõõÔõôùðøÕôõôõÔõôõôÕôõôùÐøõôõôÕô²�Žh)IIùÿÛ¶’i(IÛ¶¶¶I$IúúúÙõõôõøÑøõôõÔõôõôÕôôõôõÔùðùôÕôõôõÔÕ±�m¶·Öº¶Ñ»mIÛ¶ÖÛ¶¶¶I$ÿÖùúõøõÔõôõôÕôôõôÕôõôõØñøõôõÔõôôõÔõôõµ��m)Ö»Ö¶$ÖMEÚ·ºÛ¶¶¶I$ÿÕúôõÕôõôøñØõôõôÕôõôõÔõôõôØñøõôõÔõôõÔ²ŒnÚ$Û¶·Ú$—$IÛ¶¶Û¶¶¶IúúÕõÙôõôõÔõôõôÔõôõôõØñøõôÕôõôõÔôõôõÔõÕ‘�iºEº×º¶ÛSº$Û¶ÛI$IIÛùú±õôÕôõøñØôõôõÔõôõôõÔõôõôÙðøõôÕôõôõÕ°ŽqÖ·Ú$I%H»w.Ú%H)I$IIþöù�ÔÑÔÑô°õ°ñ´ðµðÕÐÔÑÔÑÔÑÐÔÑÔÑÔÐÕÐÕÐÑ°‘mi’mÛ$I$ß—s¶$III$IIúùú¬ùðÙôôõôõÔõôõôÕôõôùÐùôôõôÕôõôõÔõôÕ±±m’¶Ú·$I»·–3RNH)EI$Iÿùõù­ôÕôùðùôÔõôõôÕôõôõÔõôùðùÔôõôõÔõôõÕ‘��º×¶º$Û——vQOÚ$IÛ¶¶ùúõù�ôõôøñØõôõôÕôõôõôÕôõôôÙðùôõÔõôõôÕÑ±qiHIÛ$Û›·vSNR’Ö»Û¶¶ùúõõ�ôõõÿÿÿÿôÕÿôõôúúÔôõôõØñøõôÔõôõôÕõ°²lnHEÛ(»——RSNRNÖºÛ¶¶ùöùô�øöÿôõøÿÐùÿõôõÿÔõøñøÕôõôõôÕôôõôÕÕÑ‘mÖ$I»·š“w22RNQ×ºÛ¶ùúõùÕ¬ôÿÿðØñÿôõùÿÐøÿôõôÕôõôõôÔõôõôÕøñÕ±‘�ºE(×›’Wr/1oQ·¶I$þõúôõŒøûÿôôõÿÔõôÿôúÿôÔõôõôÕôõôôÕôõôùÐÕ±‘�I·Úr—rW2/1oM’(I$þõõùô�ôÿÿðøñÿÔõôÿùÿôõÔõôõôÕôõøñØõôôõÔÒ´®�%Û¶wrw232nMr%I$þõõùð�õúÿôõôÿÔõôùÿÿôÕôõôõôÕôôõôÕøñøõÔÑÕ�‘I×ºRsR22NrIII$úùõôõ�õôùÿÿÿÿðùÔõÿúôõôÕôùðùÔõôõôÔõôõôÕ±±±)Ö»R3R.rNIHÛ¶ôúõÔõ°ôÕôõôõÿ°$õôùðùÔd)ôõôõøÑ°Õ·$IS2.rNIÛÛ¶ôúôÕô­øÕôõôõÿhøÑhhùôõÔõh ùôõôÕÔŒõøñÕ°¶Ö$I—232nMNÖÛ¶ôúôÕô­øÕôûùÿ×øñøõÔõôõôÔõh$õôõôÙˆùôõÐõµÑ•EH·2/22SMNmÛÛ¶ôõùÕô¬õØöùúùhøõôõôÔõôùðÙd$ùôõôõ$$øõôõÔÑÕ±)DÛRNS2.RNMnÚI$ùõùôõŒõôõøÑø­øõôõôÕôõôôÕh$õôõøñ($ôõôõÔõÕ±Û¶Ú¶NRNS2.RNMŽ(I$ùõõøñ�ôõôõÔõômôõôøñØõôõH ùôõôõ$$øõÐD%ø±Õ·¶Ú—MnRN3mNN±)I$þðùõô�øðùôÕôõô�ŒõôõÔôùðI$øõôõô$$ùôõDHõÕÐß×¶(·MNr.rNIßDI$ÿôõôõ�õôôõÔõôõôÕ°�ôôÕôõhõôõøñ($ôõôõøõÕÐ¶¶×(E(sRNRmND)Û¶¶ôõôÕ°õôôÕôõôõÔõôùÐõôõôÕh$øõôõÔD%øõôôõôÕÑ±»D»Öº·ÖNmNÖ¶Û¶¶ôÕôõŒøõôõôÕôõôõÔõôõôÔõôI$ôùðùô$$õôùðùôÕÑ‘‘E»Öº¶EWMNmÛ¶Û¶¶úÔôõŒõôõôÙðŒõÔõô±øõôõôH!øôõôõlõôõøñôµ±�’Ú·¶Ö¿—.rMû¶¶Û¶¶¶ôÕõŒøñøõôÕô$�ôõôõôH%øõôôõÔ! $õ‘‘�i(Û¶Û»s2mNÖ¶»I$IIõÔÕ¬õôÕôøñøõDùôõÔõôHDùôõôõÔÑÕ�‘m²¶)û›¶WNmIII$I$IIúÕÔ�ôõôõôÕôùðøÕôõôõôÕôõôõÔõôùðØõôõôÕõ°²lŽmÚ·$»»r3mNú%H)I$IIÛÐÕŒôõôùÐùôõôÕôõôõÔõôôõÔùðùôõÔõôõôÕô±±‘�IÛ¶Ú——–3mNIÚ%HII$IIÛÚÐ�øñØõôõôÕôõôõÔõôôõÔõøñøÕôõôõôÕôÕÑ±‘�m¶Û¶»–s2rINÿ¶D)IÛ¶¶¶I$úˆÙÐõôõÔùðùôÕôõôõÔõôôõôÕôùðùÔõôÕÑ±‘m�Û$I¶›“2RIN�)HÛ¶·Û¶¶¶I$Ii��Œ�¬�­ŒŒ°�¬Œ‘¬Œ±ŒŒ¬‘¬Œ‘¬Œ­�Œ��HiMiÛ$Ir’mNNh)IIÖ»¶Û¶¶¶I$I¶±±ÕÑÔõôÕôõôùðÙôôõôÕôõôõÔõôõÔõ‘�‘mm×¶HÛwRNNmIÿ)D)ÛÖ¶Û¶¶¶I$IIÖ‘±µÑôÕôõôÕôõôõÔõøðùôÕôõôõÔÕÑ�m‘i»¶Ö(—S.mNmÛ$I(EÛº×I$IIÛ¶¶¶I¶±‘Ñ´ñÕôõÔùðùôÕôõôôõÔõôõÔõ±‘��rDI)H×W.mNIÚ$Û¶·¶HI%I$IIÛ¶¶¶IH%±‘±ÕÑÕôÕôõôõÔôõôõØñøõôÕÑ‘�mmÖ)D)I›.NmIII(×Ú·¶$III$IIÛ¶¶¶IH%Û�®´²ÔñÔõôùÐùôõôÕôõôôÕõ±‘m�¶×(I$IWNMjß$ID»Ú·¶$III$IIÛ¶¶¶IH%Iÿ�‘�µÑÔÑõÔõôÕøñøôõÔõôÑ’Œr�¶Û$I(ESMM×(EIHÛ¶·¶H)EÛ¶¶¶I$IIÛ¶¶Ú%H’�‘�±µÑ±ôÕÕôõÔõôõÔõ±‘�i(II×º¶—M’$IÛ¶¶Û$I(EÛ¶ÚÛ¶¶¶I$IIÛ¶¶Ú%H%ÿm�‘�‘­•Ñ±ÕÑÔ±õµÑÔŽ�JHIE(ÛÖ·qÿ%HIÛ¶¶·H)DIÛ¶¶Û¶¶¶I$IIÛ¶¶Ú%H%IÛ¶�m‘�m‘­‘‘�±‘±�‘�m‘EI(IÛúú¶$I)EÚ»Ö¶$II)×Ú¶Û¶¶¶I$IIÛ¶¶Ú%H%IÛ¶ÚÛ¶m�m�m‘�m��q�m��‘)úÿÿÿh»E(II×º¶Ö%H)IÛ¶¶I$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶ÚÛ‘mim�q�mimm·Ú×´û»±%HÛ¶»¶D)IDÛº·Ö$I)I$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶Ú¶%HII·Ú¶¶%HIIÛ¶¶²‘m$IÛ¶¶Û$I(EÛ¶Û¶$III$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶Ú¶%HII·Ú¶¶%HIIÛ¶¶¶Iÿ$%ÛÚ¶¶%HII·Ú¶·H%HI$IIÛ¶¶¶IH%IÛ¶¶Ú%HI%Û¶Ú¶%HII·Ú¶¶%HIIÛ¶¶¶I$IIÛ¶¶Û$I$IÛ¶Ú·$IH
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/help16x16.png
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/help16x16.png	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/help16x16.png	(revision 29090)
@@ -0,0 +1,5 @@
+P7 332
+#IMGINFO:16x16 RGB (925 bytes)
+#END_OF_COMMENTS
+16 16 255
+I$IIÿÿßûßÿû(×º·¶I$IÿÿßÖ·(ÿÿÛÿ¶·ÚI$ÿÿ¶ÿ¿»ß»ÿÿÛÿ¶¶IÿßÛ»—»Ú·w—Ûÿ»ÿ¶ÿÿßssÛÿºÿÛOwÚÛÛ$ÿÿ—Snß“.“ÿrO—ÿ¶ÿÿÿOR+R+N—ÿNSNÿ¶ûÿÛO.N/Nsÿ–+NRû»¶ÿßK2J/Nÿ·..ONûš×ÿÿO.N/nßN/J/rÿ’Úÿß·*O.Ns.O.J»ÿmßIßûrO.nÿs.Nsþ·‘ÿÛÚÿÛ—.n—NN—ûºŽÞ%Û¶ÛÚÿÛ–·¶ßû»mÚû)Û¶¶ÿ¶»Ûúß·‘’Ûú)%Û¶¶¶ÿÛ¶¶’¶Ûþ%H)E
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall16x16.png
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall16x16.png	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/.xvpics/uninstall16x16.png	(revision 29090)
@@ -0,0 +1,5 @@
+P7 332
+#IMGINFO:14x16 RGB (630 bytes)
+#END_OF_COMMENTS
+14 16 255
+ÿÿÿmnmmIImI’‘ÿÿÿ$’nµ’’¶’’‘’$ÿÿ$J‘m’’¶‘nm’mÿÿI‘’n‘’¶ÛÚÿÛ‘ÿÿImmnm¶Û¶ÛÚÿmÿÿmn‘’m’Û¶¶ÿ¶’ÿÿ’HnmI¶Û¶Úÿ’¶ÿÿ¶ImmJµÿ·¶ÿmÿÿÿ¶mn‘n¶ÛÚÛ¶mÿÿÿÛH’m’nÿÚ¶Û‘ÿÿÿÿ$’n‘’ÿ¶ÛÚmÿÿÿÿI’m’‘ÿ·ÚÚnÿÿÿÿm’m’’ÿÚÛ’‘ÿÿÿÿm’’m’ÿÚ·¶¶ÿÛÚ¶’$nH’’’mmÿÿ¶·Ú¶Ûµ“‘’ÚÛÿÿÿ
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.GIF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.GIF
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.JPG
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.JPG
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/papelera.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/papelera.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/Logo_gvsig_gva.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/Logo_gvsig_gva.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall1.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/ico-gvSIG16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/Logo-gvSIG.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/Logo-gvSIG.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/help16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/images/uninstall.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputSpec.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputSpec.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputSpec.xml	(revision 29090)
@@ -0,0 +1,21 @@
+<userInput>
+	<panel order="0">
+		<field 	type="search" 
+				variable="INSTALL_PATH"
+				size="45">
+  			<description align="left" />
+  			<spec 	txt="Path to gvSIG:" 
+		  			id="text.label"
+  					checkfilename="bin/andami.jar"
+        			type="directory" 
+        			result="directory">
+  			<choice value="/usr/local/gvSIG_1.0" os="unix" />
+  			<choice value="/opt/gvSIG_1.0" os="unix" />
+  			<choice value="$USER_HOME/gvSIG_1.0" os="unix" />
+  			<choice value="C:\Archivos de Programa\gvSIG_1.0" os="windows" />
+  			<choice value="C:\Program Files\gvSIG_1.0" os="windows" />
+  			</spec>
+		</field>
+	</panel>
+</userInput>
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/launcher.ini.j15
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/launcher.ini.j15	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/launcher.ini.j15	(revision 29090)
@@ -0,0 +1,36 @@
+
+## Ruta al achivo Jar a lanzar
+jar = %JARNAME%
+
+
+
+## Parametros a incluir al lanzar el Jar
+jarParams =
+
+
+
+## Lanzar el Jar en ansincrono o no:
+##     * si(se lanza el java y finaliza el lanzador):S SI YES Y 1
+##     * no(el lanzado se espera a que termine la ejecucion del java):{distinto de los anterirores}
+launchJarAsync = NO
+
+## Version de JRE requerida
+jre_version = 1.5.0_12
+## Si existen varias JRE de la requerida, cual es la preferida (si esta)
+jre_version_prefered = 1.5.0_12
+
+
+## Descarga remota
+## 	* los valores valido de downloadEnabled son:
+##		- habilitado: S SI YES Y 1
+##		- deshabilitado: {distinto de los anteriores}
+downloadEnabled = 1
+
+
+## Path del instalable del jre (si no existe y estan
+##	habilitadas las descargas, lo dejara aqui)
+jre = j2re-1_5_0_12-linux.tar.gz
+downloadJre = http://www.gvsig.org/runtime/j2re-1_5_0_12-linux.tar.gz
+installJreCmd =./install_jre.sh
+installedJreJavaFile = $HOME/gvSIG/jre/1.5.0_12/bin/java
+installedJreRootDirectory =$HOME/gvSIG/jre
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/install.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/install.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/install.sh	(revision 29090)
@@ -0,0 +1,8 @@
+#!/bin/sh
+# This is used at installation time, in order to perform some extra actions
+# that the installer is not able to do
+
+chmod +x "$INSTALL_PATH"/bin/gvSIG.sh
+chmod +x "$INSTALL_PATH"/Uninstaller/uninstall.sh
+[ -a "$USER_HOME"/gvSIG ] || mkdir -p "$USER_HOME"/gvSIG
+[ -a "$USER_HOME"/gvSIG/andami-config.xml ] || cp "$INSTALL_PATH"/bin/andami-config.xml "$USER_HOME"/gvSIG/andami-config.xml
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_por
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_por	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/userInputLang.xml_por	(revision 29090)
@@ -0,0 +1,3 @@
+<langpack>
+  <str id="text.label" txt="Path to gvSIG:"/>
+</langpack>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/uninstall.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/uninstall.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/resources/uninstall.sh	(revision 29090)
@@ -0,0 +1,2 @@
+#!/bin/sh
+$JAVA_HOME/bin/java -jar "$INSTALL_PATH/Uninstaller/uninstaller.jar"
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/build.xml	(revision 29090)
@@ -0,0 +1,36 @@
+<project name="instalador-gvSIG" default="init" basedir=".">
+	<!--
+	<property name="dir_inst" location="C:\Archivos de programa"/>
+	<property name="base_dir" location="./"/>		
+	<property name="dir_libs" location="C:\Archivos de programa\IzPack\lib"/>
+	<property name="vers" location="0.6"/>
+	<property name="izpack_dir" location="C:\Archivos de programa\IzPack"/>
+	-->
+	
+	<property name="dir_inst" location="/usr/local"/>
+	<property name="base_dir" location="./"/>		
+	<property name="izpack_dir" location="../../../build/distribution/IzPack/"/>
+	<property name="dir_libs" location="${izpack_dir}/lib"/>
+	<property name="INSTALL_FILE" location="install.xml"/>
+	
+	<taskdef name="izpack" classpath="${dir_libs}/compiler.jar" classname="com.izforge.izpack.ant.IzPackTask"/>
+	
+	<target name="init">
+		<izpack input="${INSTALL_FILE}" 
+				output="${JARNAME}" 
+				installerType="standard" 
+				basedir="${base_dir}" 
+				izPackDir="${izpack_dir}/"/>
+	</target>
+	
+	<target name="clean">
+		<delete>
+			<fileset dir=".">
+			    <include name="**.zip"/>
+			</fileset>
+		</delete>
+		<delete dir="bin" />
+		<delete dir="extensions" />
+	</target>
+	
+</project>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LLIG-ME
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LLIG-ME	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LLIG-ME	(revision 29090)
@@ -0,0 +1,41 @@
+gvSIG v1.0 RC1
+
+
+Requisits de l'aplicació:
+
+    - Sistema
+
+        · Mínims: Pentium III / 256 MB RAM.
+
+        · Recomanables: Pentium 4 / 512 MB RAM.
+
+        · Sistemes operatius: plataformes Windows i Linux.
+        Provat en Win98/XP, Linux Suse 8.2/9.0/9.2 i Linux Debian(Lliurex).
+
+
+    - Programari instal·lat (disponible en http://www.gvsig.gva.es o en http://java.sun.com)
+
+        · Màquina Virtual Java 1.4.2 (06 o superior).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+
+Nota: les libreries JAI i JAI Image I/O han d'estar instal·lades sobre la Màquina Virtual Java que gvSIG utilitze en l'execució.
+
+
+Més informació í suport:
+
+    Web oficial del projecte:
+
+        http://www.gvsig.gva.es
+
+    Llistes de distribució:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (suport per a usuaris).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (suport per a desenvolupadors).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (suport per a usuaris o desenvolupadors de parla no-hispana).
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LEEME
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LEEME	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/LEEME	(revision 29090)
@@ -0,0 +1,40 @@
+gvSIG v1.0 RC1
+
+
+Requisitos de la aplicación:
+
+    - Sistema
+
+        · Mínimos: Pentium III / 256 MB RAM.
+
+        · Recomendables: Pentium 4 / 512 MB RAM.
+
+        · Sistemas operativos: plataformas Windows y Linux.
+        Probado en Win98/XP, Linux Suse 8.2/9.0/9.2 y Linux Debian(Lliurex).
+
+
+    - Software instalado (diponible en http://www.gvsig.gva.es o en http://java.sun.com)
+
+        · Máquina Virtual Java 1.4.2 (06 o superior).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+
+Nota: Las librerías JAI y JAI Image I/O deben estar instaladas sobre la Máquina Virtual Java que gvSIG utilice en su ejecución.
+
+
+Más información y soporte:
+
+    Web oficial del proyecto:
+
+        http://www.gvsig.gva.es
+
+    Listas de distribución:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (soporte para usuarios).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (soporte para desarrolladores).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (soporte para usuarios o desarrolladores de habla no hispana).
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/README
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/README	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/README	(revision 29090)
@@ -0,0 +1,40 @@
+gvSIG v1.0 RC1
+
+
+
+Application Requirements:
+
+    - System
+
+        · At least: Pentium III / 256 MB RAM.
+
+        · Recommended: Pentium 4 / 512 MB RAM.
+
+        · OSes: platforms Windows and Linux.
+        Tested in Win98/XP, Linux Suse 8.2/9.0/9.2 and Linux Debian(Lliurex).
+
+
+    - Installed Software (available in http://www.gvsig.gva.es or in http://java.sun.com)
+
+        · Java VM 1.4.2 (06 or above).
+
+        · JAI (Java Advanced Imaging).
+
+        · JAI Image I/O.
+
+Note: The JAI and JAI Image I/O must be installed into the same Java VM that runs gvSIG.
+
+
+Further information and support:
+
+    Official web site:
+
+        http://www.gvsig.gva.es
+
+    Mailing lists:
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_usuarios (users).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores (developers).
+
+        http://runas.cap.gva.es/mailman/listinfo/gvsig_internacional (non-spanish users and developers).
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/install.sh
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/install.sh	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/linux-distribution/installer_files/install.sh	(revision 29090)
@@ -0,0 +1,4 @@
+#!/bin/bash
+[ -x /usr/bin/dirname ] && cd `/usr/bin/dirname $0`
+java -jar JARNAME
+
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/source-distribution.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/source-distribution.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/source-distribution.xml	(revision 29090)
@@ -0,0 +1,16 @@
+<assembly>
+  <id>src</id>
+  <formats>
+    <format>dir</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <fileSets>
+	<!-- Extructure for the extension -->
+    <fileSet>
+      <directory>src</directory>
+	</fileSet>
+	<fileSet>
+      <directory>test</directory>
+	</fileSet>
+  </fileSets>
+</assembly>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/HOWTO-BUILD.txt
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/HOWTO-BUILD.txt	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/HOWTO-BUILD.txt	(revision 29090)
@@ -0,0 +1,7 @@
+ CÓMO GENERAR EL INSTALADOR:
+ ===========================
+- Las librerias nativas deben de tener los install names correctos. Para ello debemos poner la siguiente ruta: 
+@executable_path/../Resources/NativeLibs/ en el flag "Installation Directory" de las propiedades del proyecto de
+XCode.
+- Asegurarse de que las rutas para las extensiones y las librerias nativas sean las correctas en la tarea de ant.
+- Indicar el directorio donde tiene que copiar la cache
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/build.xml
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/build.xml	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/build.xml	(revision 29090)
@@ -0,0 +1,84 @@
+<project name="bundle-gvSIG" default="init" basedir=".">
+	<property name="ANDAMI" value="../../_fwAndami"/>
+	<!--loadproperties srcFile="${EXT3D}/build.number"/-->
+	<property name="LIBRERIAS" value="../../binaries/mac"/>
+	<!--property name="CACHE" value="/Users/materod/Desktop/cache"/-->
+	<property name="CACHE" value="/home/rgaitan/Desktop/cache"/>
+	<property name="NOMBRE_BUNDLE" value="gvSIG_pilot_3D-01_${build.number}_Instaler-mac"/>
+	<target name="init">
+		<!--Generamos el bundle de instalaciÃ³n-->
+		<mkdir dir="${DIR_MAC}/distr"/>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app"/>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents">
+			<fileset dir="resources/bundle" includes="Info.plist PkgInfo" />
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/MacOS"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/MacOS">
+			<fileset dir="resources/bundle" includes="applet"/>
+		</copy>
+		<chmod file="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/MacOS/applet" perm="+rwxrxrx"/>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources">
+			<fileset dir="resources/bundle" includes="applet.icns applet.rsrc" />
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/description.rtfd"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/description.rtfd">
+			<fileset dir="resources/bundle" includes="TXT.rtf" />
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Scripts"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Scripts">
+			<fileset dir="resources/bundle" includes="main.scpt" />
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates">
+			<fileset dir="resources/updates" includes="Info.plist" />
+		</copy>
+		<unzip src="resources/updates/Frameworks.zip" dest="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates"/>
+		<!--Borrammos el directorio temporal que crea al descomprimir-->
+		<delete dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/__MACOSX"/>
+		<!--Copiamos las dll necesarias para la extension 3D-->
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/NativeLibs"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/NativeLibs">
+			<fileset dir="${LIBRERIAS}"/>
+		</copy>
+		<!--Copiando JDialogSkin-->
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.core"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.core"
+			file="${ANDAMI}/gvSIG/extensiones/com.iver.core/com.iver.core.jar"/>
+		<!--Copiamos la cache-->
+		<!--mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Cache"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Cache">
+			<fileset dir="${CACHE}"/>
+		</copy-->
+		<!--Copiamos las extensiones-->
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.ai2.gvsig3d"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.ai2.gvsig3d">
+			<fileset dir="${ANDAMI}/gvSIG/extensiones/com.iver.ai2.gvsig3d"/>
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/es.gva.cit.gvsig.catalogClient"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/es.gva.cit.gvsig.catalogClient">
+			<fileset dir="${ANDAMI}/gvSIG/extensiones/es.gva.cit.gvsig.catalogClient"/>
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig.wfs2"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig.wfs2">
+			<fileset dir="${ANDAMI}/gvSIG/extensiones/com.iver.cit.gvsig.wfs2"/>
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig.wcs"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig.wcs">
+			<fileset dir="${ANDAMI}/gvSIG/extensiones/com.iver.cit.gvsig.wcs"/>
+		</copy>
+		<mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig/lib"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/gvSIG/extensiones/com.iver.cit.gvsig/lib"
+			file="${ANDAMI}/gvSIG/extensiones/com.iver.cit.gvsig/lib/com.iver.ai2.gvsig3d_share.jar"/>
+		<!--Copiamos el splash-->
+		<!--mkdir dir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/theme"/>
+		<copy todir="${DIR_MAC}/distr/${NOMBRE_BUNDLE}.app/Contents/Resources/Updates/Resources/Java/theme">
+			<fileset dir="${ANDAMI}/theme"/>
+		</copy-->
+		<!--Creamos el zip-->
+		<zip destfile="${NOMBRE_BUNDLE}.zip" update="yes">
+			<zipfileset filemode="755" dir="${DIR_MAC}/distr" />
+		</zip>
+	</target>
+</project>
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/Info.plist
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/Info.plist	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/Info.plist	(revision 29090)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleAllowMixedLocalizations</key>
+	<true/>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>applet</string>
+	<key>CFBundleIconFile</key>
+	<string>applet.icns</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>Instalador Extension 3D</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>aplt</string>
+	<key>LSRequiresCarbon</key>
+	<true/>
+	<key>WindowState</key>
+	<dict>
+		<key>name</key>
+		<string>ScriptWindowState</string>
+		<key>positionOfDivider</key>
+		<real>345</real>
+		<key>savedFrame</key>
+		<string>42 152 918 439 0 0 1024 746 </string>
+		<key>selectedTabView</key>
+		<string>result</string>
+	</dict>
+</dict>
+</plist>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/TXT.rtf
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/TXT.rtf	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/TXT.rtf	(revision 29090)
@@ -0,0 +1,4 @@
+{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410
+{\fonttbl}
+{\colortbl;\red255\green255\blue255;}
+}
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/main.scpt
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/main.scpt
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/PkgInfo
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/PkgInfo	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/PkgInfo	(revision 29090)
@@ -0,0 +1 @@
+APPLaplt
\ No newline at end of file
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet.rsrc
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet.rsrc
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet.icns
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/bundle/applet.icns
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/updates/Info.plist
===================================================================
--- tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/updates/Info.plist	(revision 0)
+++ tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/updates/Info.plist	(revision 29090)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleAllowMixedLocalizations</key>
+	<string>false</string>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>Spanish</string>
+	<key>CFBundleExecutable</key>
+	<string>preJava</string>
+	<key>CFBundleGetInfoString</key>
+	<string>gvSIG 1.1</string>
+	<key>CFBundleIconFile</key>
+	<string>logo gvsig.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.iver.cit.gvsig</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>gvSIG</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.1</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1015</string>
+	<key>Java</key>
+	<dict>
+		<key>Arguments</key>
+		<string>gvSIG gvSIG/extensiones</string>
+		<key>ClassPath</key>
+		<array>
+			<string>andami.jar</string>
+			<string>lib/log4j-1.2.8.jar</string>
+			<string>lib/beans.jar</string>
+			<string>lib/gvsig-i18n.jar</string>
+			<string>lib/iver-utiles.jar</string>
+			<string>lib/castor-0.9.5.3-xml.jar</string>
+			<string>lib/crimson.jar</string>
+			<string>lib/xerces_2_5_0.jar</string>
+			<string>lib/javaws.jar</string>
+			<string>lib/xml-apis.jar</string>
+			<string>lib/JWizardComponent.jar</string>
+			<string>lib/looks-2.0.2.jar</string>
+			<string>lib/kxml2.jar</string>
+			<string>lib/jcalendar.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-planets-1.0-SNAPSHOT.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-core-1.0-SNAPSHOT.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-viewer-1.0-SNAPSHOT.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/libjosg-features-1.0-SNAPSHOT.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/jogl.jar</string>
+			<string>gvSIG/extensiones/com.iver.ai2.gvsig3d/lib/gluegen-rt.jar</string>
+		</array>
+		<key>JVMVersion</key>
+		<string>1.4+</string>
+		<key>MainClass</key>
+		<string>com.iver.andami.Launcher</string>
+		<key>Properties</key>
+		<dict>
+			<key>apple.laf.useScreenMenuBar</key>
+			<string>true</string>
+			<key>java.library.path</key>
+			<string>$JAVAROOT/../NativeLibs</string>
+		</dict>
+		<key>VMOptions</key>
+		<string>-Xmx500M</string>
+		<key>WorkingDirectory</key>
+		<string>$JAVAROOT</string>
+	</dict>
+</dict>
+</plist>
Index: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/updates/Frameworks.zip
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution/mac-distribution/resources/updates/Frameworks.zip
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui/distribution
___________________________________________________________________
Added: svn:ignore
   + ext3D-distribution



Property changes on: tags/gvSIG_3D_Animation_1_0_SNAPSHOT_build_9/extensions/ext3Dgui
___________________________________________________________________
Added: svn:ignore
   + .settings
target
.project
.classpath
dist


