Revision 449

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.main/src/main/java/org/gvsig/tools/main/taskstatus/JTaskStatusAction.java
65 65
		task1.start();
66 66
		MiTask task2 = new MiTask("Task2",300);
67 67
		task2.start();
68
		MiTask task3 = new MiTask("Task3",1000);
69
		task3.start();
68 70

  
69 71
		taskStatusPanel.bind(task1.getTaskStatus());
70 72
		return panel;
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/TaskStatusManager.java
21 21
 */
22 22
package org.gvsig.tools.task;
23 23

  
24
import java.util.Map;
25

  
24 26
import org.gvsig.tools.observer.Observable;
25 27

  
26 28

  
......
39 41
    
40 42
    public void remove(TaskStatus taskStatus);
41 43
    
44
    public Map getAll();
45
    
42 46
    public String getNewCode();
43 47
    
44 48
    /**
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/impl/DefaultTaskStatusManager.java
21 21
 */
22 22
package org.gvsig.tools.task.impl;
23 23

  
24
import java.util.Collections;
24 25
import java.util.LinkedHashMap;
25 26
import java.util.Map;
26 27

  
......
71 72
        return Long.toBinaryString(codeCounter++);
72 73
    }
73 74

  
75
    public Map getAll() {
76
    	return Collections.unmodifiableMap(this.tasksStatus);
77
    }
78
    
74 79
	public void addObserver(Observer o) {
75 80
		this.observers.addObserver(o);
76 81
	}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/AbstractMonitorableTask.java
8 8
	
9 9
	protected AbstractMonitorableTask(String taskName) {
10 10
		super();
11
		this.taskStatus = ToolsLocator.getTaskStatusManager().creteDefaultSimpleTaskStatus(taskName);
11
		TaskStatusManager manager = ToolsLocator.getTaskStatusManager();
12
		this.taskStatus = manager.creteDefaultSimpleTaskStatus(taskName);
13
		manager.add(this.taskStatus);
12 14
	}
13 15
	
