Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.main/src/main/java/org/gvsig/tools/main/taskstatus/JTaskStatusAction.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.main/src/main/java/org/gvsig/tools/main/taskstatus/JTaskStatusAction.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.main/src/main/java/org/gvsig/tools/main/taskstatus/JTaskStatusAction.java	(revision 449)
@@ -65,6 +65,8 @@
 		task1.start();
 		MiTask task2 = new MiTask("Task2",300);
 		task2.start();
+		MiTask task3 = new MiTask("Task3",1000);
+		task3.start();
 
 		taskStatusPanel.bind(task1.getTaskStatus());
 		return panel;
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/TaskStatusManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/TaskStatusManager.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/TaskStatusManager.java	(revision 449)
@@ -21,6 +21,8 @@
  */
 package org.gvsig.tools.task;
 
+import java.util.Map;
+
 import org.gvsig.tools.observer.Observable;
 
 
@@ -39,6 +41,8 @@
     
     public void remove(TaskStatus taskStatus);
     
+    public Map getAll();
+    
     public String getNewCode();
     
     /**
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/impl/DefaultTaskStatusManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/impl/DefaultTaskStatusManager.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/impl/DefaultTaskStatusManager.java	(revision 449)
@@ -21,6 +21,7 @@
  */
 package org.gvsig.tools.task.impl;
 
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -71,6 +72,10 @@
         return Long.toBinaryString(codeCounter++);
     }
 
+    public Map getAll() {
+    	return Collections.unmodifiableMap(this.tasksStatus);
+    }
+    
 	public void addObserver(Observer o) {
 		this.observers.addObserver(o);
 	}
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/AbstractMonitorableTask.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/AbstractMonitorableTask.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/AbstractMonitorableTask.java	(revision 449)
@@ -8,7 +8,9 @@
 	
 	protected AbstractMonitorableTask(String taskName) {
 		super();
-		this.taskStatus = ToolsLocator.getTaskStatusManager().creteDefaultSimpleTaskStatus(taskName);
+		TaskStatusManager manager = ToolsLocator.getTaskStatusManager();
+		this.taskStatus = manager.creteDefaultSimpleTaskStatus(taskName);
+		manager.add(this.taskStatus);
 	}
 	
 	public TaskStatus getTaskStatus() {
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/resources/org/gvsig/tools/swing/impl/task/disabledCancelRequestButton.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/resources/org/gvsig/tools/swing/impl/task/disabledCancelRequestButton.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultTaskStatusSwingManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultTaskStatusSwingManager.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultTaskStatusSwingManager.java	(revision 449)
@@ -1,7 +1,9 @@
 package org.gvsig.tools.swing.impl.task;
 
+import org.gvsig.tools.ToolsLocator;
 import org.gvsig.tools.swing.api.task.JTaskStatus;
 import org.gvsig.tools.swing.api.task.JTasksStatus;
+import org.gvsig.tools.swing.api.task.JTasksStatusList;
 import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
 import org.gvsig.tools.task.TaskStatusManager;
 
@@ -15,8 +17,19 @@
 		return new DefaultJTasksStatus(manager);
 	}
 
+	public JTasksStatusList createJTasksStatusList() {
+		return new DefaultJTasksStatusList(this.getManager());
+	}
+
+	public JTasksStatusList createJTasksStatusList(TaskStatusManager manager) {
+		return new DefaultJTasksStatusList(manager);
+	}
+
 	public JTaskStatus createJTaskStatus() {
 		return new DefaultJTaskStatus();
 	}
 
