173 lines · 5.5 KB · Java
RawDownload
/* * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */package javax.swing.text.html; import javax.swing.text.*;import java.awt.*; /** * This is the view associated with the html tag NOFRAMES. * This view has been written to ignore the contents of the * NOFRAMES tag.  The contents of the tag will only be visible * when the JTextComponent the view is contained in is editable. * * @author  Sunita Mani */class NoFramesView extends BlockView {     /**     * Creates a new view that represents an     * html box.  This can be used for a number     * of elements.  By default this view is not     * visible.     *     * @param elem the element to create a view for     * @param axis either View.X_AXIS or View.Y_AXIS     */    public NoFramesView(Element elem, int axis) {        super(elem, axis);        visible = false;    }      /**     * If this view is not visible, then it returns.     * Otherwise it invokes the superclass.     *     * @param g the rendering surface to use     * @param allocation the allocated region to render into     * @see #isVisible     * @see text.ParagraphView#paint     */    public void paint(Graphics g, Shape allocation) {        Container host = getContainer();        if (host != null &&            visible != ((JTextComponent)host).isEditable()) {            visible = ((JTextComponent)host).isEditable();        }         if (!isVisible()) {            return;        }        super.paint(g, allocation);    }      /**     * Determines if the JTextComponent that the view     * is contained in is editable. If so, then this     * view and all its child views are visible.     * Once this has been determined, the superclass     * is invoked to continue processing.     *     * @param p the parent View.     * @see BlockView#setParent     */    public void setParent(View p) {        if (p != null) {            Container host = p.getContainer();            if (host != null) {                visible = ((JTextComponent)host).isEditable();            }        }        super.setParent(p);    }     /**     * Returns a true/false value that represents     * whether the view is visible or not.     */    public boolean isVisible() {        return visible;    }      /**     * Do nothing if the view is not visible, otherwise     * invoke the superclass to perform layout.     */    protected void layout(int width, int height) {        if (!isVisible()) {            return;        }        super.layout(width, height);    }     /**     * Determines the preferred span for this view.  Returns     * 0 if the view is not visible, otherwise it calls the     * superclass method to get the preferred span.     * axis.     *     * @param axis may be either View.X_AXIS or View.Y_AXIS     * @return   the span the view would like to be rendered into;     *           typically the view is told to render into the span     *           that is returned, although there is no guarantee;     *           the parent may choose to resize or break the view     * @see text.ParagraphView#getPreferredSpan     */    public float getPreferredSpan(int axis) {        if (!visible) {            return 0;        }        return super.getPreferredSpan(axis);    }     /**     * Determines the minimum span for this view along an     * axis.  Returns 0 if the view is not visible, otherwise     * it calls the superclass method to get the minimum span.     *     * @param axis may be either <code>View.X_AXIS</code> or     *          <code>View.Y_AXIS</code>     * @return  the minimum span the view can be rendered into     * @see text.ParagraphView#getMinimumSpan     */    public float getMinimumSpan(int axis) {        if (!visible) {            return 0;        }        return super.getMinimumSpan(axis);    }     /**     * Determines the maximum span for this view along an     * axis.  Returns 0 if the view is not visible, otherwise     * it calls the superclass method ot get the maximum span.     *     * @param axis may be either <code>View.X_AXIS</code> or     *  <code>View.Y_AXIS</code>     * @return  the maximum span the view can be rendered into     * @see text.ParagraphView#getMaximumSpan     */    public float getMaximumSpan(int axis) {        if (!visible) {            return 0;        }        return super.getMaximumSpan(axis);    }     boolean visible;}