View Javadoc
1   package org.vaadin.tokenfield.client.ui;
2   
3   import java.util.LinkedList;
4   import java.util.List;
5   
6   import com.google.gwt.event.dom.client.KeyCodes;
7   import com.google.gwt.event.dom.client.KeyDownEvent;
8   import com.google.gwt.user.client.ui.TextBox;
9   import com.vaadin.v7.client.ui.VFilterSelect;
10  
11  public class VTokenField extends VFilterSelect {
12  
13      protected boolean after = false;
14  
15      protected List<DeleteListener> listeners = new LinkedList<DeleteListener>();
16  
17      public void onKeyDown(KeyDownEvent event) {
18          if (!enabled || readonly) {
19              return;
20          }
21          int kc = event.getNativeKeyCode();
22          if (kc == KeyCodes.KEY_BACKSPACE || kc == KeyCodes.KEY_DELETE) {
23              if (event.getSource() instanceof TextBox
24                      && "".equals(((TextBox) event.getSource()).getText())) {
25                  if ((kc == KeyCodes.KEY_BACKSPACE && !after)
26                          || (kc == KeyCodes.KEY_DELETE && after)) {
27                      fireDeleteListeners();
28                      return;
29                  }
30              }
31          }
32  
33          super.onKeyDown(event);
34  
35      }
36  
37      private void fireDeleteListeners() {
38          for (DeleteListener l : listeners) {
39              l.onDelete();
40          }
41      }
42  
43      public void addListener(DeleteListener l) {
44          listeners.add(l);
45      }
46  
47      public void removeListener(DeleteListener l) {
48          listeners.remove(l);
49      }
50  
51      public interface DeleteListener {
52          public void onDelete();
53      }
54  
55  }