Statistics
| Revision:

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
}