14 16
	public TaskStatus getTaskStatus() {
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
1
package org.gvsig.tools.swing.impl.task;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.awt.LayoutManager;
6
import java.util.ArrayList;
7
import java.util.HashMap;
8
import java.util.Iterator;
9
import java.util.List;
10
import java.util.Map;
11
import java.util.Map.Entry;
12

  
13
import javax.swing.BoxLayout;
14
import javax.swing.JPanel;
15
import javax.swing.JScrollPane;
16

  
17
import org.gvsig.tools.observer.Observable;
18
import org.gvsig.tools.observer.Observer;
19
import org.gvsig.tools.swing.api.ToolsSwingLocator;
20
import org.gvsig.tools.swing.api.task.JTaskStatus;
21
import org.gvsig.tools.swing.api.task.JTasksStatusList;
22
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
23
import org.gvsig.tools.task.TaskStatus;
24
import org.gvsig.tools.task.TaskStatusManager;
25

  
26
public class DefaultJTasksStatusList extends JTasksStatusList implements Observer {
27

  
28
	/**
29
	 * 
30
	 */
31
	private static final long serialVersionUID = 7740032506050392725L;
32

  
33
	TaskStatusManager manager;
34
	Map<String,JTaskStatus> taskControls;
35
	JPanel listPanel;
36
	
37
	public DefaultJTasksStatusList(TaskStatusManager manager) {
38
		this.manager = manager;
39
		this.taskControls = new HashMap<String, JTaskStatus>();
40
		this.makeUI();
41
		this.manager.addObserver(this);
42
	}
43

  
44
	public TaskStatusManager getManager() {
45
		return this.manager;
46
	}
47
	
48
	private void makeUI() {
49
	    this.setLayout(new BorderLayout());
50
		
51
		listPanel = new JPanel();
52
		listPanel.setLayout(new BoxLayout(listPanel, BoxLayout.Y_AXIS));
53
		List<JTaskStatus> controlsToAdd = this.getControlsToAdd();
54
		for (JTaskStatus taskStatus : controlsToAdd) {
55
			listPanel.add(taskStatus);
56
		}
57
		
58
		JScrollPane scroller = new JScrollPane(listPanel);
59
        scroller.setPreferredSize(new Dimension(300,150));
60
        this.add(scroller, BorderLayout.CENTER);
61
	}
62
	
63
	private List<JTaskStatus> getControlsToAdd() {
64
		List<JTaskStatus> controlsToAdd = new ArrayList<JTaskStatus>();
65
		TaskStatusSwingManager manager = ToolsSwingLocator.getTaskStatusSwingManager();
66
		
67
		@SuppressWarnings("unchecked")
68
		Map<String,TaskStatus> tasksStatus = this.manager.getAll();
69
		
70
		Iterator<Entry<String, TaskStatus>> taskStatusIterator = tasksStatus.entrySet().iterator();
71
		while( taskStatusIterator.hasNext() ) {
72
			Entry<String, TaskStatus> entry = taskStatusIterator.next(); 
73
			if( this.taskControls.get(entry.getKey())==null ) {
74
				JTaskStatus control = manager.createJTaskStatus();
75
				control.bind(entry.getValue());
76
				controlsToAdd.add(control);
77
				this.taskControls.put(entry.getKey(), control);
78
			}
79
		}
80
		return controlsToAdd;
81
	}
82

  
83
	public void update(Observable observable, Object notification) {
84
		if( !(observable instanceof TaskStatusManager) ) {
85
			return;
86
		}
87
		if( notification==null || !(notification instanceof TaskStatus) ) {
88
			return;
89
		}
90
		List<JTaskStatus> controlsToAdd = this.getControlsToAdd();
91
		for (JTaskStatus taskStatus : controlsToAdd) {
92
			listPanel.add(taskStatus);
93
		}
94
	}
95
}
0 96

  
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
4 4
import java.awt.Dimension;
5 5
import java.awt.GridBagConstraints;
6 6
import java.awt.GridBagLayout;
7
import java.awt.event.ActionEvent;
8
import java.awt.event.ActionListener;
7 9
import java.net.URL;
8 10

  
9 11
import javax.swing.ImageIcon;
......
76 78
		
77 79
		this.progressBar = new JProgressBar(1,100);
78 80
		this.progressBar.setPreferredSize(new Dimension( 200, 10));
79
		this.progressBar.setIndeterminate(true);
81
		this.progressBar.setIndeterminate(false);
80 82
		this.progressBar.setBorderPainted(true);
81 83
		
82 84
		this.cancelRequestButton = new JButton();
......
86 88
    	if( !this.showCancelButton ) {
87 89
    		this.cancelRequestButton.setVisible(this.showCancelButton);
88 90
    	}
89
		
91
    	this.cancelRequestButton.addActionListener(new ActionListener() {
92
			public void actionPerformed(ActionEvent arg0) {
93
				cancelRequestButton.setEnabled(false);
94
				taskStatus.cancelRequest();
95
			}
96
		});
97
    	this.cancelRequestButton.setDisabledIcon( getIcon("disabledCancelRequestButton.png") );
98
    	
90 99
		this.messagelabel = new JLabel();
91 100
		this.messagelabel.setPreferredSize( new Dimension( 200, 16));
92 101

  
......
130 139
			});
131 140
			return;
132 141
		}
