1 16 package com.google.gwt.user.client.ui; 17 18 import com.google.gwt.user.client.DOM; 19 import com.google.gwt.user.client.Event; 20 import com.google.gwt.user.client.ui.impl.FocusImpl; 21 22 26 public class FocusPanel extends SimplePanel implements HasFocus, 27 SourcesClickEvents, SourcesMouseEvents, SourcesMouseWheelEvents { 28 29 static final FocusImpl impl = FocusImpl.getFocusImplForPanel(); 30 31 private ClickListenerCollection clickListeners; 32 private FocusListenerCollection focusListeners; 33 private KeyboardListenerCollection keyboardListeners; 34 private MouseListenerCollection mouseListeners; 35 private MouseWheelListenerCollection mouseWheelListeners; 36 37 public FocusPanel() { 38 super(impl.createFocusable()); 39 sinkEvents(Event.FOCUSEVENTS | Event.KEYEVENTS | Event.ONCLICK 40 | Event.MOUSEEVENTS | Event.ONMOUSEWHEEL); 41 } 42 43 public FocusPanel(Widget child) { 44 this(); 45 setWidget(child); 46 } 47 48 public void addClickListener(ClickListener listener) { 49 if (clickListeners == null) { 50 clickListeners = new ClickListenerCollection(); 51 } 52 clickListeners.add(listener); 53 } 54 55 public void addFocusListener(FocusListener listener) { 56 if (focusListeners == null) { 57 focusListeners = new FocusListenerCollection(); 58 } 59 focusListeners.add(listener); 60 } 61 62 public void addKeyboardListener(KeyboardListener listener) { 63 if (keyboardListeners == null) { 64 keyboardListeners = new KeyboardListenerCollection(); 65 } 66 keyboardListeners.add(listener); 67 } 68 69 public void addMouseListener(MouseListener listener) { 70 if (mouseListeners == null) { 71 mouseListeners = new MouseListenerCollection(); 72 } 73 mouseListeners.add(listener); 74 } 75 76 public void addMouseWheelListener(MouseWheelListener listener) { 77 if (mouseWheelListeners == null) { 78 mouseWheelListeners = new MouseWheelListenerCollection(); 79 } 80 mouseWheelListeners.add(listener); 81 } 82 83 public int getTabIndex() { 84 return impl.getTabIndex(getElement()); 85 } 86 87 public void onBrowserEvent(Event event) { 88 switch (DOM.eventGetType(event)) { 89 case Event.ONCLICK: 90 if (clickListeners != null) { 91 clickListeners.fireClick(this); 92 } 93 break; 94 95 case Event.ONMOUSEDOWN: 96 case Event.ONMOUSEUP: 97 case Event.ONMOUSEMOVE: 98 case Event.ONMOUSEOVER: 99 case Event.ONMOUSEOUT: 100 if (mouseListeners != null) { 101 mouseListeners.fireMouseEvent(this, event); 102 } 103 break; 104 105 case Event.ONMOUSEWHEEL: 106 if (mouseWheelListeners != null) { 107 mouseWheelListeners.fireMouseWheelEvent(this, event); 108 } 109 break; 110 111 case Event.ONBLUR: 112 case Event.ONFOCUS: 113 if (focusListeners != null) { 114 focusListeners.fireFocusEvent(this, event); 115 } 116 break; 117 118 case Event.ONKEYDOWN: 119 case Event.ONKEYUP: 120 case Event.ONKEYPRESS: 121 if (keyboardListeners != null) { 122 keyboardListeners.fireKeyboardEvent(this, event); 123 } 124 break; 125 } 126 } 127 128 public void removeClickListener(ClickListener listener) { 129 if (clickListeners != null) { 130 clickListeners.remove(listener); 131 } 132 } 133 134 public void removeFocusListener(FocusListener listener) { 135 if (focusListeners != null) { 136 focusListeners.remove(listener); 137 } 138 } 139 140 public void removeKeyboardListener(KeyboardListener listener) { 141 if (keyboardListeners != null) { 142 keyboardListeners.remove(listener); 143 } 144 } 145 146 public void removeMouseListener(MouseListener listener) { 147 if (mouseListeners != null) { 148 mouseListeners.remove(listener); 149 } 150 } 151 152 public void removeMouseWheelListener(MouseWheelListener listener) { 153 if (mouseWheelListeners != null) { 154 mouseWheelListeners.remove(listener); 155 } 156 } 157 158 public void setAccessKey(char key) { 159 impl.setAccessKey(getElement(), key); 160 } 161 162 public void setFocus(boolean focused) { 163 if (focused) { 164 impl.focus(getElement()); 165 } else { 166 impl.blur(getElement()); 167 } 168 } 169 170 public void setTabIndex(int index) { 171 impl.setTabIndex(getElement(), index); 172 } 173 } 174 | Popular Tags |