+	private TaskStatusManager getManager() {
+		return ToolsLocator.getTaskStatusManager();
+	}
 }
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatusList.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatusList.java	(revision 0)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatusList.java	(revision 449)
@@ -0,0 +1,95 @@
+package org.gvsig.tools.swing.impl.task;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.LayoutManager;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.swing.BoxLayout;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.task.JTaskStatus;
+import org.gvsig.tools.swing.api.task.JTasksStatusList;
+import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
+import org.gvsig.tools.task.TaskStatus;
+import org.gvsig.tools.task.TaskStatusManager;
+
+public class DefaultJTasksStatusList extends JTasksStatusList implements Observer {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7740032506050392725L;
+
+	TaskStatusManager manager;
+	Map<String,JTaskStatus> taskControls;
+	JPanel listPanel;
+	
+	public DefaultJTasksStatusList(TaskStatusManager manager) {
+		this.manager = manager;
+		this.taskControls = new HashMap<String, JTaskStatus>();
+		this.makeUI();
+		this.manager.addObserver(this);
+	}
+
+	public TaskStatusManager getManager() {
+		return this.manager;
+	}
+	
+	private void makeUI() {
+	    this.setLayout(new BorderLayout());
+		
+		listPanel = new JPanel();
+		listPanel.setLayout(new BoxLayout(listPanel, BoxLayout.Y_AXIS));
+		List<JTaskStatus> controlsToAdd = this.getControlsToAdd();
+		for (JTaskStatus taskStatus : controlsToAdd) {
+			listPanel.add(taskStatus);
+		}
+		
+		JScrollPane scroller = new JScrollPane(listPanel);
+        scroller.setPreferredSize(new Dimension(300,150));
+        this.add(scroller, BorderLayout.CENTER);
+	}
+	
+	private List<JTaskStatus> getControlsToAdd() {
+		List<JTaskStatus> controlsToAdd = new ArrayList<JTaskStatus>();
+		TaskStatusSwingManager manager = ToolsSwingLocator.getTaskStatusSwingManager();
+		
+		@SuppressWarnings("unchecked")
+		Map<String,TaskStatus> tasksStatus = this.manager.getAll();
+		
+		Iterator<Entry<String, TaskStatus>> taskStatusIterator = tasksStatus.entrySet().iterator();
+		while( taskStatusIterator.hasNext() ) {
+			Entry<String, TaskStatus> entry = taskStatusIterator.next(); 
+			if( this.taskControls.get(entry.getKey())==null ) {
+				JTaskStatus control = manager.createJTaskStatus();
+				control.bind(entry.getValue());
+				controlsToAdd.add(control);
+				this.taskControls.put(entry.getKey(), control);
+			}
+		}
+		return controlsToAdd;
+	}
+
+	public void update(Observable observable, Object notification) {
+		if( !(observable instanceof TaskStatusManager) ) {
+			return;
+		}
+		if( notification==null || !(notification instanceof TaskStatus) ) {
+			return;
+		}
+		List<JTaskStatus> controlsToAdd = this.getControlsToAdd();
+		for (JTaskStatus taskStatus : controlsToAdd) {
+			listPanel.add(taskStatus);
+		}
+	}
+}

Property changes on: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatusList.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTaskStatus.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTaskStatus.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTaskStatus.java	(revision 449)
@@ -4,6 +4,8 @@
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.net.URL;
 
 import javax.swing.ImageIcon;
@@ -76,7 +78,7 @@
 		
 		this.progressBar = new JProgressBar(1,100);
 		this.progressBar.setPreferredSize(new Dimension( 200, 10));
-		this.progressBar.setIndeterminate(true);
+		this.progressBar.setIndeterminate(false);
 		this.progressBar.setBorderPainted(true);
 		
 		this.cancelRequestButton = new JButton();
@@ -86,7 +88,14 @@
     	if( !this.showCancelButton ) {
     		this.cancelRequestButton.setVisible(this.showCancelButton);
     	}
-		
+    	this.cancelRequestButton.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				cancelRequestButton.setEnabled(false);
+				taskStatus.cancelRequest();
+			}
+		});
+    	this.cancelRequestButton.setDisabledIcon( getIcon("disabledCancelRequestButton.png") );
+    	
 		this.messagelabel = new JLabel();
 		this.messagelabel.setPreferredSize( new Dimension( 200, 16));
 
@@ -130,14 +139,14 @@
 			});
 			return;
 		}