133
		if( observable == null ) {
134
			this.tittlelabel.setText("");
142
		TaskStatus taskStatus = (TaskStatus) observable;
143
		if( taskStatus == null || !taskStatus.isRunning() ) {
144
			//this.tittlelabel.setText("");
135 145
			this.messagelabel.setText("");
136 146
			this.progressBar.setValue(100);
137 147
			this.cancelRequestButton.setEnabled(false);
138 148
			return;
139 149
		}
140
		TaskStatus taskStatus = (TaskStatus) observable;
141 150
		this.tittlelabel.setText(taskStatus.getTitle());
142 151
		this.messagelabel.setText(taskStatus.getLabel());
143 152
		this.progressBar.setIndeterminate( taskStatus.isIndeterminate() );
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
3 3
import java.awt.Dimension;
4 4
import java.awt.FlowLayout;
5 5
import java.awt.LayoutManager;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
6 8
import java.net.URL;
7 9

  
8 10
import javax.swing.ImageIcon;
......
15 17
import org.gvsig.tools.ToolsLocator;
16 18
import org.gvsig.tools.observer.Observable;
17 19
import org.gvsig.tools.observer.Observer;
20
import org.gvsig.tools.swing.api.ToolsSwingLocator;
18 21
import org.gvsig.tools.swing.api.task.JTasksStatus;
22
import org.gvsig.tools.swing.api.task.JTasksStatusList;
23
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
19 24
import org.gvsig.tools.task.TaskStatus;
20 25
import org.gvsig.tools.task.TaskStatusManager;
21 26

  
......
62 67
		this.progressBar.setPreferredSize(new Dimension( 40, 10));
63 68
		this.progressBar.setIndeterminate(true);
64 69
		this.progressBar.setBorderPainted(true);
70
		this.progressBar.setVisible(false);
65 71
		
66 72
		this.showAllTaskStatusButton = new JButton();
67 73
		this.showAllTaskStatusButton.setPreferredSize( new Dimension(16, 16));
68 74
		this.showAllTaskStatusButton.setBorderPainted(false);
69 75
		this.showAllTaskStatusButton.setIcon( this.getIcon("showAllTaskStatusButton.png"));
76
		this.showAllTaskStatusButton.setVisible(false);
77
		this.showAllTaskStatusButton.addActionListener(new ActionListener() {
78
			public void actionPerformed(ActionEvent arg0) {
79
				JTasksStatusList dialog = ToolsSwingLocator.getTaskStatusSwingManager().createJTasksStatusList(manager);
80
				WindowManager wm = ToolsSwingLocator.getWindowManager();
81
				wm.showWindow(dialog, "Tasks",WindowManager.MODE.TOOL);
82
			}
83
		});
70 84
		
71 85
		LayoutManager layout = new FlowLayout();
72 86
		this.setLayout(layout);
......
112 126
		this.label.setText( label );
113 127
		this.progressBar.setIndeterminate( taskStatus.isIndeterminate() );
114 128
		this.progressBar.setValue( taskStatus.getCompleted() );
115
		this.progressBar.setVisible(true);
116
		this.showAllTaskStatusButton.setVisible(true);
129
		if( !this.progressBar.isVisible() ) {
130
			this.progressBar.setVisible(true);
131
		}
132
		if( !this.showAllTaskStatusButton.isVisible() ) {
133
			this.showAllTaskStatusButton.setVisible(true);
134
		}
117 135
		
118 136
	}
119 137

  
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
1 1
package org.gvsig.tools.swing.impl.task;
2 2

  
3
import org.gvsig.tools.ToolsLocator;
3 4
import org.gvsig.tools.swing.api.task.JTaskStatus;
4 5
import org.gvsig.tools.swing.api.task.JTasksStatus;
6
import org.gvsig.tools.swing.api.task.JTasksStatusList;
5 7
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
6 8
import org.gvsig.tools.task.TaskStatusManager;
7 9

  
......
15 17
		return new DefaultJTasksStatus(manager);
16 18
	}
17 19

  
20
	public JTasksStatusList createJTasksStatusList() {
21
		return new DefaultJTasksStatusList(this.getManager());
22
	}
23

  
24
	public JTasksStatusList createJTasksStatusList(TaskStatusManager manager) {
25
		return new DefaultJTasksStatusList(manager);
26
	}
27

  
18 28
	public JTaskStatus createJTaskStatus() {
19 29
		return new DefaultJTaskStatus();
20 30
	}
21 31

  
32
	private TaskStatusManager getManager() {
33
		return ToolsLocator.getTaskStatusManager();
34
	}
