com.google.gwt.user.client.ui.impl.RichTextAreaImplSafari Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vaadin-client Show documentation
Show all versions of vaadin-client Show documentation
Vaadin is a web application framework for Rich Internet Applications (RIA).
Vaadin enables easy development and maintenance of fast and
secure rich web
applications with a stunning look and feel and a wide browser support.
It features a server-side architecture with the majority of the logic
running
on the server. Ajax technology is used at the browser-side to ensure a
rich
and interactive user experience.
/*
* Copyright 2007 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.user.client.ui.impl;
/**
* Safari rich text platform implementation.
*/
public class RichTextAreaImplSafari extends RichTextAreaImplStandard {
@Override
public void setBackColor(String color) {
// Webkit uses 'BackColor' for the *entire area's* background. 'HiliteColor'
// does what we actually want.
execCommand("HiliteColor", color);
}
@Override
protected native String getTextImpl() /*-{
return [email protected]::elem.contentWindow.document.body.innerText;
}-*/;
@Override
protected native void hookEvents() /*-{
var elem = [email protected]::elem;
var wnd = elem.contentWindow;
elem.__gwt_handler = function(evt) {
@com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
};
wnd.addEventListener('keydown', elem.__gwt_handler, true);
wnd.addEventListener('keyup', elem.__gwt_handler, true);
wnd.addEventListener('keypress', elem.__gwt_handler, true);
wnd.addEventListener('mousedown', elem.__gwt_handler, true);
wnd.addEventListener('mouseup', elem.__gwt_handler, true);
wnd.addEventListener('mousemove', elem.__gwt_handler, true);
wnd.addEventListener('mouseover', elem.__gwt_handler, true);
wnd.addEventListener('mouseout', elem.__gwt_handler, true);
wnd.addEventListener('click', elem.__gwt_handler, true);
// Focus/blur event handlers. For some reason, [add|remove]eventListener()
// doesn't work on the iframe element (at least not for focus/blur). Don't
// dispatch through the normal handler method, as some of the querying we do
// there interferes with focus.
wnd.onfocus = function(evt) {
@com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
};
wnd.onblur = function(evt) {
@com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
};
}-*/;
@Override
protected native void setTextImpl(String text) /*-{
[email protected]::elem.contentWindow.document.body.innerText = text;
}-*/;
@Override
protected native void unhookEvents() /*-{
var elem = [email protected]::elem;
var wnd = elem.contentWindow;
wnd.removeEventListener('keydown', elem.__gwt_handler, true);
wnd.removeEventListener('keyup', elem.__gwt_handler, true);
wnd.removeEventListener('keypress', elem.__gwt_handler, true);
wnd.removeEventListener('mousedown', elem.__gwt_handler, true);
wnd.removeEventListener('mouseup', elem.__gwt_handler, true);
wnd.removeEventListener('mousemove', elem.__gwt_handler, true);
wnd.removeEventListener('mouseover', elem.__gwt_handler, true);
wnd.removeEventListener('mouseout', elem.__gwt_handler, true);
wnd.removeEventListener('click', elem.__gwt_handler, true);
elem.__gwt_handler = null;
elem.onfocus = null;
elem.onblur = null;
}-*/;
}