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 / DefaultFilteredListController.java @ 2285

History | View | Annotate | Download (4.58 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.tools.swing.impl;
7

    
8
import java.awt.event.ActionEvent;
9
import java.awt.event.KeyAdapter;
10
import java.awt.event.KeyEvent;
11
import javax.swing.ImageIcon;
12
import javax.swing.JButton;
13
import javax.swing.JList;
14
import javax.swing.ListModel;
15
import javax.swing.event.ChangeListener;
16
import javax.swing.text.JTextComponent;
17
import org.gvsig.tools.swing.api.ChangeListenerHelper;
18
import org.gvsig.tools.swing.api.FilteredListController;
19
import org.gvsig.tools.swing.api.FilteredListModel;
20
import org.gvsig.tools.swing.api.ToolsSwingLocator;
21
import org.gvsig.tools.swing.api.ToolsSwingManager;
22
import org.gvsig.tools.swing.icontheme.IconTheme;
23
import org.gvsig.tools.swing.icontheme.IconThemeManager;
24

    
25
/**
26
 *
27
 * @author jjdelcerro
28
 */
29
public class DefaultFilteredListController implements FilteredListController {
30

    
31
    private final JList list;
32
    private final JTextComponent text;
33
    private final JButton button;
34
    private final ChangeListenerHelper changeListenerHelper;
35
    private FilteredListModel model;
36

    
37
    public DefaultFilteredListController(JList list, JTextComponent text, JButton button) {
38
        this.list = list;
39
        this.text = text;
40
        this.button = button;
41
        this.changeListenerHelper = new DefaultChangeListenerHelper();
42
        this.model = null;
43
        this.initComponents();
44
    }
45

    
46
    private void initComponents() {
47
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
48
        toolsSwingManager.addClearButton(this.text, (ActionEvent e) -> {
49
            text.setText("");
50
            this.getModel().setFilter(null);
51
            changeListenerHelper.fireEvent();
52
        });
53
        toolsSwingManager.setDefaultPopupMenu(this.text);
54
        this.text.addKeyListener(new KeyAdapter() {
55
            @Override
56
            public void keyTyped(KeyEvent e) {
57
                if (e.getKeyChar() == '\n') {
58
                    getModel().setFilter(text.getText());
59
                    changeListenerHelper.fireEvent();
60
                }
61
            }
62
        });
63
        this.button.setIcon(this.getIcon("common-filter"));
64
        if (this.button.getText().equals("...")) {
65
            this.button.setText("");
66
        }
67

    
68
        this.button.addActionListener((ActionEvent e) -> {
69
            this.getModel().setFilter(text.getText());
70
            changeListenerHelper.fireEvent();
71
        });
72
    }
73

    
74
    protected ImageIcon getIcon(String name) {
75
        IconThemeManager iconThemeManager = ToolsSwingLocator.getIconThemeManager();
76
        IconTheme theme = iconThemeManager.getCurrent();
77
        ImageIcon icon = theme.get(name);
78
        return icon;
79
    }
80

    
81
//    @Override
82
//    public FilteredListModel createModel() {
83
//        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
84
//        FilteredListModel theModel = toolsSwingManager.createFilteredListModel();
85
//        return theModel;
86
//    }
87

    
88
    @Override
89
    public FilteredListModel getModel() {
90
        ListModel model0 = this.list.getModel();
91
        if( model == null ) {
92
            if( model0 instanceof FilteredListModel ) {
93
                model = (FilteredListModel) model0;
94
                model.setFilter(text.getText());
95
                return model;
96
            }
97
            model = new FilteredListModelImpl(model0);
98
            model.setFilter(text.getText());
99
            list.setModel(model);
100
            return model;
101
        }
102

    
103
        if( model == model0 ) {
104
            return model;
105
        }
106
        if( model0 instanceof FilteredListModel ) {
107
            model = (FilteredListModel) model0;
108
            model.setFilter(text.getText());
109
            return model;
110
        }
111
        model = new FilteredListModelImpl(model0);
112
        model.setFilter(text.getText());
113
        list.setModel(model);
114
        return model;
115
    }
116

    
117
    @Override
118
    public void addChangeListener(ChangeListener listener) {
119
        this.changeListenerHelper.addChangeListener(listener);
120
    }
121

    
122
    @Override
123
    public ChangeListener[] getChangeListeners() {
124
        return this.changeListenerHelper.getChangeListeners();
125
    }
126

    
127
    @Override
128

    
129
    public void removeChangeListener(ChangeListener listener) {
130
        this.changeListenerHelper.removeChangeListener(listener);
131
    }
132

    
133
    @Override
134

    
135
    public void removeAllChangeListener() {
136
        this.changeListenerHelper.removeAllChangeListener();
137
    }
138

    
139
    @Override
140

    
141
    public boolean hasChangeListeners() {
142
        return this.changeListenerHelper.hasChangeListeners();
143
    }
144

    
145
}