22 35
}
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
1
package org.gvsig.tools.swing.impl.windowmanager;
2

  
3
import javax.swing.JComponent;
4
import javax.swing.JDialog;
5
import javax.swing.JFrame;
6

  
7
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
8

  
9
public class DefaultWindowManager implements WindowManager {
10

  
11
	public void showWindow(JComponent component, String tittle, MODE mode) {
12
		switch (mode) {
13
		case TOOL:
14
		case WINDOW:
15
		case DIALOG:
16
			JFrame frame = new JFrame(tittle);
17
			//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
18

  
19
			frame.setContentPane(component);
20

  
21
			frame.pack();
22
			frame.setVisible(true);
23
			break;
24
					
25
		}
26

  
27
	}
28

  
29
}
0 30

  
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
35 35
import org.gvsig.tools.swing.impl.dynobject.dynfield.JNDynFieldComponentFactory;
36 36
import org.gvsig.tools.swing.impl.task.DefaultTaskStatusSwingManager;
37 37
import org.gvsig.tools.swing.impl.usability.DefaultUsabilitySwingManager;
38
import org.gvsig.tools.swing.impl.windowmanager.DefaultWindowManager;
38 39
import org.gvsig.tools.swing.spi.ToolsSwingServiceLocator;
39 40

  
40 41
/**
......
59 60
				.registerUsabilitySwingManager(DefaultUsabilitySwingManager.class);
60 61
		ToolsSwingLocator
61 62
				.registerTaskStatusSwingManager(DefaultTaskStatusSwingManager.class);
63
		ToolsSwingLocator
64
				.registerWindowManager(DefaultWindowManager.class);
62 65
		ToolsSwingServiceLocator
63 66
				.registerDynObjectServiceManager(DefaultDynObjectSwingServiceManager.class);
64 67
	}
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
26 26
import org.gvsig.tools.swing.api.dynobject.DynObjectSwingManager;
27 27
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
28 28
import org.gvsig.tools.swing.api.usability.UsabilitySwingManager;
29
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
29 30

  
30 31
/**
31 32
 * {@link Locator} for the tools swing Library. It returns a reference to the
......
54 55

  
55 56
	private static final String TASKSTATUS_SWING_MANAGER_DESCRIPTION = "Tools Task Swing Manager";
56 57

  
58
	private static final String WINDOW_MANAGER_NAME = "Tools.task.swing.windowmanager";
59

  
60
	private static final String WINDOW_MANAGER_DESCRIPTION = "Tools Window Manager";
61

  
57 62
	/**
58 63
     * Unique instance.
59 64
     */
......
147 152
        		TASKSTATUS_SWING_MANAGER_DESCRIPTION, clazz);
148 153
    }
149 154

  
155
    /**
156
     * Gets the instance of the {@link WindowManager} registered.
157
     * 
158
     * @return {@link WindowManager}
159
     */
160
    public static WindowManager getWindowManager() {
161
        return (WindowManager) getInstance().get(
162
        		WINDOW_MANAGER_NAME);
163
    }
150 164

  
165
    /**
166
     * Registers the Class implementing the {@link WindowManager}
167
     * interface.
168
     * 
169
     * @param clazz
170
     *            implementing the {@link WindowManager} interface
171
     */
172
    public static void registerWindowManager(
173
        Class<? extends WindowManager> clazz) {
174
        getInstance().register(WINDOW_MANAGER_NAME,
175
        		WINDOW_MANAGER_DESCRIPTION, clazz);
176
    }
177

  
178

  
151 179
}
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
10 10
	
11 11
	public JTaskStatus createJTaskStatus(); 
12 12

  
13
	public JTasksStatusList createJTasksStatusList(TaskStatusManager manager);
13 14
}
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
1
package org.gvsig.tools.swing.api.task;
2

  
3
import javax.swing.JPanel;
4

  
5
import org.gvsig.tools.task.TaskStatusManager;
6

  
7
public abstract class JTasksStatusList extends JPanel {
8

  
9
	/**
10
	 * 
11
	 */
12
	private static final long serialVersionUID = -2712653249045541115L;
13

  
14
	public abstract TaskStatusManager getManager();
15

  
16
}
17

  
0 18

  
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
1
package org.gvsig.tools.swing.api.windowmanager;
2

  
3
import javax.swing.JComponent;
4

  
5
public interface WindowManager {
6
	
7
	public enum MODE {
8
		WINDOW,
9
		DIALOG,
10
		TOOL
11
	};
12
	
13
	public void showWindow(JComponent componet, String tittle, MODE mode);
14

  
15
}
0 16

  

Also available in: Unified diff