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 @ 2182

History | View | Annotate | Download (3.12 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.JButton;
12
import javax.swing.JList;
13
import javax.swing.event.ChangeEvent;
14
import javax.swing.event.ChangeListener;
15
import javax.swing.text.JTextComponent;
16
import org.gvsig.tools.swing.api.ChangeListenerHelper;
17
import org.gvsig.tools.swing.api.FilteredListController;
18
import org.gvsig.tools.swing.api.FilteredListModel;
19
import org.gvsig.tools.swing.api.ToolsSwingLocator;
20
import org.gvsig.tools.swing.api.ToolsSwingManager;
21

    
22
/**
23
 *
24
 * @author jjdelcerro
25
 */
26
public class DefaultFilteredListController implements FilteredListController {
27

    
28
  private final JList list;
29
  private final JTextComponent text;
30
  private final JButton button;
31
  private ChangeListenerHelper changeListenerHelper;
32

    
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
  }
40

    
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();
57
        }
58
      }
59
    });
60
    this.button.addActionListener((ActionEvent e) -> {
61
      this.getModel().setFilter(text.getText());
62
      changeListenerHelper.fireEvent();
63
    });
64
  }
65

    
66
  @Override
67
  public FilteredListModel createModel() {
68
    ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
69
    FilteredListModel model = toolsSwingManager.createFilteredListModel();
70
    return model;
71
  }
72

    
73
  @Override
74
  public FilteredListModel getModel() {
75
    return (FilteredListModel) this.list.getModel();
76
  }
77

    
78
    @Override
79
    public void addChangeListener(ChangeListener listener) {
80
        this.changeListenerHelper.addChangeListener(listener);
81
    }
82

    
83
    @Override
84
    public ChangeListener[] getChangeListeners() {
85
        return this.changeListenerHelper.getChangeListeners();
86
    }
87

    
88
    @Override
89

    
90
    public void removeChangeListener(ChangeListener listener) {
91
        this.changeListenerHelper.removeChangeListener(listener);
92
    }
93

    
94
    @Override
95

    
96
    public void removeAllChangeListener() {
97
        this.changeListenerHelper.removeAllChangeListener();
98
    }
99

    
100
    @Override
101

    
102
    public boolean hasChangeListeners() {
103
        return this.changeListenerHelper.hasChangeListeners();
104
    }
105

    
106
}