Revision 1719 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

View differences:

DefaultJTasksStatusList.java
24 24
package org.gvsig.tools.swing.impl.task;
25 25

  
26 26
import java.awt.BorderLayout;
27
import java.awt.Component;
27 28
import java.awt.Dimension;
28 29
import java.util.ArrayList;
29 30
import java.util.HashMap;
30 31
import java.util.Iterator;
32
import java.util.LinkedHashMap;
31 33
import java.util.List;
32 34
import java.util.Map;
33 35
import java.util.Map.Entry;
......
56 58

  
57 59
    private static final long serialVersionUID = 7740032506050392725L;
58 60

  
59
    TaskStatusManager manager;
60
    Map<String, JTaskStatus> taskControls;
61
    JPanel listPanel;
61
    private TaskStatusManager manager;
62
    private Map<String, JTaskStatus> taskControls;
63
    private JPanel listPanel;
62 64

  
63 65
    public DefaultJTasksStatusList(TaskStatusManager manager) {
64 66
        this.manager = manager;
65
        this.taskControls = new HashMap<String, JTaskStatus>();
67
        this.taskControls = new LinkedHashMap<>();
66 68
        this.makeUI();
67 69
        this.manager.addObserver(this);
68 70
    }
69 71

  
72
    @Override
70 73
    public TaskStatusManager getManager() {
71 74
        return this.manager;
72 75
    }
......
80 83
        for (JTaskStatus taskStatus : controlsToAdd) {
81 84
            listPanel.add(taskStatus);
82 85
        }
83

  
86
        listPanel.setAlignmentY(Component.BOTTOM_ALIGNMENT);
84 87
        JScrollPane scroller = new JScrollPane(listPanel);
88
        scroller.setAlignmentY(Component.BOTTOM_ALIGNMENT);
85 89
        scroller.setPreferredSize(new Dimension(300, 150));
86 90
        this.add(scroller, BorderLayout.CENTER);
87 91
    }
88 92

  
89 93
    private List<JTaskStatus> getControlsToAdd() {
90
        List<JTaskStatus> controlsToAdd = new ArrayList<JTaskStatus>();
94
        List<JTaskStatus> controlsToAdd = new ArrayList<>();
91 95
        TaskStatusSwingManager manager =
92 96
            ToolsSwingLocator.getTaskStatusSwingManager();
93 97

  
......
108 112
        return controlsToAdd;
109 113
    }
110 114

  
115
    @Override
111 116
    public void update(Observable observable, Object notification) {
112 117
        if (!(observable instanceof TaskStatusManager)) {
113 118
            return;
114 119
        }
115
        if (notification == null) {
120
        if (notification == null || this.manager.isEmpty() ) {
116 121
            // remove task
117
            Iterator<Entry<String, JTaskStatus>> taskStatusIterator =
118
                this.taskControls.entrySet().iterator();
119
            while (taskStatusIterator.hasNext()) {
120
                Entry<String, JTaskStatus> entry = taskStatusIterator.next();
121
                if (this.manager.get(entry.getKey()) == null) {
122
                    listPanel.remove(entry.getValue());
123
                }
124
            }
125
            listPanel.validate();
126
            return;
122
            listPanel.removeAll();
123
            this.taskControls.clear();
124
            listPanel.revalidate();
127 125
        }
128 126
        List<JTaskStatus> controlsToAdd = this.getControlsToAdd();
129
        for (JTaskStatus taskStatus : controlsToAdd) {
130
            listPanel.add(taskStatus);
127
        if( !controlsToAdd.isEmpty() ) {
128
            listPanel.removeAll();
129
            for (JTaskStatus taskStatus : this.taskControls.values()) {
130
                taskStatus.setAlignmentY(Component.BOTTOM_ALIGNMENT);
131
                listPanel.add(taskStatus);
132
            }
133
            listPanel.revalidate();
131 134
        }
132

  
133 135
    }
134 136
}

Also available in: Unified diff