-		if( observable == null ) {
-			this.tittlelabel.setText("");
+		TaskStatus taskStatus = (TaskStatus) observable;
+		if( taskStatus == null || !taskStatus.isRunning() ) {
+			//this.tittlelabel.setText("");
 			this.messagelabel.setText("");
 			this.progressBar.setValue(100);
 			this.cancelRequestButton.setEnabled(false);
 			return;
 		}
-		TaskStatus taskStatus = (TaskStatus) observable;
 		this.tittlelabel.setText(taskStatus.getTitle());
 		this.messagelabel.setText(taskStatus.getLabel());
 		this.progressBar.setIndeterminate( taskStatus.isIndeterminate() );
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatus.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatus.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/task/DefaultJTasksStatus.java	(revision 449)
@@ -3,6 +3,8 @@
 import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.LayoutManager;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.net.URL;
 
 import javax.swing.ImageIcon;
@@ -15,7 +17,10 @@
 import org.gvsig.tools.ToolsLocator;
 import org.gvsig.tools.observer.Observable;
 import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
 import org.gvsig.tools.swing.api.task.JTasksStatus;
+import org.gvsig.tools.swing.api.task.JTasksStatusList;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
 import org.gvsig.tools.task.TaskStatus;
 import org.gvsig.tools.task.TaskStatusManager;
 
@@ -62,11 +67,20 @@
 		this.progressBar.setPreferredSize(new Dimension( 40, 10));
 		this.progressBar.setIndeterminate(true);
 		this.progressBar.setBorderPainted(true);
+		this.progressBar.setVisible(false);
 		
 		this.showAllTaskStatusButton = new JButton();
 		this.showAllTaskStatusButton.setPreferredSize( new Dimension(16, 16));
 		this.showAllTaskStatusButton.setBorderPainted(false);
 		this.showAllTaskStatusButton.setIcon( this.getIcon("showAllTaskStatusButton.png"));
+		this.showAllTaskStatusButton.setVisible(false);
+		this.showAllTaskStatusButton.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				JTasksStatusList dialog = ToolsSwingLocator.getTaskStatusSwingManager().createJTasksStatusList(manager);
+				WindowManager wm = ToolsSwingLocator.getWindowManager();
+				wm.showWindow(dialog, "Tasks",WindowManager.MODE.TOOL);
+			}
+		});
 		
 		LayoutManager layout = new FlowLayout();
 		this.setLayout(layout);
@@ -112,8 +126,12 @@
 		this.label.setText( label );
 		this.progressBar.setIndeterminate( taskStatus.isIndeterminate() );
 		this.progressBar.setValue( taskStatus.getCompleted() );
-		this.progressBar.setVisible(true);
-		this.showAllTaskStatusButton.setVisible(true);
+		if( !this.progressBar.isVisible() ) {
+			this.progressBar.setVisible(true);
+		}
+		if( !this.showAllTaskStatusButton.isVisible() ) {
+			this.showAllTaskStatusButton.setVisible(true);
+		}
 		
 	}
 
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/windowmanager/DefaultWindowManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/windowmanager/DefaultWindowManager.java	(revision 0)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/windowmanager/DefaultWindowManager.java	(revision 449)
@@ -0,0 +1,29 @@
+package org.gvsig.tools.swing.impl.windowmanager;
+
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
+
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
+
+public class DefaultWindowManager implements WindowManager {
+
+	public void showWindow(JComponent component, String tittle, MODE mode) {
+		switch (mode) {
+		case TOOL:
+		case WINDOW:
+		case DIALOG:
+			JFrame frame = new JFrame(tittle);
+			//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+			frame.setContentPane(component);
+
+			frame.pack();
+			frame.setVisible(true);
+			break;
+					
+		}
+
+	}
+
+}

Property changes on: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/windowmanager/DefaultWindowManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/ToolsSwingDefaultImplLibrary.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/ToolsSwingDefaultImplLibrary.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/ToolsSwingDefaultImplLibrary.java	(revision 449)
@@ -35,6 +35,7 @@
 import org.gvsig.tools.swing.impl.dynobject.dynfield.JNDynFieldComponentFactory;
 import org.gvsig.tools.swing.impl.task.DefaultTaskStatusSwingManager;
 import org.gvsig.tools.swing.impl.usability.DefaultUsabilitySwingManager;
