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

View differences:

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

  
22 25
/**
23 26
 *
......
25 28
 */
26 29
public class DefaultFilteredListController implements FilteredListController {
27 30

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

  
33
  public DefaultFilteredListController(JList list, JTextComponent text, JButton button) {
34
    this.list = list;
35
    this.text = text;
36
    this.button = button;
37
    this.changeListenerHelper = new DefaultChangeListenerHelper();
38
    this.initComponents();
39
  }
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
    }
40 45

  
41
  private void initComponents() {
42
    ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
43
    FilteredListModel model = toolsSwingManager.createFilteredListModel();
44
    this.list.setModel(model);
45
    toolsSwingManager.addClearButton(this.text, (ActionEvent e) -> {
46
      text.setText("");
47
      this.getModel().setFilter(null);
48
      changeListenerHelper.fireEvent();
49
    });
50
    toolsSwingManager.setDefaultPopupMenu(this.text);
51
    this.text.addKeyListener(new KeyAdapter() {
52
      @Override
53
      public void keyTyped(KeyEvent e) {
54
        if (e.getKeyChar() == '\n') {
55
          getModel().setFilter(text.getText());
56
          changeListenerHelper.fireEvent();
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("");
57 66
        }
58
      }
59
    });
60
    this.button.addActionListener((ActionEvent e) -> {
61
      this.getModel().setFilter(text.getText());
62
      changeListenerHelper.fireEvent();
63
    });
64
  }
65 67

  
66
  @Override
67
  public FilteredListModel createModel() {
68
    ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
69
    FilteredListModel model = toolsSwingManager.createFilteredListModel();
70
    return model;
71
  }
68
        this.button.addActionListener((ActionEvent e) -> {
69
            this.getModel().setFilter(text.getText());
70
            changeListenerHelper.fireEvent();
71
        });
72
    }
72 73

  
73
  @Override
74
  public FilteredListModel getModel() {
75
    return (FilteredListModel) this.list.getModel();
76
  }
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
    }
77 80

  
78 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
79 118
    public void addChangeListener(ChangeListener listener) {
80 119
        this.changeListenerHelper.addChangeListener(listener);
81 120
    }

Also available in: Unified diff