Revision 44259 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/FilteredListModel.java

View differences:

FilteredListModel.java
8 8
import java.util.ArrayList;
9 9
import java.util.Comparator;
10 10
import java.util.List;
11
import java.util.Objects;
11 12
import javax.swing.AbstractListModel;
12 13
import javax.swing.SwingUtilities;
13 14
import org.apache.commons.io.FilenameUtils;
15
import org.apache.commons.lang3.ObjectUtils;
14 16
import org.apache.commons.lang3.StringUtils;
15
import org.gvsig.expressionevaluator.swing.Element.ConstantElement;
16
import org.gvsig.tools.swing.api.ListElement;
17
import org.gvsig.tools.util.LabeledValue;
18
import org.gvsig.tools.util.LabeledValueImpl;
17 19

  
18 20
/**
19 21
 *
......
21 23
 */
22 24
class FilteredListModel extends AbstractListModel {
23 25

  
24
    private List<ListElement> elements;
25
    private List<ListElement> filteredElements;
26
    private List<LabeledValue> elements;
27
    private List<LabeledValue> filteredElements;
26 28
    private String filter;
27 29

  
28 30
    public FilteredListModel() {
......
37 39
    }
38 40

  
39 41
    @Override
40
    public Object getElementAt(int index) {
42
    public LabeledValue getElementAt(int index) {
41 43
        return this.filteredElements.get(index);
42 44
    }
43 45

  
44
    void addElement(ListElement element) {
46
    void addElement(LabeledValue element) {
45 47
        this.elements.add(element);
46 48
        if (this.elements != this.filteredElements) {
47 49
            this.filteredElements.add(element);
48 50
        }
49 51
    }
50 52

  
53
    void addElement(Object element) {
54
        this.addElement(new LabeledValueImpl<>(Objects.toString(element, ""), element));
55
    }
56

  
51 57
    public void setFilter(String filter) {
52 58
        if (StringUtils.isEmpty(filter)) {
53 59
            this.filter = null;
......
55 61
        } else {
56 62
            this.filter = filter;
57 63
            this.filteredElements = new ArrayList<>();
58
            for (ListElement element : elements) {
64
            for (LabeledValue element : elements) {
59 65
                if (FilenameUtils.wildcardMatch(element.getValue().toString().toLowerCase(), this.filter.toLowerCase())) {
60 66
                    this.filteredElements.add(element);
61 67
                }
......
97 103
    }
98 104

  
99 105
    private void sortForeground(final boolean ascending) {
100
        final List<ListElement> items = new ArrayList<>(elements);
101
        final Comparator comparator = Utils.naturalComparator();
102
        items.sort(new Comparator<ListElement>() {
106
        final List items = new ArrayList<>(elements);
107
        items.sort(new Comparator<Comparable>() {
103 108
            @Override
104
            public int compare(ListElement o1, ListElement o2) {
105
                int r;
106
                if (o1 == null && o2 == null) {
107
                    r = 0;
108
                } else if (o1 == null && o2 != null) {
109
                    r = -1;
110
                } else if (o1 != null && o2 == null) {
111
                    r = 1;
112
                } else {
113
                    if( o1.getValue() instanceof ConstantElement &&
114
                        o2.getValue() instanceof ConstantElement ) {
115
                        r = comparator.compare(
116
                            ((ConstantElement)o1.getValue()).getValue(),
117
                            ((ConstantElement)o2.getValue()).getValue()
118
                        );
119
                    } else {
120
                        r = comparator.compare(o1.getValue(),o2.getValue());
121
                    }
122
                }
109
            public int compare(Comparable o1, Comparable o2) {
110
                int r = ObjectUtils.compare(o1, o2);
123 111
                if (ascending) {
124 112
                    return r;
125 113
                }
......
135 123
        }
136 124
    }
137 125

  
138
    void addElement(Object data) {
139
        ListElement e = new ListElement(data.toString(), data);
140
        this.addElement(e);
141
    }
142 126
}

Also available in: Unified diff