Revision 627 org.gvsig.proj/trunk/org.gvsig.proj/org.gvsig.proj.swing/org.gvsig.proj.swing.impl/src/main/java/org/gvsig/proj/swing/impl/CodeListModel.java

View differences:

CodeListModel.java
27 27

  
28 28
import javax.swing.AbstractListModel;
29 29
import javax.swing.ComboBoxModel;
30
import javax.swing.ListModel;
31 30
import javax.swing.event.ListDataEvent;
32 31
import javax.swing.event.ListDataListener;
33 32
import org.apache.commons.io.FilenameUtils;
......
41 40
 * 
42 41
 * @author gvSIG Team
43 42
 */
44
public class CodeListModel extends AbstractListModel implements
45
    ListModel, ListDataListener {
43
public class CodeListModel 
44
    extends AbstractListModel 
45
    {
46 46

  
47 47
    private static final long serialVersionUID = -5594433634336286602L;
48 48

  
......
50 50
    private List<String> filteredCodes;
51 51
    private String filterPattern=null;
52 52

  
53
    private String selectedCode;
54

  
53
//    private String selectedCode;
54
    private AuthorityComboBoxModel authorityModel;
55
    
55 56
    private final CoordinateReferenceSystemManager manager;
56 57

  
57 58
    @SuppressWarnings("LeakingThisInConstructor")
58 59
    public CodeListModel(CoordinateReferenceSystemManager manager,
59
        AuthorityComboBoxModel authorityModel) {
60
        AuthorityComboBoxModel theAuthorityModel) {
60 61
        this.manager = manager;
61
        authorityModel.addListDataListener(this);
62
        this.authorityModel = theAuthorityModel;
63
        this.authorityModel.addListDataListener(new ListDataListener() {
64

  
65
            @Override
66
            public void intervalAdded(ListDataEvent e) {
67
            }
68

  
69
            @Override
70
            public void intervalRemoved(ListDataEvent e) {
71
            }
72

  
73
            @Override
74
            public void contentsChanged(ListDataEvent e) {
75
                String authority = authorityModel.getSelectedAuthority();  
76
                updateAuthority(authority);
77
            }
78
        });
62 79
    }
63 80

  
64 81
    @Override
......
68 85

  
69 86
    @Override
70 87
    public Object getElementAt(int index) {
71
        return filteredCodes == null ? null : filteredCodes.get(index);
88
        if( filteredCodes == null || index <0 || index>this.filteredCodes.size() ) {
89
            return null;
90
        }
91
        return filteredCodes.get(index);
72 92
    }
73 93

  
74
//    @Override
75
//    public void setSelectedItem(Object anItem) {
76
//        if ((selectedCode != null && !selectedCode.equals(anItem))
77
//            || selectedCode == null && anItem != null) {
78
//            selectedCode = anItem.toString();
79
//            fireContentsChanged(this, -1, -1);
80
//        }
81
//    }
82
//
83
//    @Override
84
//    public Object getSelectedItem() {
85
//        return getSelectedCode();
86
//    }
87
//
88
//    public String getSelectedCode() {
89
//        return selectedCode;
90
//    }
91
//
92
//    public void setSelectedCode(String selectedCode) {
93
//        setSelectedItem(selectedCode);
94
//    }
95

  
96
    @Override
97
    public void intervalAdded(ListDataEvent e) {
98
        // Nothing to do
94
    private void updateAuthority(String authority) {
95
        allCodes = manager.getCodes(authority);
96
        this.applyFilter(this.filterPattern);
99 97
    }
100

  
101
    @Override
102
    public void intervalRemoved(ListDataEvent e) {
103
        // Nothing to do
104
    }
105

  
106
    @SuppressWarnings("unchecked")
107
    @Override
108
    public void contentsChanged(ListDataEvent e) {
109
        // A new authority has been selected
110
        if (e.getSource() != null
111
            && e.getSource() instanceof AuthorityComboBoxModel) {
112
            AuthorityComboBoxModel authorityModel =
113
                (AuthorityComboBoxModel) e.getSource();
114

  
115
            String authority = authorityModel.getSelectedAuthority();
116
            selectedCode = null;
117
            allCodes = manager.getCodes(authority);
118
            this.applyFilter(this.filterPattern);
119
            fireContentsChanged(this, -1, -1);
120
        }
121
    }
122 98
    
123 99
    public void applyFilter(String pattern) {
124 100
        this.filterPattern = pattern;
......
128 104
            if( !this.filterPattern.contains("*") ) {
129 105
                this.filterPattern = this.filterPattern + "*";
130 106
            }
131
            this.filteredCodes = new ArrayList<>();
107
            List filteredCodes = new ArrayList<>();
132 108
            for (String code : allCodes) {
133 109
                if( FilenameUtils.wildcardMatch(code, this.filterPattern, IOCase.INSENSITIVE)) {
134
                    this.filteredCodes.add(code);
110
                    filteredCodes.add(code);
135 111
                }
136 112
            }
113
            fireIntervalRemoved(this, 0,this.filteredCodes.size());
114
            this.filteredCodes = filteredCodes;
137 115
        }
138
        fireContentsChanged(this, -1, -1);
116
        fireIntervalAdded(this, 0,this.filteredCodes.size());
139 117
    }
140 118

  
141 119
}

Also available in: Unified diff