Index: branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/info/gui/FInfoDialog.java
===================================================================
--- branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/info/gui/FInfoDialog.java	(revision 38561)
+++ branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/info/gui/FInfoDialog.java	(revision 38562)
@@ -23,14 +23,25 @@
     IWindowListener {
 
     private static final long serialVersionUID = -6707094091114785970L;
-    private final LayersDynObjectSetComponent infoViewer;
+    private LayersDynObjectSetComponent infoViewer;
 
-    public FInfoDialog(LayersDynObjectSetComponent infoViewer) {
+    public FInfoDialog(LayersDynObjectSetComponent info) {
         super(new BorderLayout());
-        this.infoViewer = infoViewer;
+        this.infoViewer = info;
         add(infoViewer.asJComponent(), BorderLayout.CENTER);
-		setSize(600, 375);
+		setSize(500, 375);
 	}
+    
+    public void setInfo(LayersDynObjectSetComponent info) {
+        
+        if (infoViewer != null) {
+            infoViewer.dispose();
+        }
+        
+        this.removeAll();
+        this.infoViewer = info;
+        add(infoViewer.asJComponent(), BorderLayout.CENTER);
+    }
 
 	public WindowInfo getWindowInfo() {
 
Index: branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/InfoListener.java
===================================================================
--- branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/InfoListener.java	(revision 38561)
+++ branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/view/toolListeners/InfoListener.java	(revision 38562)
@@ -47,6 +47,9 @@
 import javax.swing.JDialog;
 import javax.swing.JPanel;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.gvsig.andami.PluginServices;
 import org.gvsig.andami.messages.NotificationManager;
 import org.gvsig.andami.ui.mdiManager.IWindow;
@@ -82,7 +85,8 @@
     /**
      * Object used to log messages for this listener.
      */
-//    private static final Logger logger = LoggerFactory.getLogger(InfoListener.class);
+//    
+    private static final Logger logger = LoggerFactory.getLogger(InfoListener.class);
 
     private static final String EP_INFOTOOL_NAME = "org.gvsig.app.infotool"; 
     private static final String EP_INFOTOOL_RENDERER = "renderer"; 
@@ -146,26 +150,32 @@
                     numLayersInfoable++;
                 }
             }
+            
+            if (numLayersInfoable == 0) {
+                return;
+            }
 
             ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
             InfoByPointRenderer renderer = (InfoByPointRenderer)extensionPoints.get(EP_INFOTOOL_NAME).create(EP_INFOTOOL_RENDERER);
-            IWindow window = renderer.getPanel(layer2info); 
             
-            if (numLayersInfoable > 0) {
-                if (PluginServices.getMainFrame() == null) {  // ¿¿¿¿¿¿¿¿¿????????????
-                    JPanel panel = (JPanel) window;
-                    JDialog dialog = new JDialog();
-                    panel.setPreferredSize(panel.getSize());
-                    dialog.getContentPane().add(panel);
-                    dialog.setModal(false);
-                    dialog.pack();
-                    dialog.setVisible(true);
+            IWindow window = renderer.getPanel();
+            boolean first_time = (window == null);
+            renderer.resetPanel(layer2info);
+            
+            window = renderer.getPanel();
+            if (window == null) {
+                logger.info("Error. Unable to create info panel.");
+                return;
+            }
+            
+            
+            if (first_time) {
+                PluginServices.getMDIManager().addCentredWindow(window);
+            } else {
+                // perhaps bring to front
+            }
+            
 
-                } else {
-                    application.getUIManager().addWindow(window);
-                }
-
-            }
         } catch (Exception e) {
             NotificationManager.addError("Info by Point", e);
             e.printStackTrace();
@@ -185,18 +195,33 @@
     }
     
     public interface InfoByPointRenderer {
-       public IWindow getPanel( Map<String, DynObjectSet> layersInfo);
+        
+       public FInfoDialog getPanel();
+       public void resetPanel(Map<String, DynObjectSet> layersInfo);
+       
     }
     
     public static class DefaultInfoByPointRenderer implements InfoByPointRenderer, ExtensionSingleton {
-        public IWindow getPanel(Map<String, DynObjectSet> layersInfo) {
+        
+        private FInfoDialog dlgInfo = null;
+        
+        public FInfoDialog getPanel() {
+            return dlgInfo;
+        }
+
+        
+        public void resetPanel(Map<String, DynObjectSet> layersInfo) {
             // TODO: set the writable parameter to true to activate
             // edition of the info by point information.
             LayersDynObjectSetComponent infoComponent =
                 MapControlLocator.getMapControlManager()
                     .createLayersDynObjectSetComponent(layersInfo, false);
-            FInfoDialog dlgInfo = new FInfoDialog(infoComponent);
-            return dlgInfo;
+            
+            if (dlgInfo == null) {
+                dlgInfo = new FInfoDialog(infoComponent);
+            } else {
+                dlgInfo.setInfo(infoComponent);
+            }
         }
        
     }
