gvsig-tools / 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 @ 449
History | View | Annotate | Download (2.84 KB)
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 |
} |