com.google.gwt.user.client.ui.NamedFrame Maven / Gradle / Ivy
/*
* Copyright 2008 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;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.IFrameElement;
import com.google.gwt.uibinder.client.UiConstructor;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
/**
* A {@link com.google.gwt.user.client.ui.Frame} that has a 'name' associated
* with it. This allows the frame to be the target of a
* {@link com.google.gwt.user.client.ui.FormPanel}
*
* CSS Style Rules
*
* - .gwt-Frame { }
*
*/
public class NamedFrame extends Frame {
// Used inside JSNI, so please don't delete this field just because
// your compiler or IDE says it's unused.
private static JavaScriptObject PATTERN_NAME;
static {
if (GWT.isClient()) {
initStatics();
}
}
/**
* Creates an HTML IFRAME element with a src and name.
*
* @param src the src of the frame
* @param name the name of the frame, which must contain at least one
* non-whitespace character and must not contain reserved HTML markup
* characters such as '<
', '>
',
* or '&
'
* @return the newly-created element
* @throws IllegalArgumentException if the supplied name is not allowed
*/
private static IFrameElement createIFrame(String src, String name) {
// TODO(pdr): add SafeHtml support here to prevent XSS
if (name == null || !isValidName(name.trim())) {
throw new IllegalArgumentException(
"expecting one or more non-whitespace chars with no '<', '>', or '&'");
}
// Use innerHTML to implicitly create the