+import org.gvsig.tools.swing.impl.windowmanager.DefaultWindowManager;
 import org.gvsig.tools.swing.spi.ToolsSwingServiceLocator;
 
 /**
@@ -59,6 +60,8 @@
 				.registerUsabilitySwingManager(DefaultUsabilitySwingManager.class);
 		ToolsSwingLocator
 				.registerTaskStatusSwingManager(DefaultTaskStatusSwingManager.class);
+		ToolsSwingLocator
+				.registerWindowManager(DefaultWindowManager.class);
 		ToolsSwingServiceLocator
 				.registerDynObjectServiceManager(DefaultDynObjectSwingServiceManager.class);
 	}
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/TaskStatusSwingManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/TaskStatusSwingManager.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/TaskStatusSwingManager.java	(revision 449)
@@ -10,4 +10,5 @@
 	
 	public JTaskStatus createJTaskStatus(); 
 
+	public JTasksStatusList createJTasksStatusList(TaskStatusManager manager);
 }
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/JTasksStatusList.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/JTasksStatusList.java	(revision 0)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/JTasksStatusList.java	(revision 449)
@@ -0,0 +1,17 @@
+package org.gvsig.tools.swing.api.task;
+
+import javax.swing.JPanel;
+
+import org.gvsig.tools.task.TaskStatusManager;
+
+public abstract class JTasksStatusList extends JPanel {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -2712653249045541115L;
+
+	public abstract TaskStatusManager getManager();
+
+}
+

Property changes on: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/task/JTasksStatusList.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/windowmanager/WindowManager.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/windowmanager/WindowManager.java	(revision 0)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/windowmanager/WindowManager.java	(revision 449)
@@ -0,0 +1,15 @@
+package org.gvsig.tools.swing.api.windowmanager;
+
+import javax.swing.JComponent;
+
+public interface WindowManager {
+	
+	public enum MODE {
+		WINDOW,
+		DIALOG,
+		TOOL
+	};
+	
+	public void showWindow(JComponent componet, String tittle, MODE mode);
+
+}

Property changes on: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/windowmanager/WindowManager.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingLocator.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingLocator.java	(revision 448)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingLocator.java	(revision 449)
@@ -26,6 +26,7 @@
 import org.gvsig.tools.swing.api.dynobject.DynObjectSwingManager;
 import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
 import org.gvsig.tools.swing.api.usability.UsabilitySwingManager;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
 
 /**
  * {@link Locator} for the tools swing Library. It returns a reference to the
@@ -54,6 +55,10 @@
 
 	private static final String TASKSTATUS_SWING_MANAGER_DESCRIPTION = "Tools Task Swing Manager";
 
+	private static final String WINDOW_MANAGER_NAME = "Tools.task.swing.windowmanager";
+
+	private static final String WINDOW_MANAGER_DESCRIPTION = "Tools Window Manager";
+
 	/**
      * Unique instance.
      */
@@ -147,5 +152,28 @@
         		TASKSTATUS_SWING_MANAGER_DESCRIPTION, clazz);
     }
 
+    /**
+     * Gets the instance of the {@link WindowManager} registered.
+     * 
+     * @return {@link WindowManager}
+     */
+    public static WindowManager getWindowManager() {
+        return (WindowManager) getInstance().get(
+        		WINDOW_MANAGER_NAME);
+    }
 
+    /**
+     * Registers the Class implementing the {@link WindowManager}
+     * interface.
+     * 
+     * @param clazz
+     *            implementing the {@link WindowManager} interface
+     */
+    public static void registerWindowManager(
+        Class<? extends WindowManager> clazz) {
+        getInstance().register(WINDOW_MANAGER_NAME,
+        		WINDOW_MANAGER_DESCRIPTION, clazz);
+    }
+
+
 }
