KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > google > gwt > user > client > ui > FocusPanel


1 /*
2  * Copyright 2007 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */

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 /**
23  * A simple panel that makes its contents focusable, and adds the ability to
24  * catch mouse and keyboard events.
25  */

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