001 /*
002 * Copyright 2006 Google Inc.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package com.google.gwt.user.client.ui.impl;
017
018 import com.google.gwt.user.client.Element;
019
020 /**
021 * Crazy implementation of {@link com.google.gwt.user.client.ui.impl.FocusImpl}
022 * that uses a hidden anchor to serve as a 'proxy' for focus.
023 */
024 public class FocusImplSafari extends FocusImpl {
025
026 public native void blur(Element elem) /*-{
027 elem.__anchor.blur();
028 }-*/;
029
030 public native Element createFocusable() /*-{
031 var div = document.createElement('div');
032 var input = document.createElement('input');
033 input.type = 'text';
034 input.style.zIndex = -1;
035 input.style.position = 'absolute';
036
037 div.addEventListener(
038 'click',
039 function() { input.focus(); },
040 false);
041
042 div.appendChild(input);
043 div.__anchor = input;
044 return div;
045 }-*/;
046
047 public native void focus(Element elem) /*-{
048 elem.__anchor.focus();
049 }-*/;
050
051 public native int getTabIndex(Element elem) /*-{
052 return elem.__anchor.tabIndex;
053 }-*/;
054
055 public native void setAccessKey(Element elem, char key) /*-{
056 elem.__anchor.accessKey = key;
057 }-*/;
058
059 public native void setTabIndex(Element elem, int index) /*-{
060 elem.__anchor.tabIndex = index;
061 }-*/;
062 }